AAYMA
RU
Войти

AI Sana Challenge Hub

Платформа Challenge Hub: бизнес описывает задачу, AI задаёт уточняющие вопросы и оценивает сложность, карточка публикуется в каталог.

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

О проекте

Команда: 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.md

AI Sana Challenge Hub

Единый проект: интерфейс, HTTP API и SQLite работают через один сервер.

Запуск на Windows

  1. Откройте START.cmd в корне проекта.
  2. Дождитесь сообщения о запуске и откройте http://127.0.0.1:4000.
  3. Оставьте окно сервера открытым. Для остановки нажмите 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.

Как проверить работу

  1. В верхней панели выберите демо-роль Бизнес.
  2. Опишите задачу помощнику и ответьте на вопросы либо заполните карточку вручную.
  3. Проверьте поля, сохраните и подтвердите карточку, затем опубликуйте её. Она появится в каталоге. Нулевой рейтинг не мешает публикации задачи с названием.
  4. Выберите роль Команда, укажите одну из команд и откройте задачу. Заполните идею, план, срок и ссылку на прототип; отправьте отклик.
  5. Вернитесь в роль Бизнес, откройте предложения по задаче и выберите команду.
  6. Подтвердите прототип или пилот, указав результат проверки. Команда получает 25 баллов за каждый этап; повторное подтверждение не удваивает баллы.
  7. Обновите страницу или перезапустите сервер: задачи, отклики и прогресс сохраняются в 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.

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

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

Твоё Имя 7Ali 1

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

  • 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 комментариев

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

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