AAYMA
RU
Войти

AI Sana: Платформа геймификации практических бизнес-задач

Веб-платформа на FastAPI. Конструктор задачи с AI-диалогом и спидометром готовности 0–100, каталог с фильтрами, кабинеты бизнеса (ручной выбор…

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

О проекте

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

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

Суть

Веб-платформа на FastAPI. Конструктор задачи с AI-диалогом и спидометром готовности 0–100, каталог с фильтрами, кабинеты бизнеса (ручной выбор откликов, подтверждение этапов) и студенческих команд (XP, рекомендации).

Как устроено

Бизнес вводит потребность, AI (gpt-4o-mini или локальный детерминированный фолбэк) ищет пробелы и пошагово уточняет ТЗ, собирая паспорт задачи с тремя milestones. Рейтинг считается прозрачной аддитивной формулой из 7 критериев. Рекомендации задач командам взвешивают домен 40%, стек 40% и готовность 20%. Данные лежат в JSON-файлах с атомарной записью.

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

  • аддитивная формула рейтинга
  • взвешенные рекомендации 40/40/20
  • dual-mode AI с фолбэком
  • геймификация XP

Метрики

34 теста проходят

Особенности

Проектные решения записаны в 9 ADR (в том числе запрет автоназначения команд), есть экран-путеводитель для жюри. Разработка шла от PRD и tracer-bullet тикетов; проект мигрировал со Streamlit на FastAPI.

Стек

Python · FastAPI · Jinja2 · Tailwind CSS · Alpine.js · Pydantic · pytest

Модели

gpt-4o-mini (OpenAI)


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

README

README.md

AI Sana: Платформа геймификации практических бизнес-задач

Полный работающий MVP платформы для трансформации первичных потребностей бизнеса в качественные карточки задач, их объективного рейтингования (0–100) и открытого выбора студенческих команд.

Разработано в рамках хакатона AI Sana (трек: Education & Gamification).
Репозиторий проекта: https://github.com/BAITC-Hacks/hack-0c02bd80-mussels


1. Архитектура системы и дизайн

Платформа построена по принципу модульного монолита на Python со строгой технологичной дизайн-системой (Linear / Vercel style) на базе нейтральной палитры Zinc:

  • Автономное веб-приложение (server.py, templates/, run_web.sh): Основной веб-интерфейс на базе FastAPI, Jinja2, Tailwind CSS и Alpine.js на порту 8000. Отличается нулевым оверхедом сборки (No-Node build), быстрой реактивностью и чистой типографикой (Plus Jakarta Sans).
  • Ролевая навигация (ADR-0008):
    • Левый продуктово-ролевой контур: ссылка на «Каталог» + сегментированный переключатель рабочих пространств участников [Команда | Бизнес];
    • Правый блок действий: первичная графитовая CTA-кнопка [+ Конструктор], презентационный бейдж-чип [Демо жюри], бейдж статуса AI ядра и кнопка сброса базы к эталону.
  • Двухрежимный AI-движок (services/ai_generator.py, ADR-0002):
    • Основной режим: OpenAI (gpt-4o-mini) для контекстного анализа пробелов в описании и адаптивного пошагового уточнения ТЗ.
    • Резервный режим: Локальный детерминированный генератор (Local Fallback), обеспечивающий 100% стабильность демонстрации даже без сети или API-ключа.
  • Движок скоринга (services/scoring.py, ADR-0004): Прозрачная аддитивная формула расчета рейтинга (0–100 баллов) с генерацией подсказок и векторным SVG-спидометром.
  • Многомерный алгоритм рекомендаций (services/recommendation.py): Персонализированный подбор задач для команд по доменным интересам (40%), профилю инженерных компетенций (40%) и уровню готовности ТЗ (20%).
  • Файловое хранилище (services/storage.py): JSON-хранилище в директории data/ с атомарной записью, поддержкой сидинга и кнопкой мгновенного сброса.

2. Формула рейтинга готовности задачи

Рейтинг отражает готовность конкретной бизнес-задачи к студенческой разработке и рассчитывается строго аддитивно по подтвержденным полям:

ПоказательМакс. баллКак начисляются баллы
Контекст и потребность20Понятно текущее положение дел и требуемые изменения
Данные и материалы20Указаны доступные датасеты, примеры диалогов, ссылки
Ожидаемый результат15Описан конкретный артефакт (бот, сервис, модель, дашборд)
Критерии успеха15Сформулированы измеримые метрики приемки решения
Ограничения10Зафиксированы сроки, стек технологий, безопасность
Пользователи10Определена целевая аудитория будущего решения
Связь с бизнесом10Указаны прямые контакты, формат синков и консультаций
ИТОГО100Полная шкала готовности

Категории уровня готовности:

  • 0–39 баллов — Черновик: задача видна в каталоге, но снабжена отметкой о необходимости доработки.
  • 40–69 баллов — Рабочая: студенты могут подавать отклики, задача включается в рекомендации.
  • 70–89 баллов — Готовая: задача занимает повышенную позицию в общем каталоге.
  • 90–100 баллов — Приоритетная: задача полностью готова к работе и выделяется визуальным бейджем.

3. Ключевые разделы платформы

1. Конструктор задачи (/ или /constructor)

  • Ввод первичной потребности бизнеса в свободной форме.
  • Адаптивный пошаговый диалог с AI (выявление недостающих сведений, подсказки «Быстрый ответ для жюри»).
  • Динамический спидометр готовности (0–100 баллов) и автоматическая сборка паспорта задачи с 3 контрольными этапами (milestones).

2. Общий каталог задач (/catalog)

  • Единый открытый пул подтвержденных задач с ранжированием по рейтингу готовности.
  • Живая фильтрация по отраслям бизнеса и уровням готовности («Приоритетная», «Готовая», «Рабочая», «Черновик»).
  • Модальный паспорт задачи с детальной структурой ТЗ, критериями приемки и формой отклика команды.

3. Кабинет студенческой команды (/student, ADR-0009)

  • Единый лаконичный селектор команды с отображением баланса XP.
  • Сводный профиль команды со стеком технологий и счетчиками баллов: Подтверждено XP, Закрыто этапов, В разработке XP.
  • Проектно-центричная структура прогресса: Проект → Завершенные контрольные этапы (+XP) → Этапы в разработке (+XP).
  • Персональные AI-рекомендации задач с многомерным расчетом совместимости (домен 40%, стек 40%, готовность 20%) и текстовым объяснением.

4. Кабинет бизнеса и управление проектами (/business, ADR-0003, ADR-0007)

  • Реестр задач компании и мониторинг проектного цикла.
  • Принцип исключительно ручного выбора (ADR-0003): категорический запрет автоназначения платформой — представитель бизнеса лично принимает решение по откликам команд.
  • Интерактивная шкала контрольных этапов и подтверждение с начислением баллов прогресса (+XP) команде.

5. Экспресс-демонстрация для жюри (/jury-demo или /demo)

  • Интерактивный путеводитель по сквозному сценарию за 3 минуты: от ввода слабого черновика до начисления баллов XP.
  • Памятка ключевых архитектурных решений хакатона.

4. Быстрый запуск

Требования:

  • Python 3.9+
  • Установленные зависимости

Установка:

# Клонирование репозитория
git clone https://github.com/BAITC-Hacks/hack-0c02bd80-mussels.git
cd hack-0c02bd80-mussels

# Создание и активация виртуального окружения
python3 -m venv venv
source venv/bin/activate

# Установка зависимостей
pip install -r requirements.txt

Запуск основного веб-приложения (FastAPI + Tailwind CSS, порт 8000):

./run_web.sh
# или напрямую:
uvicorn server:app --host 0.0.0.0 --port 8000 --reload

Приложение доступно по адресу: http://localhost:8000.

Запуск можно осуществлять как через ./run_web.sh, так и через ./run.sh (автоматически запускает веб-сервер FastAPI).

Запуск автоматических тестов:

./venv/bin/pytest tests/
# 34 passed

5. Архитектурные решения (Architecture Decision Records)

Все проектные развилки зафиксированы в директории docs/adr/:

  1. ADR-0001: Единая архитектура на базе Streamlit (устарело, заменено на ADR-0005)
  2. ADR-0002: Двухрежимный AI-движок (OpenAI + Local Fallback)
  3. ADR-0003: Категорический запрет автоназначения и ручной выбор бизнеса
  4. ADR-0004: Прозрачная аддитивная формула рейтинга готовности (0–100)
  5. ADR-0005: Выделение автономного веб-приложения на FastAPI
  6. ADR-0006: Минималистичная дизайн-система и палитра Zinc
  7. ADR-0007: Эргономичная иерархия действий и навигационные вкладки
  8. ADR-0008: Логическое разделение навигации и ролевой сегментированный контрол
  9. ADR-0009: Проектно-центричная структура кабинета студенческой команды

6. Структура репозитория

hack-0c02bd80-mussels/
├── CONTEXT.md                 # Доменный словарь платформы (Domain Modeling)
├── README.md                  # Финальная документация проекта
├── server.py                  # Основной веб-сервер FastAPI (порт 8000)
├── run_web.sh                 # Скрипт запуска веб-приложения FastAPI
├── run.sh                     # Алиас запуска основного приложения
├── config.py                  # Конфигурация, веса скоринга и справочники
├── conftest.py                # Конфигурация фикстур pytest
├── requirements.txt           # Зависимости проекта
├── case_doc.txt               # Исходное задание хакатона (RU, KZ, EN)
├── docs/
│   └── adr/                   # Архитектурные решения (ADR 0001 — 0009)
├── models/                    # Pydantic модели данных (Task, Proposal, Team, Milestone)
├── services/                  # Бизнес-логика (Scoring, Storage, AI Generator, Recommendation, Seed, UI)
├── static/                    # Статические ресурсы
├── templates/                 # Шаблоны Jinja2 + Tailwind CSS + Alpine.js
│   ├── base.html              # Базовый каркас с ролевым навбаром и тостами
│   ├── index.html             # Конструктор задачи с AI-диалогом и спидометром
│   ├── catalog.html           # Общий каталог задач с живой фильтрацией
│   ├── student.html           # Кабинет студенческой команды и проектный трекер XP
│   ├── business.html          # Кабинет бизнеса и ручной выбор откликов
│   └── jury_demo.html         # Экспресс-демонстрация и путеводитель для жюри
└── tests/                     # Автоматические тесты (Scoring, Fallback, Web App, Emojis)
Звёзды
⭐ 0
Форки
0
Язык
Python
Последний push
в прошлом месяце
Коммиты
21
Авторы
1
Файлы
63
Ветки
2

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

Beksultan 21

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

  • 2026-09-23 17:42chore: remove streamlit and standardize on fastapi web appBeksultan
  • 2026-09-23 17:39docs: finalize production README with all 9 ADRs and architectureBeksultan
  • 2026-09-23 17:35feat(design): declutter all pages and unify minimalist linear stylingBeksultan
  • 2026-09-23 17:30feat(student): streamline team cabinet into project-centric hierarchy (ADR-0009)Beksultan
  • 2026-09-23 17:21feat(nav): segment role navigation and elevate primary actions (ADR-0008)Beksultan
  • 2026-09-23 17:01feat(ux): streamline catalog card actions and business cabinet tabsBeksultan
  • 2026-09-23 16:49feat(design): implement minimal linear design system and milestone guardrailBeksultan
  • 2026-09-23 16:00feat(web): jury express demo, run script and docsBeksultan
Все коммиты (21)
  • 2026-09-23 15:48feat(web): student team cabinet with xp summary and ai recommendationsBeksultan
  • 2026-09-23 15:42feat(web): business cabinet with milestone progress and manual team selectionBeksultan
  • 2026-09-23 15:36feat(web): open task catalog with live filtering and compact gaugesBeksultan
  • 2026-09-23 15:28feat(web): task constructor with ai dialogue and rating gaugeBeksultan
  • 2026-09-23 15:22feat(web): fastapi core server and clean white shellBeksultan
  • 2026-09-23 15:18docs: PRD spec, ADR-0005, and tracer-bullet tickets for FastAPI web appBeksultan
  • 2026-09-23 15:08feat(prototype): radical light design variants with top switcher and live showcaseBeksultan
  • 2026-09-23 15:02prototype(ui): 3 design and color variants with floating bottom switcherBeksultan
  • 2026-09-23 14:55feat(ui): dynamic circular score gauge and milestone progress visualizerBeksultan
  • 2026-09-23 14:34chore: add run.sh executable script for launching Streamlit via virtualenvBeksultan
  • 2026-09-23 14:32feat(app): interactive Streamlit web application with end-to-end hackathon workflow and complete documentationBeksultan
  • 2026-09-23 14:31feat(core): data models, 100-pt scoring engine, synthetic dataset, dual-mode AI and testsBeksultan
  • 2026-09-23 14:29docs: domain model, context glossary and architecture decisionsBeksultan
Структура репозитория (63 файлов)
.gitignore
.scratch/hackathon/issues/01-gamification-visual-dashboard.md
.scratch/hackathon/issues/02-export-markdown-pdf.md
.scratch/hackathon/issues/03-ai-guardrails-input-validation.md
.scratch/hackathon/issues/04-pitch-demo-speaker-mode.md
.scratch/web-app/issues/01-fastapi-core-white-shell.md
.scratch/web-app/issues/02-task-constructor-ai-dialog-gauge.md
.scratch/web-app/issues/03-open-task-catalog-filters.md
.scratch/web-app/issues/04-business-cabinet-milestone-progress.md
.scratch/web-app/issues/05-student-team-profile-xp-recommendations.md
.scratch/web-app/issues/06-jury-express-demo-and-startup.md
.scratch/web-app/issues/07-fix-milestone-xp-guardrail.md
.scratch/web-app/issues/08-feat-student-proposal-submission.md
.scratch/web-app/issues/09-feat-task-card-publish-confirmation.md
.scratch/web-app/issues/10-refactor-deep-storage-milestone-smells.md
.scratch/web-app/issues/11-standards-domain-vocabulary-and-clean-white.md
.scratch/web-app/spec.md
CONTEXT.md
README.md
case_doc.txt
config.py
conftest.py
data/drafts.json
data/milestones.json
data/proposals.json
data/tasks.json
data/teams.json
docs/adr/0001-streamlit-unified-architecture.md
docs/adr/0002-dual-mode-ai-engine.md
docs/adr/0003-manual-business-selection-guardrail.md
docs/adr/0004-transparent-additive-rating-formula.md
docs/adr/0005-fastapi-standalone-web-app.md
docs/adr/0006-minimalist-visual-design-system.md
docs/adr/0007-ergonomic-action-hierarchy-and-tabs.md
docs/adr/0008-navbar-role-segmented-navigation.md
docs/adr/0009-student-cabinet-project-centric-structure.md
models/__init__.py
models/milestone.py
models/proposal.py
models/task.py
models/team.py
requirements.txt
run.sh
run_web.sh
server.py
services/__init__.py
services/ai_generator.py
services/recommendation.py
services/scoring.py
services/seed_data.py
services/storage.py
services/ui_components.py
static/.gitkeep
templates/base.html
templates/business.html
templates/catalog.html
templates/index.html
templates/jury_demo.html
templates/student.html
tests/test_ai_generator.py
tests/test_scoring.py
tests/test_ui_components.py
tests/test_web_app.py
Ветки (2)

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

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

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