AI Sana Challenge Hub
Платформа Challenge Hub: бизнес описывает задачу, AI задаёт уточняющие вопросы и оценивает сложность, карточка публикуется в каталог.
О проекте
Команда: Ai-DH
Кейс HackAlem.ai: Образование — AI Sana
Стадия: Рабочий MVP
Задача кейса: Challenge Hub: превратить задачу бизнеса в задание для студенческих команд
Суть
Платформа Challenge Hub: бизнес описывает задачу, AI задаёт уточняющие вопросы и оценивает сложность, карточка публикуется в каталог. Команды отправляют отклики, бизнес выбирает команду и подтверждает этапы с начислением баллов.
Как устроено
Один Node.js 24 сервер (TypeScript без сборки) обслуживает фронтенд, HTTP API и SQLite. ai_service.js вызывает OpenAI Responses API со строгой JSON-схемой, таймаутом и store:false: модель задаёт ровно 3 вопроса, оценивает сложность 1–10 и даёт отзыв, не перезаписывая заполненные поля. Без ключа работает демо-помощник. Рейтинг заполненности отделён от сложности, за подтверждённый прототип или пилот команда получает 25 баллов без удвоения. Есть обнаружение конфликтов при редактировании.
Ключевые решения
- OpenAI Responses API
- strict JSON schema
- оценка сложности 1–10
- обнаружение конфликтов версий
- интеграционные тесты node --test
Особенности
Сервер работает без npm install благодаря нативному TypeScript в Node 24. Оценка сложности помечается устаревшей после правки карточки. Ошибки API не подменяются демо-ответом. Коммиты неинформативные («обновление»).
Стек
Node.js 24 · TypeScript · SQLite · JavaScript · HTML/CSS
Модели
OpenAI gpt-4.1-mini
Проект создан за 5 часов на финале хакатона HackAlem.ai (23 сентября 2026, Астана). Код — BAITC-Hacks/hack-8b62ba58-ai-dh.
README
README.mdAI Sana Challenge Hub
Единый проект: интерфейс, HTTP API и SQLite работают через один сервер.
Запуск на Windows
- Откройте
START.cmdв корне проекта. - Дождитесь сообщения о запуске и откройте http://127.0.0.1:4000.
- Оставьте окно сервера открытым. Для остановки нажмите Ctrl+C.
Нужен Node.js 24 или новее. На текущем компьютере скрипт также умеет найти Node, установленный вместе с Codex. На другом компьютере установите Node.js 24+. Загрузка внешних пакетов и npm install не нужны.
Не открывайте frontend/index.html двойным щелчком: для работы с общей базой сайт нужно открывать по адресу сервера.
Из терминала в корне проекта:
node --env-file-if-exists=backend/.env backend/src/server.ts
Если установлен npm, также доступны npm start, npm run dev и npm test.
Как проверить работу
- В верхней панели выберите демо-роль Бизнес.
- Опишите задачу помощнику и ответьте на вопросы либо заполните карточку вручную.
- Проверьте поля, сохраните и подтвердите карточку, затем опубликуйте её. Она появится в каталоге. Нулевой рейтинг не мешает публикации задачи с названием.
- Выберите роль Команда, укажите одну из команд и откройте задачу. Заполните идею, план, срок и ссылку на прототип; отправьте отклик.
- Вернитесь в роль Бизнес, откройте предложения по задаче и выберите команду.
- Подтвердите прототип или пилот, указав результат проверки. Команда получает 25 баллов за каждый этап; повторное подтверждение не удваивает баллы.
- Обновите страницу или перезапустите сервер: задачи, отклики и прогресс сохраняются в SQLite.
Черновики доступны в кабинете бизнеса. Редактирование опубликованной задачи меняет рабочую карточку; каталог обновится после повторного подтверждения и публикации. При конфликте изменений интерфейс сообщает об этом и предлагает загрузить новую версию — чужие изменения автоматически не перезаписываются.
Что объединено
frontend/— исходный дизайн, интерфейс и клиент API.backend/src/— маршруты, бизнес-правила, AI-демо и SQLite.backend/tests/— интеграционные проверки реальными HTTP-запросами.backend/docs/— контракт API, TypeScript-клиент и исходные примеры команды.START.cmd,TEST.cmd,package.json— единый запуск и проверка..vscode/launch.json— запуск общего сервера из VS Code.
frontend/api.js связывает интерфейс с сервером. Задачи и отклики больше не подменяются локальными демо-записями при ошибке API. Браузер может запоминать выбранную демо-роль; рабочие данные хранятся на сервере.
Папка Microsoft/ из исходного репозитория содержит кэш PowerShell и не является частью приложения. Она не используется сервером.
Настройки и данные
При первом запуске создаётся backend/data/ai-sana.sqlite с пятью демонстрационными задачами и командами. Контакты и ссылки в примерах синтетические. backend/docs/seed.json сохранён как исходный пример; начальные записи сервер создаёт из backend/src/domain.ts.
Для изменения настроек скопируйте backend/env.example в backend/.env. По умолчанию сервер доступен только на этом компьютере. Переменные: HOST, PORT, DATABASE_PATH, CORS_ORIGINS, SEED_DATA. Относительный DATABASE_PATH считается от backend/.
Для работы с нескольких компьютеров в одной доверенной сети задайте HOST=0.0.0.0, а в CORS_ORIGINS добавьте точный адрес сайта, например http://192.168.1.10:4000. Открывайте этот адрес на остальных компьютерах; localhost всегда означает текущий компьютер. Если система блокирует соединение, потребуется разрешение в настройках сети.
Для резервной копии остановите сервер и скопируйте backend/data/. Не добавляйте рабочую базу и backend/.env в Git.
Тесты
Откройте TEST.cmd либо выполните в корне:
node --test backend/tests/*.test.ts
Тесты используют отдельные базы и не меняют рабочие задачи.
Границы текущей версии
Это объединённый хакатонный прототип. Выбор роли — демо-переключатель, а не защищённая авторизация. Бизнес-кабинет общий для всех; сервер доверяет демо-заголовкам. Старые локальные регистрации и пароли не используются.
Подключение OpenAI
Скопируйте backend/env.example в backend/.env (если .env уже существует, сохраните его настройки). Вставьте новый действующий ключ после OPENAI_API_KEY= и сохраните файл. Ключ не отправляйте в чат и не включайте в архив проекта. Нужен именно файл .env, а не Ai-sana-site.env или .env.txt.
Модель по умолчанию — gpt-4.1-mini; её можно поменять в OPENAI_MODEL. Без ключа работает локальный демо-помощник. При наличии ключа сервер автоматически выбирает OpenAI; AI_PROVIDER=demo позволяет явно вернуться к демо. После изменения настроек остановите сервер через Ctrl+C и снова запустите START.cmd.
В блоке Sana AI появится метка OPENAI. Она означает, что сервер настроен на OpenAI; действительность ключа проверяется при первом уточнении. Отправьте описание или нажмите «Уточнить с AI»: модель задаст ровно 3 вопроса, оценит сложность от 1 до 10 и даст краткий отзыв. Запросы расходуют API-кредиты. Ответы на уточняющие вопросы сохраняются локальным сервером; повторное обращение к модели происходит при следующем явном уточнении.
Сложность отделена от рейтинга заполненности карточки. После редактирования оценка помечается устаревшей; повторите уточнение для обновления. Оценка сохраняется в SQLite вместе с карточкой, а в каталог попадает только после подтверждения и публикации.
backend/src/ai_service.js содержит два системных промпта и функцию generateAssessment(taskText, values?). Она использует OpenAI Responses API со строгой JSON-схемой, ограничением ответа, таймаутом и store:false. Описание и поля задачи передаются OpenAI. Заполненные пользователем поля не перезаписываются моделью. Реальные тестовые запросы не входят в TEST.cmd: автоматические тесты используют подставные ответы и не расходуют кредиты.
Ошибки ключа, разрешений, модели, квоты и сети показываются в интерфейсе. При ошибке черновик сохраняется, а ответ AI не подменяется успешным демо-результатом. NVIDIA пока не подключена.
Перед публичным размещением потребуются настоящая авторизация, разграничение владельцев задач и ограничения расходов для общего доступа к AI.
Авторы коммитов
История коммитов
- 2026-09-23 17:43обновлениеТвоё Имя
- 2026-09-23 16:30обновлениеТвоё Имя
- 2026-09-23 16:29обновлениеТвоё Имя
- 2026-09-23 15:59обновлениеТвоё Имя
- 2026-09-23 15:46обновлениеТвоё Имя
- 2026-09-23 14:55app.js testТвоё Имя
- 2026-09-23 14:53Твоё Имя
- 2026-09-23 14:28README testAli
Структура репозитория (29 файлов)
.gitignore README.md START.cmd TEST.cmd backend/README.md backend/data/.gitkeep backend/docs/TEAM-HANDOFF.md backend/docs/ai-example.json backend/docs/api.http backend/docs/client.ts backend/docs/seed.json backend/env.example backend/package.json backend/src/ai_service.js backend/src/app.ts backend/src/config.ts backend/src/database.ts backend/src/domain.ts backend/src/errors.ts backend/src/server.ts backend/tests/ai.test.ts backend/tests/api.test.ts backend/tsconfig.json frontend/api.js frontend/app.js frontend/index.html frontend/styles.css package.json scripts/node.cmd
Ветки (2)
Обсуждение 0 комментариев
Войдите, чтобы комментироватьПока нет комментариев — будьте первым.