AAYMA
RU
Войти

HackAlem AI

Платформа, где бизнес с помощью AI уточняет описание проблемы, получает редактируемую карточку задачи с рейтингом готовности 0–100 и публикует её…

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

О проекте

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

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

Суть

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

Как устроено

Go-бэкенд на net/http + SQLite (modernc.org/sqlite) хранит задачи, команды и предложения; отдельный Go-модуль ai через OpenAI возвращает 3–5 уточняющих вопросов и карточку из 11 полей по JSON-схемам с валидацией, при отсутствии ключа включается явный fallback (заголовок X-AI-Mode). Рейтинг готовности считает backend детерминированно по 9 категориям (контекст, данные, критерии успеха и т.д.) с уровнями draft/working/ready/priority. Фронтенд на React 19 + Vite 7.

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

  • JSON schema validation
  • deterministic readiness scoring
  • LLM fallback
  • prompt templates

Особенности

AI не рассчитывает рейтинг и не придумывает факты: оценку готовности даёт прозрачная рубрика на backend, а режим ответа (live/fallback) явно виден в заголовке. Хорошее покрытие Go-тестами и чистое разделение backend/ai модулей.

Стек

Go · net/http · SQLite · React · Vite

Модели

OpenAI


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

README

README.md

HackAlem AI

HackAlem AI превращает неструктурированную бизнес-проблему в проверяемую задачу для студенческих команд.

Проблема

Бизнесу часто трудно описать задачу так, чтобы команда сразу поняла контекст, ограничения и ожидаемый результат. Из-за неполных вводных предложения студентов оказываются менее точными.

Решение

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

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

  1. Бизнес создаёт черновик с кратким описанием.
  2. AI задаёт уточняющие вопросы.
  3. AI формирует редактируемую карточку задачи.
  4. Backend рассчитывает рейтинг готовности.
  5. Бизнес дополняет карточку и сохраняет изменения.
  6. Бизнес подтверждает и публикует задачу.
  7. Студент видит задачу в каталоге.
  8. Студент отправляет предложение.
  9. Бизнес вручную принимает или отклоняет предложение.

Реализовано

  • REST API на Go и стандартном net/http.
  • SQLite через database/sql и modernc.org/sqlite.
  • Инициализация схемы и опциональные идемпотентные demo-данные.
  • Создание, редактирование, подтверждение и публикация задач.
  • Каталог опубликованных задач с фильтрами по теме, уровню и рейтингу.
  • AI endpoints для вопросов и карточки задачи.
  • Создание и просмотр предложений команд.
  • Независимое принятие или отклонение каждого предложения.
  • Русский пользовательский интерфейс на React.

Геймификация

Рейтинг готовности рассчитывается backend по шкале 0–100:

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

Уровни: 0–39 — черновик, 40–69 — рабочая, 70–89 — готовая, 90–100 — приоритетная. Низкий рейтинг не скрывает опубликованную задачу из каталога.

AI

  • POST /api/ai/questions возвращает 3–5 уточняющих вопросов.
  • POST /api/ai/card возвращает карточку из 11 строковых полей задачи.
  • AI не придумывает неподтверждённые факты и не рассчитывает рейтинг.
  • Карточка остаётся редактируемой человеком.
  • X-AI-Mode: live или X-AI-Mode: fallback показывает фактический режим ответа.
  • При отсутствии ключа или недоступности провайдера используется явный fallback без внешнего API-вызова.

Архитектура

React frontend
      |
      v
Go backend + SQLite
      |
      +-- tasks / rating / catalog / proposals
      |
      +-- AI module
             |
             v
         OpenAI provider

backend/ и ai/ — отдельные Go-модули. При запуске backend/cmd/server AI-модуль подключается к общему net/http серверу.

Технологии

  • Go 1.25+
  • net/http
  • database/sql
  • SQLite через modernc.org/sqlite
  • React 19
  • Vite 7
  • стандартный fetch API

Структура проекта

backend/   Go API, SQLite, rating, catalog and proposals
ai/        Go AI service, validation and fallback provider flow
frontend/  React/Vite client
docs/      jury demo scenario

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

В PowerShell из корня проекта:

Set-Location .\backend
$env:AI_FORCE_FALLBACK = 'true'
$env:SEED_DEMO_DATA = 'true'
go run ./cmd/server

Backend слушает http://localhost:8080. В отдельном PowerShell:

Set-Location .\frontend
npm install
Copy-Item .env.example .env -ErrorAction SilentlyContinue
npm run dev

Frontend будет доступен по адресу http://localhost:5173. Полный сценарий для жюри находится в docs/demo-script.md.

Environment variables

Backend читает переменные процесса; dotenv-файлы автоматически не загружаются:

ПеременнаяОбязательностьНазначение
DATABASE_PATHнеобязательнопуть к SQLite, по умолчанию ./data/app.db
FRONTEND_ORIGINнеобязательноразрешённый origin, по умолчанию http://localhost:5173
SEED_DEMO_DATAнеобязательноtrue включает идемпотентные demo-данные
OPENAI_API_KEYнеобязательносерверный ключ провайдера; без него используется fallback
OPENAI_MODELнеобязательномодель провайдера; без неё используется fallback
AI_TIMEOUT_SECONDSнеобязательноtimeout AI, по умолчанию 15
AI_MAX_ATTEMPTSнеобязательночисло попыток AI, по умолчанию 2
AI_FORCE_FALLBACKнеобязательноtrue запрещает обращения к провайдеру

Frontend использует переменные сборки VITE_API_URL (по умолчанию http://localhost:8080), VITE_USE_MOCK (явный локальный режим без backend) и VITE_DEMO_TEAM_ID (по умолчанию 1).

Demo mode

Для демонстрации без API-ключа используйте:

$env:SEED_DEMO_DATA = 'true'
$env:AI_FORCE_FALLBACK = 'true'

Повторный запуск seed не дублирует задачи, команды и предложения.

Проверка

Введите Хотим автоматизировать работу склада, ответьте на вопросы AI, сохраните карточку, дополните поля, подтвердите и опубликуйте задачу. Затем откройте её в режиме студента, отправьте предложение и обработайте его в режиме бизнеса.

Тесты

Set-Location .\backend
go vet ./...
go test -count=1 ./...

Set-Location ..\ai
go vet ./...
go test -count=1 ./...

Set-Location ..\frontend
npm run build

В frontend нет отдельных lint- или test-скриптов.

API

  • GET /api/health
  • POST /api/tasks
  • GET /api/tasks
  • GET /api/tasks/{id}
  • PUT /api/tasks/{id}
  • GET /api/tasks/{id}/rating
  • POST /api/tasks/{id}/confirm
  • POST /api/tasks/{id}/publish
  • POST /api/tasks/{id}/proposals
  • GET /api/tasks/{id}/proposals
  • PATCH /api/proposals/{id}/status
  • POST /api/ai/questions
  • POST /api/ai/card

Ограничения

Это MVP без аутентификации, JWT, real-time чата, уведомлений, календаря, файлового хранилища и автоматического назначения команд. Идентификатор команды вводится в форме; отдельного team-list endpoint нет. Fallback AI задаёт вопросы и сохраняет исходное описание, а неизвестные поля карточки заполняются человеком.

Команда

Состав команды и роли не указаны в текущем репозитории.

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

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

Adiyat Nurkenuly 19bekaryszhasuzak2007 4daniarulyabubakyr 2

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

  • 2026-09-23 17:44chore: remove generated files from repositoryAdiyat Nurkenuly
  • 2026-09-23 17:36merge: integrate final hackathon projectAdiyat Nurkenuly
  • 2026-09-23 17:32chore: finalize project for hackathon demoAdiyat Nurkenuly
  • 2026-09-23 17:26chore: finalize project for hackathon demoAdiyat Nurkenuly
  • 2026-09-23 16:51fix(frontend): unify interface languageAdiyat Nurkenuly
  • 2026-09-23 16:23docs: document frontend setup and flowbekaryszhasuzak2007
  • 2026-09-23 16:23feat: add frontend applicationbekaryszhasuzak2007
  • 2026-09-23 16:19feat(integration): connect AI module to backendAdiyat Nurkenuly
Все коммиты (25)
  • 2026-09-23 16:06docs: document frontend setup and flowbekaryszhasuzak2007
  • 2026-09-23 16:04feat(ai): add validated task drafting module and handoff docsdaniarulyabubakyr
  • 2026-09-23 16:03feat: add frontend applicationbekaryszhasuzak2007
  • 2026-09-23 15:49feat(ai): add validated task drafting module and handoff docsdaniarulyabubakyr
  • 2026-09-23 15:38wip: save current progressAdiyat Nurkenuly
  • 2026-09-23 15:25chore(backend): finalize integration and demo readinessAdiyat Nurkenuly
  • 2026-09-23 15:14feat(seed): add deterministic demo dataAdiyat Nurkenuly
  • 2026-09-23 15:06feat(proposals): add manual business decisionAdiyat Nurkenuly
  • 2026-09-23 14:57feat(proposals): add team proposal submissionAdiyat Nurkenuly
  • 2026-09-23 14:45feat(catalog): add task catalog filters and sortingAdiyat Nurkenuly
  • 2026-09-23 14:39feat(tasks): add confirmation and publishing workflowAdiyat Nurkenuly
  • 2026-09-23 14:31feat(rating): add task readiness scoringAdiyat Nurkenuly
  • 2026-09-23 14:24feat(tasks): add editable task cardAdiyat Nurkenuly
  • 2026-09-23 14:19feat(tasks): add task draft creation and retrievalAdiyat Nurkenuly
  • 2026-09-23 13:50fix(server): handle server shutdown errorAdiyat Nurkenuly
  • 2026-09-23 13:45feat(database): add SQLite initializationAdiyat Nurkenuly
  • 2026-09-23 13:35chore(backend): bootstrap Go API serverAdiyat Nurkenuly
Структура репозитория (88 файлов)
.gitignore
README.md
ai/.env.example
ai/.gitignore
ai/PLAN.md
ai/README.md
ai/assets.go
ai/cmd/demo/main.go
ai/config.go
ai/config_test.go
ai/docs/demo.md
ai/docs/integration-checklist.md
ai/docs/integration.md
ai/docs/readme-section.md
ai/docs/test-results.md
ai/fallback.go
ai/fixtures_test.go
ai/go.mod
ai/grounding.go
ai/handlers.go
ai/handlers_test.go
ai/prompts/card.txt
ai/prompts/questions.txt
ai/provider.go
ai/provider_test.go
ai/run.ps1
ai/schemas/card.schema.json
ai/schemas/questions.schema.json
ai/service.go
ai/service_test.go
ai/testdata/cards.json
ai/testdata/drafts.json
ai/testdata/evaluation_cases.json
ai/testdata/proposals.json
ai/testdata/teams.json
ai/types.go
ai/validation.go
ai/validation_test.go
backend/.env.example
backend/.gitignore
backend/README.md
backend/cmd/server/main.go
backend/cmd/server/main_test.go
backend/go.mod
backend/go.sum
backend/internal/database/database.go
backend/internal/database/database_test.go
backend/internal/database/schema.go
backend/internal/httpapi/cors.go
backend/internal/httpapi/cors_test.go
backend/internal/httpapi/end_to_end_test.go
backend/internal/httpapi/proposal_handler.go
backend/internal/httpapi/proposal_status_handler.go
backend/internal/httpapi/proposal_status_handler_test.go
backend/internal/httpapi/router.go
backend/internal/httpapi/router_test.go
backend/internal/httpapi/task_handler.go
backend/internal/httpapi/task_handler_test.go
backend/internal/model/proposal.go
backend/internal/model/task.go
backend/internal/model/team.go
backend/internal/rating/rating.go
backend/internal/rating/rating_test.go
backend/internal/repository/proposal_repository.go
backend/internal/repository/proposal_repository_test.go
backend/internal/repository/task_list_test.go
backend/internal/repository/task_repository.go
backend/internal/repository/task_repository_test.go
backend/internal/repository/team_repository.go
backend/internal/repository/team_repository_test.go
backend/internal/seed/seed.go
backend/internal/seed/seed_test.go
docs/demo-script.md
frontend/.env.example
frontend/.gitignore
frontend/README.md
frontend/index.html
frontend/integration.md
frontend/package-lock.json
frontend/package.json
frontend/src/App.jsx
frontend/src/api/ai.js
frontend/src/api/client.js
frontend/src/api/proposals.js
frontend/src/api/tasks.js
frontend/src/data.js
frontend/src/main.jsx
frontend/src/style.css
Ветки (5)

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

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

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