AAYMA
RU
Войти

BAITC Task Platform

Платформа, где бизнес описывает потребность свободным текстом, AI задаёт 3–5 уточняющих вопросов и формирует Task Card с рейтингом готовности, а…

Рабочий MVP
Команда «Джарвис» 8💬 0 комментариевс 23 сентября 2026 г.

О проекте

Команда: Джарвис
Кейс HackAlem.ai: Образование — AI Sana
Стадия: Рабочий MVP

Задача кейса: Challenge Hub: превратить задачу бизнеса в задание для студенческих команд

Суть

Платформа, где бизнес описывает потребность свободным текстом, AI задаёт 3–5 уточняющих вопросов и формирует Task Card с рейтингом готовности, а команды откликаются предложениями, которые бизнес принимает вручную.

Как устроено

Backend на FastAPI с SQLite выполняет двухэтапную AI-обработку черновика (вопросы → структурированная карточка) через OpenAI-совместимый клиент (локальный LM Studio с Qwen3-VL-8B или stub-режим). Отдельный модуль детерминированно считает рейтинг готовности 0–100 по полям задачи. После явного подтверждения задача попадает в каталог, демо-команды отправляют предложения, бизнес их принимает или отклоняет; React-фронт с ролями «Бизнес»/«Фрилансер».

Ключевые решения

  • двухэтапная LLM-обработка
  • генерация уточняющих вопросов
  • валидация JSON-ответов
  • детерминированный рейтинг готовности

Особенности

Рейтинг готовности задачи считается кодом, а не LLM; поддержка полностью локальной модели через LM Studio. Первый коммит сделан утром 23.09 (07:29), до начала спринта.

Стек

Python · FastAPI · Pydantic · SQLAlchemy · SQLite · React · TypeScript · Vite

Модели

Qwen3-VL-8B (LM Studio)


Проект создан за 5 часов на финале хакатона HackAlem.ai (23 сентября 2026, Астана). Код — BAITC-Hacks/hack-9d786474-team.

README

README.md

BAITC Task Platform

Платформа помогает бизнесу сформулировать задачу для команды исполнителей, а командам — предложить решение. Бизнес описывает потребность свободным текстом, уточняет детали, проверяет карточку задачи и вручную выбирает предложение.

Что работает

  • AI-анализ черновика и 3–5 уточняющих вопросов (столько допускают текущий prompt и API-контракт).
  • Структурированная Task Card и детерминированный рейтинг готовности 0–100, который рассчитывает backend.
  • Явное подтверждение задачи бизнесом; в каталог попадает любая подтверждённая задача независимо от рейтинга и статуса.
  • Каталог, команды, предложения и ручное принятие или отклонение предложения.
  • Demo-профили бизнеса и фрилансера с редактированием через API.
  • Светлая и тёмная темы с сохранением выбора в браузере.

Путь пользователя: бизнес → черновик → вопросы AI → карточка → рейтинг → подтверждение → каталог → предложение команды → ручное решение бизнеса.

Технологии и устройство проекта

Backend — FastAPI, Pydantic, SQLAlchemy и SQLite по умолчанию. backend/app/ai_service.py выполняет два этапа AI-обработки; backend/app/task_rating.py отдельно считает рейтинг по полям Task. Frontend — React, TypeScript и Vite. Vite проксирует API-запросы на локальный backend.

Основные API: POST /tasks/draft, PATCH /tasks/{task_id}, GET /tasks/{task_id}/rating, GET /catalog, GET /teams, POST /proposals, GET /tasks/{task_id}/proposals, PATCH /proposals/{proposal_id}, GET /profiles/{profile_id}, POST /profiles, PATCH /profiles/{profile_id}. Документация FastAPI доступна на http://127.0.0.1:8000/docs после запуска.

Локальный запуск

Нужны Python и Node.js с npm. Команды ниже — для PowerShell; запускать из корня репозитория, кроме явно указанного cd.

Backend

cd backend
python -m venv .venv
& ".\.venv\Scripts\python.exe" -m pip install -r requirements.txt
$env:USE_AI_STUB = "true"
& ".\.venv\Scripts\python.exe" -m uvicorn app.main:app --host 127.0.0.1 --port 8000

Режим USE_AI_STUB=true не делает внешних AI-запросов и подходит для проверки интерфейса. Backend создаёт SQLite-файл backend/tasks.db и при старте добавляет отсутствующие demo-записи без сброса существующих данных.

Для проверки реального AI через локальный LM Studio вместо stub запустите локальный сервер LM Studio, загрузите модель и задайте переменные перед запуском backend:

$env:USE_AI_STUB = "false"
$env:OPENAI_BASE_URL = "http://127.0.0.1:1234/v1"
$env:OPENAI_API_KEY = "your-key-or-local-placeholder"
$env:OPENAI_MODEL = "qwen/qwen3-vl-8b"

OPENAI_MODEL должен совпадать с ID модели, который возвращает локальный /v1/models. Реальный ключ OpenAI для LM Studio не нужен. Для обычного OpenAI-compatible клиента можно не задавать OPENAI_BASE_URL (или оставить его пустым) и передать свой ключ и модель через переменные окружения. Не сохраняйте ключи в Git.

Frontend

В другом терминале из корня репозитория:

cd frontend
npm.cmd install
npm.cmd run dev

Откройте адрес, который покажет Vite (обычно http://127.0.0.1:5173). Для сборки: npm.cmd run build. Vite proxy ожидает backend на http://127.0.0.1:8000.

Тесты backend

cd backend
& ".\.venv\Scripts\python.exe" -m pytest tests -q

Повторяемый demo-сценарий

  1. Откройте приложение под demo-ролью «Бизнес». В разделе «Создать задачу» опишите потребность.
  2. Получите 3–5 вопросов, ответьте и проверьте сформированную карточку. Недостающие данные можно дополнить вручную; рейтинг и статус возвращает backend.
  3. Нажмите явное подтверждение. Задача появится в каталоге при любом рейтинге и статусе; неподтверждённые задачи не публикуются.
  4. Переключитесь на «Фрилансер», откройте задачу и отправьте предложение от выбранной demo-команды.
  5. Переключитесь на «Бизнес», откройте задачу и вручную примите или отклоните отклик. Затем проверьте статус в роли фрилансера.
  6. Измените demo-профиль и перезагрузите страницу: сохранённые значения должны остаться. Переключите тему и обновите страницу — выбор темы сохранится.

При включённом stub AI результат служит проверке механики, а не качества модели. Для реального Stage 1/2 используйте локальный LM Studio или иной совместимый endpoint.

Demo-данные и ограничения

Seed содержит 5 исходных черновиков и 5 подтверждённых Task Card с разными рейтингами, 5 команд с названием, интересами, навыками и технологиями, 5 demo-предложений, 23 demo-профиля бизнеса и 35 demo-профилей фрилансера. Черновики хранятся в original_draft соответствующих задач, не как второй Task contract. Все записи добавляются идемпотентно, существующая БД не очищается. Внешних бизнес-интеграций seed не подключает.

Полноценной регистрации, паролей, JWT и разграничения доступа нет: переключение demo-роли хранится в localStorage. Предложения выбирает человек; автоматического подбора команды нет. Task пока не содержит связи с BusinessProfile, поэтому компания и отрасль конкретной задачи не атрибутируются автоматически. Демо-профили не представляют реальных пользователей.

Развёрнутая версия: Не развёрнуто. MVP запускается локально.

Звёзды
⭐ 0
Форки
0
Язык
TypeScript
Последний push
в прошлом месяце
Коммиты
63
Авторы
2
Файлы
36
Ветки
2

Авторы коммитов

Yernar 45Azat Arappayev 18

История коммитов

  • 2026-09-23 17:45Finalize HackAlem AI MVPYernar
  • 2026-09-23 17:38Align MVP with HackAlem case requirementsYernar
  • 2026-09-23 17:24Polish frontend and fix profile persistenceYernar
  • 2026-09-23 17:15Add profiles and polished app shellYernar
  • 2026-09-23 17:03Build polished frontend and user profilesYernar
  • 2026-09-23 16:33Complete full-stack MVP flowYernar
  • 2026-09-23 16:27Add LM Studio response format compatibilityYernar
  • 2026-09-23 16:19Support configurable OpenAI-compatible AI endpointsYernar
Все коммиты (63)
  • 2026-09-23 15:17Fix whitespace normalization in catalog contextAzat Arappayev
  • 2026-09-23 15:16Add task catalog UI using canonical Task contractAzat Arappayev
  • 2026-09-23 15:16Document Python-side Task.confirmed default fixYernar
  • 2026-09-23 15:15Initialize Task confirmation before database flushYernar
  • 2026-09-23 15:15Set Python default for Task confirmationYernar
  • 2026-09-23 15:14Complete Task API type with persisted metadataAzat Arappayev
  • 2026-09-23 15:14Export canonical Task API type for catalog reuseAzat Arappayev
  • 2026-09-23 15:05Record final AI service implementation statusYernar
  • 2026-09-23 15:05Finalize AI stage validation and error handlingYernar
  • 2026-09-23 15:04Record verified AI validation and controlled-error fixesYernar
  • 2026-09-23 15:04Test provider exceptions map to AIServiceErrorYernar
  • 2026-09-23 15:04Cover validated AI stage contracts and confirmation semanticsYernar
  • 2026-09-23 15:03Implement strict stage 2 validation and controlled AI failuresYernar
  • 2026-09-23 15:00Add backend-driven task rating widgetAzat Arappayev
  • 2026-09-23 14:55Record current Codex 2 review findingsAzat Arappayev
  • 2026-09-23 14:54Align proposal type with repository contractAzat Arappayev
  • 2026-09-23 14:51Remove obsolete duplicate TaskCard typeAzat Arappayev
  • 2026-09-23 14:51Record persisted confirmation semantics for Codex 1Yernar
  • 2026-09-23 14:51Persist confirmed only from explicit PATCHYernar
  • 2026-09-23 14:51Expose Task confirmation stateYernar
  • 2026-09-23 14:50Persist explicit Task confirmation stateYernar
  • 2026-09-23 14:50Record Codex 1 validation and AI error handling changesYernar
  • 2026-09-23 14:50Add task AI schema and rating testsYernar
  • 2026-09-23 14:49Add backend test dependenciesYernar
  • 2026-09-23 14:49Return controlled 502 for task AI failuresYernar
  • 2026-09-23 14:49Remove duplicate frontend rating helperAzat Arappayev
  • 2026-09-23 14:49Handle external AI failures and validate stage outputsYernar
  • 2026-09-23 14:49Document Codex ownership and review notesAzat Arappayev
  • 2026-09-23 14:48Validate Task input and AI field contractsYernar
  • 2026-09-23 14:46Create instruction.txtYernar
  • 2026-09-23 14:38Send complete official Task answer fields from TaskBuilderYernar
  • 2026-09-23 14:38Remove deprecated duplicate AI draft flowYernar
  • 2026-09-23 14:38Remove deprecated duplicate AI routerYernar
  • 2026-09-23 14:37Use official tasks draft and patch flow in TaskBuilderYernar
  • 2026-09-23 14:36Clarify task user rating recommendationAzat Arappayev
  • 2026-09-23 14:36Add task completeness rating helperAzat Arappayev
  • 2026-09-23 14:34Add AI task builder UIAzat Arappayev
  • 2026-09-23 14:34Register AI draft processing routeAzat Arappayev
  • 2026-09-23 14:33Add AI draft processing endpointAzat Arappayev
  • 2026-09-23 14:30Use exact task AI prompts and validate stage 1 JSONYernar
  • 2026-09-23 14:29Add task platform backend foundation: backend/app/main.pyYernar
  • 2026-09-23 14:29Add task platform backend foundation: backend/app/routers/tasks.pyYernar
  • 2026-09-23 14:29Add task platform backend foundation: backend/app/ai_service.pyYernar
  • 2026-09-23 14:29Add task platform backend foundation: backend/app/schemas.pyYernar
  • 2026-09-23 14:28Add task platform backend foundation: backend/app/task_rating.pyYernar
  • 2026-09-23 14:28Add task platform backend foundation: backend/app/models.pyYernar
  • 2026-09-23 14:28Add task platform backend foundation: backend/app/database.pyYernar
  • 2026-09-23 14:28Add task platform backend foundation: backend/.env.exampleYernar
  • 2026-09-23 14:28Add task platform backend foundation: backend/requirements.txtYernar
  • 2026-09-23 14:28Add task platform backend foundation: .gitignoreYernar
  • 2026-09-23 14:26Add TypeScript domain interfacesAzat Arappayev
  • 2026-09-23 14:05Update agent details and project responsibilitiesAzat Arappayev
  • 2026-09-23 13:42Delete JobHunter directoryAzat Arappayev
  • 2026-09-23 07:31Move project files into JobHunter folderYernar
  • 2026-09-23 07:29Initial commitYernar
Структура репозитория (36 файлов)
.github/agents/my-agent.agent.md
.gitignore
README.md
backend/.env.example
backend/app/ai_service.py
backend/app/database.py
backend/app/main.py
backend/app/models.py
backend/app/routers/catalog.py
backend/app/routers/profiles.py
backend/app/routers/proposals.py
backend/app/routers/tasks.py
backend/app/routers/teams.py
backend/app/schemas.py
backend/app/seed.py
backend/app/task_rating.py
backend/requirements.txt
backend/tests/test_task_contracts.py
frontend/.gitignore
frontend/index.html
frontend/package-lock.json
frontend/package.json
frontend/src/App.tsx
frontend/src/components/RatingWidget.tsx
frontend/src/components/TaskBuilder.tsx
frontend/src/components/TaskCatalog.tsx
frontend/src/main.tsx
frontend/src/polish.css
frontend/src/styles.css
frontend/src/vite-env.d.ts
frontend/tsconfig.app.json
frontend/tsconfig.json
frontend/tsconfig.node.json
frontend/vite.config.ts
instruction.txt
types/index.ts
Ветки (2)

Обсуждение 0 комментариев

Войдите, чтобы комментировать

Пока нет комментариев — будьте первым.