AI Sana Challenge Hub
MVP на Streamlit. Бизнес создаёт карточку задачи с AI-черновиком и AI-рецензией, публикует её после проверки качества. Студенческие команды…
О проекте
Команда: Triple_A
Кейс HackAlem.ai: Образование — AI Sana
Стадия: Рабочий MVP
Задача кейса: Challenge Hub: превратить задачу бизнеса в задание для студенческих команд
Суть
MVP на Streamlit. Бизнес создаёт карточку задачи с AI-черновиком и AI-рецензией, публикует её после проверки качества. Студенческие команды откликаются, бизнес выбирает команду.
Как устроено
Черновик и рецензию генерирует OpenAI Responses API (модель gpt-6-astra). Без ключа включается честно помеченный детерминированный demo-режим. Локальная оценка качества 0–100 не даёт опубликовать карточку ниже 75 баллов. Дальше каталог с поиском и фильтрами по навыкам, отклики с защитой от повторов и выбор одной команды, после которого приём откликов закрывается. Данные живут в сессии браузера.
Ключевые решения
- quality scoring 0–100
- publication gating
- deterministic fallback
Особенности
Интерфейс явно показывает, откуда взят каждый результат: OpenAI или локальный demo-режим. Весь сквозной сценарий покрыт Streamlit AppTest.
Стек
Python · Streamlit · OpenAI Responses API · pytest
Модели
OpenAI gpt-6-astra
Проект создан за 5 часов на финале хакатона HackAlem.ai (23 сентября 2026, Астана). Код — BAITC-Hacks/hack-dcc3f6d0-triple-a.
README
README.mdAI Sana Challenge Hub
Готовый к демонстрации MVP на Python + Streamlit. Бизнес создаёт и публикует практическую задачу, студенческая команда отправляет предложение, а представитель бизнеса выбирает команду. Данные хранятся в текущей сессии браузера.
Возможности
- ручное создание и редактирование карточки задачи;
- AI-черновик и AI-рецензия через OpenAI Responses API;
- честно обозначенный локальный demo-режим без API-ключа;
- локальная оценка качества 0–100 и блокировка слабой публикации;
- каталог с поиском, фильтрацией по навыкам и сортировкой;
- отклики команд, защита от повторного отклика и проверка длины полей;
- выбор одной команды и автоматическое закрытие новых откликов;
- адаптивный интерфейс для компьютера и мобильной ширины;
- unit-тесты основной логики и Streamlit AppTest полного сценария.
Требования
- Python 3.10 или новее;
- интернет нужен только для установки зависимостей и реальных запросов к OpenAI;
- API-ключ не нужен для локальной демонстрации.
Быстрый запуск в Windows PowerShell
Из папки проекта:
py -m venv .venv
.\.venv\Scripts\python.exe -m pip install -r requirements.txt
.\.venv\Scripts\python.exe -m streamlit run app.py
Если команда py недоступна, замените её на python.
Приложение откроется по адресу http://localhost:8501.
Запуск в macOS / Linux
python3 -m venv .venv
./.venv/bin/python -m pip install -r requirements.txt
./.venv/bin/python -m streamlit run app.py
Подключение OpenAI API
Откройте .env в корне проекта и вставьте ключ после знака =:
OPENAI_API_KEY=
OPENAI_MODEL=gpt-6-astra
Файл .env уже добавлен в .gitignore; не помещайте его в архив или репозиторий. Существующая переменная окружения Windows имеет приоритет над значением из .env. Для совместимости приложение также принимает OPENAI_API_KEY из .streamlit/secrets.toml.
Вариант 2 — переменная окружения PowerShell только для текущего окна:
$env:OPENAI_API_KEY = "your-key"
.\.venv\Scripts\python.exe -m streamlit run app.py
Модель по умолчанию — gpt-6-astra. Её можно переопределить переменной OPENAI_MODEL:
$env:OPENAI_MODEL = "доступная-вам-модель"
Само наличие ключа не считается успешным подключением. После нажатия соответствующей кнопки интерфейс показывает фактический источник конкретного результата: OpenAI API или локальный demo-режим. Локальная генерация детерминирована и нигде не выдаётся за ответ модели. Ошибки API отображаются безопасным сообщением без ключа и внутренних деталей.
Демонстрационный сценарий
- Откройте «Создать задачу».
- Введите черновик для AI-помощника или заполните поля вручную.
- Примените AI-черновик и при необходимости отредактируйте каждое поле.
- Нажмите «Оценить качество задачи», изучите рекомендации и запросите рецензию.
- Опубликуйте карточку с оценкой не ниже 75.
- Найдите её в каталоге через поиск и фильтры и откройте страницу задачи.
- Отправьте отклик студенческой команды.
- В разделе «Отклики для бизнеса» выберите команду.
- Вернитесь на страницу задачи: новый отклик будет недоступен.
Роли переключаются через верхнюю навигацию без авторизации. Для непрерывной демонстрации используйте одну вкладку: перезапуск сервера или новая вкладка создают новую сессию.
Тесты
.\.venv\Scripts\python.exe -m pytest -q
Тесты находятся в tests/ и покрывают оценку, публикацию, повторное нажатие, локальный AI-режим, валидацию отклика, повторный отклик, выбор команды и полный Streamlit-сценарий.
Структура
app.py— интерфейс, навигация и состояние Streamlit;ai_assistant.py— OpenAI Responses API и локальный demo-режим;utils.py— оценка, публикация, отклики и выбор команды;tests/— unit- и Streamlit AppTest-тесты;.streamlit/config.toml— тема и серверные настройки;requirements.txt— зависимости запуска и тестов.
Авторы коммитов
История коммитов
- 2026-09-23 17:55AI-SANA-1.0-MVPAgil
- 2026-09-23 17:32ai-sana-task-1.0-mvpAgil
- 2026-09-23 16:31ai-sana-task-0.2-mvpAgil
- 2026-09-23 15:34Update AI Sana Hub MVPaibarN0tF0und
- 2026-09-23 14:42ai-sana-task-0.1beta-mvpAgil
Структура репозитория (15 файлов)
.env.example .gitignore AUDIT_REPORT.md PLAN.md README.md ai_assistant.py app.py questions.py rating.py requirements.txt storage.py tests/test_app.py tests/test_questions.py tests/test_storage_rating.py utils.py
Обсуждение 0 комментариев
Войдите, чтобы комментироватьПока нет комментариев — будьте первым.