AAYMA
RU
Войти

AI Sana

Платформа Challenge Hub: компании создают и публикуют карточки задач с рейтингом полноты, студенческие команды откликаются, компания вручную…

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

О проекте

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

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

Суть

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

Как устроено

Backend на FastAPI с SQLAlchemy 2 и PostgreSQL 17, роли «Компания» и «Студент» через JWT, команды с кодами приглашения. Карточка задачи получает балл готовности с перечнем недостающих полей и подсказками. Каталог поддерживает поиск, фильтры по отраслям и сортировку по готовности. При наличии OPENAI_API_KEY AI-помощник предлагает правки заполненных полей, пустые не заполняет. Три карточки импортированы из Astana Hub. Интерфейс на Streamlit, запуск через Docker Compose.

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

  • рейтинг полноты карточки
  • ролевой доступ JWT
  • LLM-редактура текста без добавления фактов

Особенности

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

Стек

Python · FastAPI · SQLAlchemy · PostgreSQL · Streamlit · Docker Compose · Pydantic

Модели

OpenAI (модель через OPENAI_MODEL)


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

README

README.md

AI Sana

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

Каталог включает три карточки, перенесённые из публичного раздела технологических задач Astana Hub, и задачи, которые компании публикуют сами. Внешние карточки снабжены ссылкой на источник и пометкой о локальных откликах.

Основной сценарий

  1. Компания регистрируется, создаёт карточку задачи и при необходимости сохраняет её как черновик.
  2. Компания уточняет описание, указывает аудиторию, доступные данные или ресурсы, критерии успеха и срок, затем публикует задачу.
  3. Студенты создают команду или вступают в неё по коду приглашения.
  4. Команда отправляет отклик с описанием своего подхода и необязательной ссылкой на прототип.
  5. Компания рассматривает отклики, отклоняет неподходящие и вручную выбирает исполнителя. После выбора задача закрывается.

Для трёх импортированных карточек отклики и решения доступны только внутри AI Sana на локальном аккаунте куратора. Они не отправляются iDerek, Xena Soft или PROMAT-SYSTEMS, и эти компании не выбирают исполнителя в AI Sana. Чтобы запустить настоящий цикл с компанией-партнёром, она должна зарегистрировать свой аккаунт и разместить/подтвердить собственную задачу.

AI-помощник может отредактировать заполненный текст. Он не заполняет пустые поля; компания проверяет и вручную применяет каждое предложение. Без API-ключа AI выключен, остальные функции доступны.

Стек

  • Backend: Python 3.12, FastAPI, SQLAlchemy 2, Pydantic.
  • База данных: PostgreSQL 17.
  • Интерфейс MVP: Streamlit.
  • Запуск: Docker Compose.
  • Документация API: OpenAPI/Swagger через FastAPI.

Запуск на Windows

Нужен установленный и запущенный Docker Desktop.

  1. В PowerShell из корня репозитория создайте локальный файл настроек:

    Copy-Item .env.example .env
    
  2. Запустите приложение и базу данных:

    docker compose up --build
    
  3. Откройте интерфейс и документацию API:

Остановить сервисы можно сочетанием Ctrl+C в терминале. PostgreSQL хранит данные в Docker volume, поэтому они сохраняются после обычной остановки.

AI-помощник

AI — необязательная функция. Чтобы включить её, добавьте свой OPENAI_API_KEY в .env и перезапустите Compose. Ключ хранится только на backend и не передаётся интерфейсу. Модель можно указать в OPENAI_MODEL. Помощник редактирует только уже заполненные поля; пустые поля остаются пустыми, чтобы AI не дополнял карточку выдуманными фактами.

Локальный запуск без Docker

Если PostgreSQL уже установлен и доступен, создайте виртуальное окружение и установите зависимости в двух терминалах PowerShell:

py -m venv .venv
.venv\Scripts\Activate.ps1
py -m pip install -r backend/requirements.txt
py -m pip install -r frontend/requirements.txt

Задайте DATABASE_URL для своей PostgreSQL и JWT_SECRET_KEY, затем запустите API из корня:

py -m uvicorn main:app --app-dir backend --host 127.0.0.1 --port 8000

Во втором терминале запустите Streamlit:

py -m streamlit run frontend/app.py

При локальном запуске сайт откроется по адресу http://localhost:8501.

Основные возможности

  • Регистрация, вход и серверная проверка ролей «Компания» и «Студент».
  • Команды студентов: создание, код приглашения и вступление.
  • Черновики задач, публикация и рейтинг полноты карточки с перечнем недостающих полей.
  • Пояснение баллов готовности по каждому полю и подсказки по уточнению карточки; редактирование опубликованных задач.
  • Открытый каталог с поиском, отраслевыми фильтрами и сортировкой по готовности.
  • Отклики команд с сообщением и ссылкой на прототип.
  • Кабинет компании: просмотр откликов, перевод на рассмотрение, отклонение и ручной выбор исполнителя.
  • Права доступа на сервере: компании управляют только своими задачами и откликами, студенты откликаются только от своих команд.

Импортированные карточки Astana Hub

При первом запуске backend добавляет три снимка публичных карточек в локальный каталог. Источник каждой карточки открыт из её подробного описания. Внешние данные не синхронизируются автоматически: перед демонстрацией проверьте исходную страницу и сроки. Даты в импортированных карточках — сроки принятия решений, указанные на Astana Hub, а не обещанный срок выполнения проекта.

Локальный кураторский аккаунт для просмотра и выбора внутренних откликов:

Эти учётные данные нужны только для локальной демонстрации. Задайте собственные ASTANAHUB_REVIEW_EMAIL и ASTANAHUB_REVIEW_PASSWORD в .env перед запуском и не публикуйте приложение с локальным паролем.

Исходные публикации: iDerek: OCR на хостинге, Xena Soft: AI-агент для E2E-тестов, PROMAT-SYSTEMS: ночное распознавание госномеров.

Статус и ограничения MVP

Приложение рассчитано на локальную демонстрацию и проверку основного сценария. Таблицы базы создаются при первом запуске; для развития production-схемы следует добавить управляемые миграции. Регистрация не подтверждает юридическую принадлежность к компании. Учетные записи не используют подтверждение email или восстановление пароля. Перед публичным развёртыванием замените локальные значения пароля PostgreSQL и JWT_SECRET_KEY, настройте HTTPS и добавьте проверку компаний.

После объединения веток

Выбрана версия feature/Branch-raiymbek с ролями company и student и командами. Она использует отдельный том postgres_teams_data. Старый postgres_data сохранён; его пользователи и задачи автоматически не переносятся. Роль admin в выбранной версии не реализована. Старые backend/auth.py, create_admin.py, init_db.py и test_api.py относятся к предыдущему API и не используются новым сервером.

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

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

Raiymbek 7Alimhan 4AnxiWork 3

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

  • 2026-09-23 17:37final updateAlimhan
  • 2026-09-23 16:41Configure PostgreSQL Docker services and document role-based APIAlimhan
  • 2026-09-23 16:38Branch mainRaiymbek
  • 2026-09-23 16:27Merge branch 'main' of github.com:BAITC-Hacks/hack-6cf54719-the-bestRaiymbek
  • 2026-09-23 16:16Update projectRaiymbek
  • 2026-09-23 15:46backend global updateAlimhan
  • 2026-09-23 15:09frontend updateAnxiWork
  • 2026-09-23 15:03main.pyAlimhan
Все коммиты (14)
  • 2026-09-23 14:09Merge branch 'main' of github.com:BAITC-Hacks/hack-6cf54719-the-bestRaiymbek
  • 2026-09-23 14:08update frontendAnxiWork
  • 2026-09-23 14:00agentic.mdRaiymbek
  • 2026-09-23 13:57readme fileRaiymbek
  • 2026-09-23 12:22Merge branch 'main' of github.com:BAITC-Hacks/hack-6cf54719-the-bestAnxiWork
  • 2026-09-23 12:12feat: initial clean project structureRaiymbek
Структура репозитория (26 файлов)
.dockerignore
.env.example
.gitignore
README.md
agentic.md
backend/Dockerfile
backend/agent.py
backend/auth.py
backend/create_admin.py
backend/database.py
backend/init_db.py
backend/main.py
backend/models.py
backend/requirements-dev.txt
backend/requirements.txt
backend/schemas.py
backend/security.py
backend/test_api.py
docker-compose.yml
frontend/.streamlit/config.toml
frontend/Dockerfile
frontend/api.py
frontend/app.py
frontend/index.html
frontend/requirements.txt
frontend/style.css
Ветки (2)

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

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

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