AAYMA
RU
Войти

Problemly

Веб-сервис, где AI анализирует черновик бизнес-задачи и задаёт уточняющие вопросы, бизнес подтверждает поля и публикует карточку с рейтингом 0–100…

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

О проекте

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

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

Суть

Веб-сервис, где AI анализирует черновик бизнес-задачи и задаёт уточняющие вопросы, бизнес подтверждает поля и публикует карточку с рейтингом 0–100, а студенческие команды откликаются.

Как устроено

Черновик → AI-анализ через OpenRouter (qwen/qwen3-coder-next, structured output) с fallback-вопросами → редактируемая карточка с ручным подтверждением полей → детерминированный рейтинг 0–100 → каталог с фильтрами → отклики и ручные статусы pending/selected/rejected. Node.js API и SQLite, React/Vite за Nginx, Swagger на /api/docs.

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

  • structured output
  • детерминированный скоринг полей
  • fallback-вопросы
  • OpenAPI/Swagger

Особенности

Развёрнут на собственных доменах с отдельными health check; acceptance-тест проходит весь сценарий, включая сохранность SQLite после перезапуска.

Стек

React · Vite · Nginx · Node.js · SQLite · Docker Compose

Модели

Qwen3-Coder-Next (qwen/qwen3-coder-next через OpenRouter)


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

README

README.md

Problemly

Problemly помогает бизнесу превратить краткое описание потребности в понятную, проверяемую задачу для студенческих команд. Бизнес отвечает на уточняющие вопросы, вручную подтверждает поля и публикует карточку; команда выбирает задачу из каталога и отправляет отклик. Решение о выборе команды всегда остаётся за бизнесом.

Что реализовано

  • AI-анализ черновика через OpenRouter с fallback без внешнего ключа;
  • редактируемая карточка с явным подтверждением полей и детерминированным рейтингом 0–100;
  • каталог опубликованных задач, фильтры и прямые ссылки на карточки;
  • пять тематических demo-задач с рейтингами 30, 50, 80, 90 и 100, а также пять профилей команд;
  • отклики команд и ручные статусы pending, selected, rejected, включая выбор нескольких команд;
  • Swagger-документация API: /api/docs.

Технологии

  • React, Vite и Nginx — frontend;
  • Node.js 22, SQLite и Docker Compose — backend и развёртывание;
  • OpenRouter, OpenAI-совместимый Chat Completions API и модель qwen/qwen3-coder-next — AI-анализ. Если провайдер или ключ недоступны, приложение использует безопасные fallback-вопросы.

Архитектура

  • frontend/ — React/Vite, в production раздаётся Nginx;
  • backend/ — Node.js API и SQLite;
  • docker-compose.yaml — единый production-подобный запуск. Frontend доступен на хост-порту 5380, backend — на 3388.

Проверка сценария

Полный acceptance-сценарий backend покрывает: AI-анализ, сборку и ручное подтверждение карточки, публикацию без минимального порога рейтинга, два отклика, ручной выбор команды и сохранение SQLite после перезапуска. Также проверяются валидация, миграции и Docker health/smoke.

Подробная матрица соответствия требованиям и точные команды проверок находятся в backend/docs/requirements.md.

Запуск на сервере

Требуются Docker Engine и Docker Compose v2. Клонируйте или обновите репозиторий, затем создайте локальные env-файлы — они не попадают в Git:

cp frontend/.env.example frontend/.env
cp backend/.env.example backend/.env

В frontend/.env задайте production API. Корневой Compose передаст этот файл в Vite только на время сборки и не включит его в Docker-образ:

VITE_API_BASE_URL=https://haa-api.defaul7.net

В backend/.env минимум проверьте следующие значения:

PORT=3388
DATABASE_URL=file:/app/data/problemly.db
FRONTEND_ORIGIN=https://haa.defaul7.net
API_BASE_URL=https://haa-api.defaul7.net/api

Для AI-анализатора укажите LLM_API_KEY OpenRouter только при необходимости внешнего провайдера. Используемая модель — qwen/qwen3-coder-next. Без ключа backend использует fallback-вопросы.

Из корня проекта соберите и запустите оба сервиса:

docker compose up -d --build

Проверка статуса и логов:

docker compose ps
docker compose logs -f backend

Остановка:

docker compose down

Данные SQLite сохраняются в Docker volume backend-data. Чтобы удалить их вместе с контейнерами, используйте docker compose down -v.

Домены и reverse proxy

Направьте TLS reverse proxy на тот же сервер:

  • https://haa.defaul7.net → http://127.0.0.1:5380;
  • https://haa-api.defaul7.net → http://127.0.0.1:3388.

После проксирования frontend должен открываться по https://haa.defaul7.net, а health check API — по https://haa-api.defaul7.net/api/health.

Развёрнутая версия

Problemly развёрнут на сервере в Германии. Production-домены: haa.defaul7.net для интерфейса и haa-api.defaul7.net/api/health для проверки API.

Локальная разработка

Смотрите frontend README и backend README. Для совместного запуска используйте те же команды Compose выше.

Ограничения MVP

  • нет регистрации, чата, уведомлений и автоматического назначения команд;
  • AI-поля не считаются подтверждёнными без действия пользователя;
  • ключ OpenRouter хранится только в локальном backend/.env;
  • внешний AI-провайдер может быть недоступен, поэтому fallback-вопросы остаются частью MVP.
Звёзды
⭐ 0
Форки
0
Язык
JavaScript
Последний push
в прошлом месяце
Коммиты
33
Авторы
2
Файлы
60
Ветки
1

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

Sariyev (yasball) Yesbol 21Tamerlan 12

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

  • 2026-09-23 17:45docs: finalize api contract integrationSariyev (yasball) Yesbol
  • 2026-09-23 17:35docs: update problemly project overviewSariyev (yasball) Yesbol
  • 2026-09-23 17:31Merge branch 'main' of github.com:BAITC-Hacks/hack-900988fe-default-teamYesbol (defaul7) Sariyev
  • 2026-09-23 17:29feat: enhance scoring logic and recommendations for task fieldsTamerlan
  • 2026-09-23 17:10feat(frontend): add themes and team profilesSariyev (yasball) Yesbol
  • 2026-09-23 16:58feat: add demo teams and task drafts, enhance task schema and APITamerlan
  • 2026-09-23 16:48fix(frontend): match business connection scoringSariyev (yasball) Yesbol
  • 2026-09-23 16:42feat: Update scoring logic and validation for business connection fields; remove deprecated businessLinkTamerlan
Все коммиты (33)
  • 2026-09-23 16:37Merge branch 'main' of github.com:BAITC-Hacks/hack-900988fe-default-teamYesbol (defaul7) Sariyev
  • 2026-09-23 16:37chore: use backend dockerfile in composeSariyev (yasball) Yesbol
  • 2026-09-23 16:35chore: add unified problemly compose setupSariyev (yasball) Yesbol
  • 2026-09-23 16:24feat: Add request logging with safe metadata and update documentationTamerlan
  • 2026-09-23 16:19Merge branch 'main' of github.com:BAITC-Hacks/hack-900988fe-default-teamYesbol (defaul7) Sariyev
  • 2026-09-23 16:19chore(frontend): rename app for problemly domainsSariyev (yasball) Yesbol
  • 2026-09-23 16:18feat: Add Docker HEALTHCHECK and implement smoke testing for backend APITamerlan
  • 2026-09-23 16:14feat(frontend): align scoring and add URL routesSariyev (yasball) Yesbol
  • 2026-09-23 16:05feat: Implement conservative field validation and enhance AI output mappingTamerlan
  • 2026-09-23 15:58feat: Enhance AI analysis with structured output and improved question generationTamerlan
  • 2026-09-23 15:49feat(frontend): add compose deployment on 5380Sariyev (yasball) Yesbol
  • 2026-09-23 15:42chore(frontend): ignore local env fileSariyev (yasball) Yesbol
  • 2026-09-23 15:11Merge branch 'main' of github.com:BAITC-Hacks/hack-900988fe-default-teamYesbol (defaul7) Sariyev
  • 2026-09-23 15:09feat(frontend): add configurable API adapterSariyev (yasball) Yesbol
  • 2026-09-23 15:05feat: add API_BASE_URL support for Swagger and update documentation; include tests for OpenAPI configurationTamerlan
  • 2026-09-23 14:59feat: enhance AI analysis and validation; add integration tests and improve API error handlingTamerlan
  • 2026-09-23 14:50chore(frontend): add Docker image buildSariyev (yasball) Yesbol
  • 2026-09-23 14:48feat: add OpenAPI specification and Swagger UI supportTamerlan
  • 2026-09-23 14:47feat(frontend): add task catalog and detail pageSariyev (yasball) Yesbol
  • 2026-09-23 14:28feat(backend): enhance fallback analysis and validation for confirmed fields; add testsTamerlan
  • 2026-09-23 14:20Merge branch 'main' of github.com:BAITC-Hacks/hack-900988fe-default-teamYesbol (defaul7) Sariyev
  • 2026-09-23 14:19chore(frontend): ignore local build artifactsSariyev (yasball) Yesbol
  • 2026-09-23 14:14feat(frontend): add AI task workflowSariyev (yasball) Yesbol
  • 2026-09-23 14:12Implement backend MVP with scoring service, task analysis, and CRUD operations; add tests and documentation updatesTamerlan
  • 2026-09-23 13:53Initial DYesbol (defaul7) Sariyev
Структура репозитория (60 файлов)
.gitignore
AGENTS.md
API_CONTRACT.md
HACKATHON_PLAN.md
README.md
START_PROMPT_NALREMATVONESAH.md
START_PROMPT_YASBALL.md
backend/.dockerignore
backend/.env.example
backend/.gitignore
backend/Dockerfile
backend/README.md
backend/dev.db
backend/dev.db-shm
backend/dev.db-wal
backend/docs/requirements.md
backend/fixtures/drafts.json
backend/package-lock.json
backend/package.json
backend/scripts/smoke.js
backend/src/ai.js
backend/src/demo-tasks.js
backend/src/demo-teams.js
backend/src/llm.js
backend/src/openapi.js
backend/src/scoring.js
backend/src/server.js
backend/src/store.js
backend/src/task-schema.js
backend/test/acceptance.test.js
backend/test/ai.test.js
backend/test/api.test.js
backend/test/llm.test.js
backend/test/openapi.test.js
backend/test/scoring.test.js
backend/test/startup.test.js
backend/test/store-migration.test.js
docker-compose.yaml
docs/progress/nalrematvonesah.md
docs/progress/yasball.md
frontend/.dockerignore
frontend/.env.example
frontend/.gitignore
frontend/Dockerfile
frontend/README.md
frontend/compose.yaml
frontend/eslint.config.js
frontend/index.html
frontend/nginx.conf
frontend/package-lock.json
frontend/package.json
frontend/src/App.jsx
frontend/src/api/adapter.js
frontend/src/api/httpAdapter.js
frontend/src/api/httpAdapter.test.js
frontend/src/api/mockAdapter.js
frontend/src/api/mockAdapter.test.js
frontend/src/confirmation.css
frontend/src/main.jsx
frontend/src/styles.css

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

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

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