AAYMA
RU
Войти

AI Sana Challenge Hub — Ontogyz

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

Доведённый продукт
Команда «Ontogyz team» 26💬 0 комментариевс 23 сентября 2026 г.

О проекте

Команда: Ontogyz team
Кейс HackAlem.ai: Образование — AI Sana
Стадия: Доведённый продукт

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

Суть

Сервис превращает короткое описание бизнес-проблемы в редактируемую карточку задачи с AI-уточнениями, прозрачным рейтингом готовности, каталогом, откликами команд и начислением баллов за этапы.

Как устроено

Один процесс FastAPI отдаёт статический фронтенд и JSON API, SQLite хранит карточки, команды, отклики и этапы. OpenAI генерирует уточняющие вопросы и карточку, заполняемую только подтверждёнными фактами пользователя; рейтинг считается сервером по весам 9 подтверждённых полей (100/100 = полнота). Бизнес вручную выбирает одну или несколько команд, подтверждённый этап даёт +10 баллов однократно с защитой от повторных запросов.

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

  • weighted readiness scoring
  • grounding/anti-fabrication checks
  • AI eval harness
  • idempotent milestone awards

Особенности

Отдельный набор eval-файлов для AI (fabrication, question grounding, conversation eval) и 58 регрессионных AI-тестов; итерации промпта против выдуманных фактов. Скриншоты UI до/после на ширинах 375–1366 px, роли команды и статус-отчёты каждого участника.

Стек

Python · FastAPI · Uvicorn · SQLite · JavaScript · HTML/CSS · OpenAI SDK

Модели

GPT-4.1-mini (gpt-4.1-mini-2025-04-14)


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

README

README.md

AI Sana Challenge Hub — Ontogyz

Сервис помогает бизнесу превратить короткое описание проблемы в понятную задачу для команд. AI задаёт уточняющие вопросы и собирает редактируемую карточку; бизнес подтверждает сведения, получает прозрачный рейтинг готовности и публикует задачу.

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

Запуск из свежего клона: Windows PowerShell

Проверенная среда: Windows, Python 3.12.14. Нужны Git и доступ к приватному репозиторию. Выберите свободную папку; команды ниже создают новую копию ontogyz-review.

git clone --branch main https://github.com/BAITC-Hacks/hack-69d13496-ontogyz-team.git ontogyz-review
cd ontogyz-review
git log -1 --oneline
py -3.12 -m venv .venv
.\.venv\Scripts\python.exe -m pip install -r requirements.txt
.\.venv\Scripts\python.exe -m pip check
if (-not (Test-Path -LiteralPath .env)) {
    Copy-Item -LiteralPath .env.example -Destination .env
}

Если py отсутствует, проверьте python --version и используйте python -m venv .venv. Можно указать полный путь к установленному Python. Активировать окружение не требуется: команды используют его интерпретатор напрямую.

Для живого AI откройте локальный .env текстовым редактором и заполните OPENAI_API_KEY своим ключом. OPENAI_MODEL по образцу — gpt-4.1-mini-2025-04-14. Эта модель отвечала в аккаунте команды 23.09.2026; доступ другого аккаунта проверяется отдельно. .env исключён из Git, ключ команды в клоне отсутствует. Используется именно .env, не env.env. Переменные окружения AI имеют приоритет над файлом.

.\.venv\Scripts\python.exe -m uvicorn app.main:app --port 8000

После сообщения Uvicorn running оставьте терминал открытым и откройте приложение в браузере. Проверка сервера должна вернуть {"status":"ok"}. Остановка — Ctrl+C. После изменения настроек перезапустите сервер. Если порт уже занят, используйте --port 8001 и тот же порт в браузере.

Проверки

Из корня проекта, во втором окне PowerShell:

.\.venv\Scripts\python.exe -m unittest discover -s tests -v
.\.venv\Scripts\python.exe -W error::RuntimeWarning -m unittest app.ai.test_service app.ai.test_review_regressions -v

AI-тесты подменяют внешние ответы: они не подтверждают доступ аккаунта к OpenAI или качество живой модели. Изолированные проверки интерфейса доступны при работающем сервере на /static/tests/ui.html; они также используют искусственные ответы.

Что можно проверить без ключа

Каталог, фильтры, просмотр задач, отклики, ручной выбор нескольких команд и начисление баллов работают без AI. В новой базе:

  1. Откройте раздел «Команда», выберите уровень «Начальная 0–39» и задачу с 30 баллами.
  2. Отправьте два отклика от разных команд: идея и план — от 10 символов, срок — 1–365 дней, ссылка — HTTP(S) URL. https://example.org/ допустим как явно обозначенная тестовая ссылка, а не действующий прототип.
  3. В разделе «Отклики» выберите эту задачу и вручную выберите обе команды.
  4. Подтвердите этап одного выбранного отклика: баллы его команды увеличатся на 10. Повторная кнопка недоступна; повторный HTTP-запрос также не начисляет баллы.
  5. Перезапустите сервер с тем же путём БД: записи и баллы должны сохраниться.

Без ключа обращение к AI возвращает 503 AI_NOT_CONFIGURED с читаемым сообщением. Статический ответ не подставляется. Для самостоятельной проверки живого AI эксперт настраивает собственный ключ на компьютере сервера; предоставление ключа организатором здесь не подтверждается.

Архитектура и правила

Один процесс FastAPI отдаёт HTML/CSS/JavaScript и JSON API. SQLite хранит карточки, команды, отклики и этапы между запусками. AI вызывается только сервером. Публичные схемы и ошибки — в CONTRACTS.

Подтверждённое полеБаллы
Контекст10
Потребность10
Данные и материалы20
Ожидаемый результат15
Критерии успеха15
Ограничения10
Пользователи10
Контакт бизнеса5
Взаимодействие бизнеса с командой5

Сервер начисляет вес только за содержательное заполненное поле из confirmed_fields. «Не знаю» и «Нет данных» не повышают рейтинг. Название в сумму не входит. 100/100 означает полноту подтверждённых сведений, а не их независимую достоверность или готовность решения.

Уровни готовности в интерфейсе: 0–39 — начальная, 40–69 — рабочая, 70–89 — готовая, 90–100 — приоритетная. Статус публикации задаётся отдельно: черновик или опубликовано. Публикация требует названия, но не минимального рейтинга. Каталог показывает все опубликованные задачи, сортирует по рейтингу по убыванию, затем по ID. Количество откликов не ограничено; выбор каждого предложения независим. Этап разрешён только выбранному предложению и приносит +10 однократно.

Данные и отдельная репетиция

Новая БД автоматически получает 5 синтетических черновиков, 5 карточек с баллами 30/50/65/75/90, 5 профилей команд и 5 откликов. Набор организаторов не использовался. Происхождение и небольшой CSV для репетиции — в data/README.md.

По умолчанию база — data/hackalem.db; она исключена из Git. Путь задаётся переменной окружения PowerShell DATABASE_PATH (для БД значение из .env автоматически не читается). Для отдельной репетиции в новом терминале из корня проекта:

$env:DATABASE_PATH = "data/rehearsal-01.db"
.\.venv\Scripts\python.exe -m uvicorn app.main:app --port 8001

Откройте http://127.0.0.1:8001/. Для новой чистой репетиции выберите ещё не существующее имя БД; повторный запуск с тем же именем продолжает сохранённую работу. Рабочую базу удалять не требуется.

Проверенное состояние и ограничения

Последняя проверка приложения 052b7f2, 23.09.2026, 17:35–17:39: повторно пройдены 19 UI-тестов и настоящий браузерный сценарий на отдельной SQLite-базе. Два живых AI-запроса дали пять вопросов и редактируемую карточку; проверены 0→30→публикация, два отклика, отклонение и выбор обеих команд, этапы по +10, затем рост до 50 и открытие того же ID после перезагрузки страницы. Повторные HTTP-запросы подтверждения не увеличили баллы. Неработающих кнопок в проверенном сценарии не обнаружено. Замечание по AI: описание синтетических записей повторилось в ограничениях; текст удалён вручную, исправление сохранилось. Код AI в этом прогоне не менялся.

Общая проверенная основа — e31a47c (23.09.2026): объединены AI Тимура 535ccba и UI Дастана 6afbe99. Независимо прошли 9 серверных, 58 AI-регрессий, 19 изолированных UI-проверок и 19 дополнительных HTTP-проверок. Свежий официальный клон основы 630efc0 с новой .venv Python 3.12.14 установлен и запущен на Windows; pip check, главная, health, ошибка без ключа и повторный запуск проверены. Последующее оформление рабочего экрана и каталога выполнено по поручению Али поверх 039150b: повторены 19 UI- и 9 серверных проверок, просмотрены первый экран 1280×720, узкие области 390/375 px, каталог и сохранение 100→90→100 на настоящем сервере. Подробности и ограничения — начало EVAL.

С настоящим AI выполнен браузерный сценарий: слабый черновик, 5 вопросов, 10 редактируемых полей, рейтинг 0→30→50→100, публикация при 30, два отклика, независимый выбор двух команд, этапы по +10 однократно и сохранение после перезапуска. Семь независимых реальных AI-вызовов и ограничения подробно описаны в проверке по критериям и EVAL. Следующие коммиты оформления требуют отдельной проверки.

  • AI может неверно распределять или пропускать сведения; человек проверяет, редактирует и подтверждает карточку. Проверенные примеры не гарантируют отсутствие ошибок на любом вводе.
  • Переключатель ролей не является авторизацией. Доступ общий; защиты записей от изменения другим посетителем и производственного развёртывания нет.
  • Данные учебные, экономический эффект и интерес реальных клиентов не измерялись.
  • Полный показ с секундомером на итоговой версии, доступ аккаунта экспертов и фактическая подача пока не подтверждены.

Показ и подача

Сценарий до пяти минут содержит подготовленные факты и два отклика. Материалы для подачи — название, описание и список действий капитана. Сценарий — план; его длительность ещё предстоит измерить.

Документ трека и инструкция участников. Дедлайн, подтверждённый Али: 23 сентября 2026, 18:00 Астана. Push в GitHub и подача через платформу — отдельные действия.

Команда и внешние компоненты

Али — сервер, SQLite, рейтинг, интеграция и документация; Тимур — AI и его оценка; Дастан — интерфейс и браузерные проверки. При разработке использовался Codex; история Git и отчёты участников отражают сделанные изменения.

Зависимости: FastAPI, Uvicorn, OpenAI Python SDK; диапазоны версий — в requirements.txt. Внешняя модель — OpenAI; ключ хранится только на сервере.

Звёзды
⭐ 0
Форки
0
Язык
Python
Последний push
в прошлом месяце
Коммиты
49
Авторы
3
Файлы
108
Ветки
4

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

gitaliuer 28flick1233 11jqut 10

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

  • 2026-09-23 17:46Clarify readiness labels and document final live checkgitaliuer
  • 2026-09-23 17:17Polish business workspace and opportunity cataloggitaliuer
  • 2026-09-23 17:03Document verification of published maingitaliuer
  • 2026-09-23 17:01Record acceptance of final UI polish and remaining rehearsal gategitaliuer
  • 2026-09-23 16:58Integrate final task readiness and form layout polishgitaliuer
  • 2026-09-23 16:58Record independent criteria audit and verified live integrationgitaliuer
  • 2026-09-23 16:51Clarify task readiness and compact final UIjqut
  • 2026-09-23 16:49Integrate reviewed task workspace with grounded AI improvementsgitaliuer
Все коммиты (49)
  • 2026-09-23 16:44Fix reviewed AI data availability and card field semanticsflick1233
  • 2026-09-23 16:35Merge remote-tracking branch 'origin/main' into timur/aiflick1233
  • 2026-09-23 16:32Record independent AI review and targeted quality follow-upgitaliuer
  • 2026-09-23 16:26Redesign business workspace and responsive task viewsjqut
  • 2026-09-23 16:17Clarify setup and prepare rehearsal and submission materialsgitaliuer
  • 2026-09-23 16:14Remove invented conditions from AI clarification questionsflick1233
  • 2026-09-23 15:58Improve AI clarification and business feedback cardsflick1233
  • 2026-09-23 15:55Polish task stages and catalog cardsjqut
  • 2026-09-23 15:49Resume editing saved business tasksjqut
  • 2026-09-23 15:36Add saved business task listing and next-stage contractsgitaliuer
  • 2026-09-23 15:33Merge reviewed field confirmation feedbackgitaliuer
  • 2026-09-23 15:33Merge reviewed AI fabrication guardsgitaliuer
  • 2026-09-23 15:29Improve input validation, readiness scoring and demo coveragegitaliuer
  • 2026-09-23 15:25Exclude fabricated facts while preserving synthetic test dataflick1233
  • 2026-09-23 15:23Correct main base SHA in UI reportjqut
  • 2026-09-23 15:22Keep confirmations aligned with card editsjqut
  • 2026-09-23 15:15Record team review and next AI and UI checksgitaliuer
  • 2026-09-23 15:14Merge reviewed UI action and proposal fixesgitaliuer
  • 2026-09-23 15:08Prevent duplicate UI actions and stale proposal resultsjqut
  • 2026-09-23 15:06Preserve semantic AI card fields and omitted instructionsflick1233
  • 2026-09-23 14:59Fix AI card result groundingflick1233
  • 2026-09-23 14:51Record live server AI connectivity checkgitaliuer
  • 2026-09-23 14:49Record AI integration review and next team milestonesgitaliuer
  • 2026-09-23 14:46Merge reviewed AI grounding and timeout fixesgitaliuer
  • 2026-09-23 14:42Fix grounded card fields and API timeoutsflick1233
  • 2026-09-23 14:36Record judging access requirement and AI branch blockergitaliuer
  • 2026-09-23 14:34Document independent judging path and access gapgitaliuer
  • 2026-09-23 14:29Merge origin/main into timur/aiflick1233
  • 2026-09-23 14:25Ground AI cards in user-provided factsflick1233
  • 2026-09-23 14:22Record real AI browser checks and remaining submission gapsgitaliuer
  • 2026-09-23 14:20Merge reviewed UI action feedback fixesgitaliuer
  • 2026-09-23 14:17Verify two-team demo and preserve action feedbackjqut
  • 2026-09-23 14:12Merge reviewed UI fixes from dastan/uigitaliuer
  • 2026-09-23 14:11Merge remote-tracking branch 'origin/main' into dastan/uijqut
  • 2026-09-23 14:07Build business and team UIjqut
  • 2026-09-23 14:07Document reviewed integration and remaining AI checksgitaliuer
  • 2026-09-23 14:05Merge reviewed AI validation fixes from timur/aigitaliuer
  • 2026-09-23 13:58Prevent duplicate milestone awards during concurrent requestsgitaliuer
  • 2026-09-23 13:54Add AI task clarification and card generationflick1233
  • 2026-09-23 13:46Record verified integration statusgitaliuer
  • 2026-09-23 13:44Integrate AI Sana MVP and verify server flowgitaliuer
Структура репозитория (108 файлов)
.env.example
.gitignore
AGENTS.md
README.md
app/__init__.py
app/ai/__init__.py
app/ai/conversation_eval.py
app/ai/eval-conversations-answers-2026-09-23.json
app/ai/eval-conversations-final-2026-09-23.json
app/ai/eval-conversations-initial-cards-2026-09-23.json
app/ai/eval-conversations-questions-2026-09-23.json
app/ai/eval-fabrication-2026-09-23.json
app/ai/eval-question-grounding-final-2026-09-23.json
app/ai/eval-question-grounding-initial-2026-09-23.json
app/ai/eval-review-1630-initial-2026-09-23.json
app/ai/eval-review-1630-questions-final-2026-09-23.json
app/ai/eval-review-1630-questions-intermediate-2026-09-23.json
app/ai/live_eval.py
app/ai/review_eval.py
app/ai/service.py
app/ai/test_review_regressions.py
app/ai/test_service.py
app/db.py
app/main.py
app/routes/__init__.py
app/routes/api.py
app/schemas.py
app/scoring.py
data/README.md
data/ai-review-2557a5b.json
data/criteria-ai-535ccba.json
data/criteria-http-630efc0.json
data/live-ai-eval-2026-09-23.json
data/rehearsal-writeoffs.csv
docs/CONTRACTS.md
docs/CRITERIA_REVIEW.md
docs/DEMO_SCRIPT.md
docs/EVAL.md
docs/PLAN.md
docs/PRODUCT_AUDIT.md
docs/SUBMISSION.md
docs/status-ali.md
docs/status-dastan.md
docs/status-timur.md
prompts/ALI.md
prompts/DASTAN.md
prompts/TIMUR.md
requirements.txt
tests/test_business_tasks.py
tests/test_flow.py
tests/test_input_quality.py
tests/test_milestones.py
web/app.js
web/index.html
web/style.css
web/tests/capture.cjs
web/tests/check.cjs
web/tests/flow.cjs
web/tests/screenshots/README.md
web/tests/screenshots/after/desktop-catalog.png
web/tests/screenshots/after/desktop-create.png
web/tests/screenshots/after/desktop-editor.png
web/tests/screenshots/after/desktop-proposals.png
web/tests/screenshots/after/mobile-create.png
web/tests/screenshots/after/mobile-saved.png
web/tests/screenshots/before/desktop-catalog.png
web/tests/screenshots/before/desktop-create.png
web/tests/screenshots/before/desktop-editor.png
web/tests/screenshots/before/desktop-proposals.png
web/tests/screenshots/before/mobile-saved.png
web/tests/screenshots/final/desktop-catalog.png
web/tests/screenshots/final/desktop-create.png
web/tests/screenshots/final/desktop-editor.png
web/tests/screenshots/final/desktop-proposals.png
web/tests/screenshots/final/mobile-create.png
web/tests/screenshots/final/mobile-saved.png
web/tests/screenshots/flow-final/1280-catalog.png
web/tests/screenshots/flow-final/1280-new-editor.png
web/tests/screenshots/flow-final/1280-published-editor.png
web/tests/screenshots/flow-final/1280-questions.png
web/tests/screenshots/flow-final/1280-selected-teams.png
web/tests/screenshots/flow-final/1366-catalog.png
web/tests/screenshots/flow-final/1366-new-editor.png
web/tests/screenshots/flow-final/1366-published-editor.png
web/tests/screenshots/flow-final/1366-questions.png
web/tests/screenshots/flow-final/1366-selected-teams.png
web/tests/screenshots/flow-final/375-catalog.png
web/tests/screenshots/flow-final/375-new-editor.png
web/tests/screenshots/flow-final/375-published-editor.png
web/tests/screenshots/flow-final/375-questions.png
web/tests/screenshots/flow-final/375-selected-teams.png
web/tests/screenshots/flow-final/390-catalog.png
web/tests/screenshots/flow-final/390-new-editor.png
web/tests/screenshots/flow-final/390-published-editor.png
web/tests/screenshots/flow-final/390-questions.png
web/tests/screenshots/flow-final/390-selected-teams.png
web/tests/screenshots/flow/1366-catalog.png
web/tests/screenshots/flow/1366-new-editor.png
web/tests/screenshots/flow/1366-published-editor.png
web/tests/screenshots/flow/1366-questions.png
web/tests/screenshots/flow/1366-selected-teams.png
web/tests/screenshots/flow/390-catalog.png
web/tests/screenshots/flow/390-new-editor.png
web/tests/screenshots/flow/390-published-editor.png
web/tests/screenshots/flow/390-questions.png
web/tests/screenshots/flow/390-selected-teams.png
web/tests/ui.html
web/tests/ui.js
Ветки (4)

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

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

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