AAYMA
RU
Войти

Akim AI

AI-симулятор городских решений «Аким на 5 часов»: выбор пяти инициатив, детерминированная поквартальная симуляция Q0–Q8, Score, grounded AI Advisor…

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

О проекте

Команда: HelpMake-ID
Кейс HackAlem.ai: Спецтрек — Astana Innovations
Стадия: Доведённый продукт

Задача кейса: «Аким на 5 часов»: городской симулятор, распределяющий бюджет по 5 направлениям и 5 районам

Суть

AI-симулятор городских решений «Аким на 5 часов»: выбор пяти инициатив, детерминированная поквартальная симуляция Q0–Q8, Score, grounded AI Advisor, сохранение и сравнение сценариев в PostgreSQL. Есть развёрнутый продукт.

Как устроено

FastAPI-валидатор проверяет сценарий (ровно 5 мер, бюджет 100, несовместимости). Simulation Engine считает эффекты с учётом лагов и синергий по кварталам Q0–Q8 и итоговый Score = 0.7·D_avg + 0.3·min(D_d) − N_crit. AI Advisor работает через OpenAI-совместимый Chat Completions: получает только подготовленные бэкендом факты и объясняет результат, отвечает на вопросы и рекомендует альтернативы, которые заранее прошли валидатор и симуляцию. Сценарии сохраняются в PostgreSQL (SQLAlchemy Core, asyncpg, Alembic) и сравниваются во фронтенде на React/Vite.

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

  • deterministic quarterly simulation Q0–Q8
  • lag and synergy modeling
  • grounded AI advisor
  • pre-validated alternative recommendations
  • scenario persistence and comparison
  • dataset_hash reproducibility

Особенности

Продукт развёрнут (helpmake-id.live, Swagger на api.helpmake-id.live), есть поквартальная динамика Q0–Q8. AI рекомендует только альтернативы, заранее прошедшие симуляцию.

Стек

React 19 · TypeScript · Vite · Python 3.12 · FastAPI · Pydantic · SQLAlchemy Core · asyncpg · PostgreSQL 17 · Alembic · Docker Compose · Nginx · pytest · Ruff

Модели

OpenAI-compatible Chat Completions


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

README

README.md

Akim AI — «Аким на 5 часов»

AI-симулятор городских управленческих решений для HackAlem AI 2026 · Astana Innovations

100 единиц бюджета · 5 игровых районов · 14 инициатив · только 5 решений

Akim AI помогает увидеть последствия управленческого сценария до его реализации: пользователь распределяет ограниченный бюджет, принимает пять решений, запускает детерминированную симуляцию и получает изменение районных показателей, Astana Quality of Life Score и объяснение основных компромиссов от AI Advisor.

Simulation Engine считает. AI объясняет. Человек принимает решение.

Ссылки


Проблема

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

Главная продуктовая задача Akim AI — дать пользователю возможность сравнивать управленческие сценарии и видеть их последствия и компромиссы на одной воспроизводимой модели.

Пользователь и ценность

Основные пользователи в рамках задания:

  • городской управленец;
  • аналитик;
  • пользователь симулятора.

Akim AI не заменяет управленца и не выдаёт AI-мнение за математический прогноз. Он разделяет ответственность:

  1. человек выбирает стратегию;
  2. Simulation Engine рассчитывает последствия;
  3. AI Advisor объясняет рассчитанный результат и помогает исследовать альтернативы.

Как работает продукт

Состояние города
      ↓
100 единиц бюджета
      ↓
5 управленческих решений
      ↓
Validator
      ↓
Deterministic Simulation Engine
      ↓
Before / After + Q0–Q8 + Quality of Life Score
      ↓
AI Advisor
      ↓
Объяснение / риски / компромиссы / альтернативы
      ↓
Новый сценарий или сравнение сценариев

Основной demo-flow

  1. Открыть Situation Center.
  2. Посмотреть исходное состояние пяти игровых районов.
  3. Выбрать ровно пять инициатив из M1–M14.
  4. Следить за бюджетом и пройти backend validation.
  5. Нажать Simulate.
  6. Получить Score и изменения районов Before / After.
  7. Посмотреть динамику Q0–Q8 с учётом lag.
  8. Получить AI-объяснение рассчитанного результата.
  9. Изменить стратегию или сохранить сценарии для сравнения.

Соответствие заданию HackAlem

Must Have

ТребованиеРеализация
Единый виртуальный бюджет100 единиц для всех сценариев
Решения по пяти направлениямТранспорт, экология/озеленение, социальная инфраструктура, безопасность, городской сервис
Пять управленческих решенийValidator требует ровно 5 инициатив
Автоматический контроль бюджетаBackend отклоняет невалидный сценарий
AI-анализ решений/advisor/explain
Astana Quality of Life ScoreДетерминированный scoring engine
Сильные стороны, риски и последствияGrounded AI Advisor
Решения меняют показателиEffects, lag, synergies и Q0–Q8
Другой набор решений → другой результатКаждый валидный сценарий пересчитывается Simulation Engine

Дополнительно реализовано

  • визуализация изменений районов;
  • поквартальная симуляция Q0–Q8;
  • AI-рекомендации по проверенным альтернативам;
  • вопросы к сценарию через AI Advisor;
  • сохранение сценариев;
  • сравнение двух сценариев;
  • PostgreSQL persistence;
  • воспроизводимый backend demo-flow.

Не реализованные optional-функции — неожиданные городские события и автоматическая генерация презентации — не требуются для основного сценария MVP.


Ключевые возможности

🏙️ Situation Center

Показывает пять игровых районов, их исходные показатели, бюджет и доступные инициативы.

💰 Управление ограниченным бюджетом

Пользователь получает 100 условных единиц и должен принять ровно пять решений.

🧮 Детерминированная симуляция

Все числовые результаты рассчитываются backend-кодом. LLM не рассчитывает официальный Score.

⏱️ Временная динамика

Simulation Engine возвращает Q0–Q8 и учитывает implementation lag каждой инициативы.

🤖 Grounded AI Advisor

AI работает только с подготовленными backend-фактами и проверенными альтернативами. При недоступности AI числовая симуляция продолжает работать.

🔄 Сохранение и сравнение сценариев

Сценарии сохраняются в PostgreSQL и могут сравниваться по Score, бюджету, районам, показателям и критическим парам.


Архитектура

┌────────────────────────────────────┐
│ Frontend — React + TypeScript      │
│ Situation Center / Decisions / UI  │
└─────────────────┬──────────────────┘
                  │ REST API
                  ▼
┌────────────────────────────────────┐
│ Backend — FastAPI                  │
│ Validator / API / Scenario layer   │
└───────────┬───────────────┬────────┘
            │               │
            ▼               ▼
┌──────────────────┐  ┌──────────────────┐
│ Simulation Engine│  │ AI Advisor       │
│ deterministic    │  │ grounded AI      │
└────────┬─────────┘  └────────┬─────────┘
         │                     │
         └──────────┬──────────┘
                    ▼
          Structured Result
                    │
          ┌─────────┴─────────┐
          ▼                   ▼
     Frontend UI          PostgreSQL

Почему AI отделён от математики

AI не является источником числовой истины. Перед вызовом AI backend проверяет актуальность результата и формирует ограниченный набор фактов. Рекомендации строятся только из кандидатов, которые предварительно прошли Validator и Simulation Engine.

Это делает систему:

  • воспроизводимой;
  • тестируемой;
  • устойчивой к числовым галлюцинациям;
  • работоспособной даже при недоступности AI provider.

Подробнее: AI Advisor V1.


Датасет и модель

Проект использует предоставленный для хакатона синтетический датасет, не содержащий персональных или ограниченных данных.

  • 5 игровых районов;
  • 10 индикаторов;
  • 14 инициатив;
  • бюджет 100;
  • горизонт H = 8 кварталов;
  • эффекты, lag, synergies и incompatibilities.

Версия датасета: 1.1.0. Backend также публикует dataset_hash для контроля воспроизводимости.

Astana Quality of Life Score

Для меры с лагом L реализованная доля эффекта в квартале q определяется моделью симуляции. Итоговый Score:

Score = 0.7 × D_avg
      + 0.3 × min(D_d)
      - N_crit

где:

  • D_avg — средневзвешенный районный Score;
  • min(D_d) — Score слабейшего района;
  • N_crit — число пар «район × показатель» со значением строго ниже 40.

Проверенный baseline: 52.56.

Подробное описание: docs/district-dataset.md.


Технологический стек

Frontend

  • React 19
  • TypeScript
  • Vite

Backend

  • Python 3.12+
  • FastAPI
  • Pydantic
  • SQLAlchemy Core
  • asyncpg

Database

  • PostgreSQL 17
  • Alembic migrations

AI

  • OpenAI-compatible Chat Completions API
  • Grounded Advisor contract

QA / Infrastructure

  • pytest / pytest-cov
  • Ruff
  • Docker / Docker Compose
  • Nginx

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

/
├── frontend/              # React + TypeScript Situation Center
├── backend/               # FastAPI, Simulation Engine, AI, tests
├── docs/                  # ТЗ, dataset, AI contract, architecture
├── design/                # UI/UX design materials
├── deploy/                # Deployment scripts/config examples
├── openapi.json           # API schema
└── README.md

Локальный запуск всего проекта

Подробные шаги и проверка запуска: гайд по локальному запуску. В приватном репозитории уже есть backend/.env с настройками для команды; копировать .env.example не нужно.

Требования

  • Docker + Docker Compose
  • Python 3.12+ для локальной backend-разработки
  • Node.js 20.19+ для frontend

1. Backend

cd backend
docker compose up --build -d

Backend: http://127.0.0.1:8000
Swagger: http://127.0.0.1:8000/docs

Для запуска вне Docker необходимо запустить PostgreSQL, задать DATABASE_URL, выполнить make migrate и make dev.

2. Frontend

Во втором терминале:

cd frontend
npm ci
npm run dev

Vite проксирует /api на локальный backend. Для другого backend можно задать AKIM_API_URL; для production build используется VITE_API_BASE_URL.


API v1

Метод и путьНазначение
GET /api/v1/healthПроверка процесса
GET /api/v1/readyПроверка датасета и PostgreSQL
GET /api/v1/dataРайоны, индикаторы, меры, правила, map anchors
POST /api/v1/simulateВалидация и расчёт Q0–Q8
POST /api/v1/advisor/explainОбъяснение результата
POST /api/v1/advisor/recommendПроверенные альтернативы
POST /api/v1/advisor/askОтвет на вопрос по фактам сценария
POST /api/v1/scenariosСохранить пересчитанный сценарий
GET /api/v1/scenariosПолучить список сценариев
GET /api/v1/scenarios/{id}Получить сценарий
DELETE /api/v1/scenarios/{id}Удалить сценарий
POST /api/v1/scenarios/compareСравнить два сценария

Полная схема: openapi.json или Swagger работающего API.

Контрольный пример

{
  "decisions": [
    {"measure_id": "M7", "district_code": "nura"},
    {"measure_id": "M8", "district_code": "nura"},
    {"measure_id": "M10", "district_code": "nura"},
    {"measure_id": "M12"},
    {"measure_id": "M5", "district_code": "saryarka"}
  ]
}

Ожидаемые ключевые поля:

valid = true
spent = 95
remaining_budget = 5
baseline_score = 52.56
score = 56.54
Q0 = 52.56
Q8 = 56.54

Проверка и воспроизводимость

Backend

cd backend
make check
make test

Coverage gate: 90%.

Frontend

cd frontend
npm ci
npm run build

Автоматический backend demo-flow

При запущенном backend:

cd backend
.venv/bin/python scripts/demo_flow.py

Скрипт проверяет /data, /simulate, маршруты Advisor, сохранение двух сценариев, чтение, сравнение и cleanup. Числовой flow работает даже без AI API.


AI и сторонние инструменты

В соответствии с требованиями хакатона команда раскрывает использование AI, сторонних библиотек и предоставленных материалов.

Инструмент / материалИспользование
ChatGPTProduct analysis, архитектура, документация, prompt design, QA
CodexПомощь в разработке и анализе кода
OpenAI-compatible APIRuntime AI Advisor
React / ReactDOMFrontend
Vite / TypeScriptFrontend build и типизация
FastAPI / PydanticBackend API и схемы
SQLAlchemy Core / asyncpgДоступ к PostgreSQL
PostgreSQL / AlembicХранение сценариев и миграции
pytest / RuffТестирование и качество кода
Docker / NginxСборка и deployment
HackAlem synthetic datasetИсточник данных и правил симуляции
Smart City materialsПредметный контекст и продуктовый reference
FigmaUI/UX design

AI-assisted разработка не меняет принцип источника истины: числовые результаты продукта определяет только Simulation Engine.


Команда и вклад

УчастникРольОсновной вклад
АнуарProduct / AI Logic / DocumentationProduct concept, scope, AI Advisor contract, README, product/AI QA, demo и pitch
ДамирBackend / AI / InfrastructureDataset, Validator, Simulation Engine, Score, API, AI integration, PostgreSQL, tests и deployment
ДарьяFrontend / UXSituation Center, React frontend, визуализация, API integration, UI/UX

Git history репозитория отражает вклад участников отдельными содержательными коммитами.


Потенциал развития

Текущий MVP уже разделяет математическую модель и AI-интерпретацию, поэтому архитектуру можно расширять без передачи LLM ответственности за расчёты.

Следующие возможные уровни:

  1. более развитое сравнение нескольких стратегий;
  2. goal-based AI recommendations;
  3. городские события с детерминированными эффектами;
  4. более богатая временная визуализация;
  5. подключение реальных открытых городских данных при наличии валидированного источника;
  6. GIS/digital-twin integration как отдельный будущий слой.

Эти направления являются roadmap, а не заявлением о текущей функциональности.


Ограничения MVP

  • Все городские показатели, стоимость и эффекты в текущем MVP синтетические.
  • Результат не является прогнозом реальной городской политики.
  • Карта использует условные illustrative anchors, а не официальные GIS-границы.
  • Учётных записей и приватных пользовательских сценариев в MVP нет.
  • AI может быть недоступен; математическая симуляция при этом продолжает работать.
  • Неожиданные городские события и автоматическая генерация презентации пока не реализованы.

Документация


Disclaimer

Akim AI — хакатонный прототип на синтетических данных. Он демонстрирует подход к scenario-based decision support и не должен интерпретироваться как официальный прогноз, рекомендация или производственная система городского управления.

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

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

EZDAMIR 15AnuarG 7Dariya 6

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

  • 2026-09-23 17:54Add configured local setup for judgesEZDAMIR
  • 2026-09-23 17:53Remove GitHub Actions workflows and document manual deploymentEZDAMIR
  • 2026-09-23 17:52docs: capture live README media and publish separate PNG and GIF assetsAnuarG
  • 2026-09-23 17:51docs: add reproducible capture of real website screenshots and GIFsAnuarG
  • 2026-09-23 17:50feat(frontend): integrate advisor recommendations and saved scenariosDariya
  • 2026-09-23 17:40Add guided interface and motion interactionsDariya
  • 2026-09-23 17:29Deploy frontend to public site via GitHub ActionsDariya
  • 2026-09-23 17:28feat(frontend): compare saved simulation scenariosDariya
Все коммиты (28)
  • 2026-09-23 17:26docs: finalize Russian hackathon README with live demoAnuarG
  • 2026-09-23 17:22Ground advisor explanations in verified simulation factsEZDAMIR
  • 2026-09-23 17:08Merge remote-tracking branch 'origin/main'EZDAMIR
  • 2026-09-23 17:07Move saved scenarios to PostgreSQL with Alembic migrationsEZDAMIR
  • 2026-09-23 17:06Add frontend connected to simulation APIDariya
  • 2026-09-23 16:38Merge remote-tracking branch 'origin/main'EZDAMIR
  • 2026-09-23 16:38Document AI provider configurationEZDAMIR
  • 2026-09-23 16:36Add scenario timeline, advisor routes, and saved scenariosEZDAMIR
  • 2026-09-23 16:08docs: record Akim AI architecture decisionsAnuarG
  • 2026-09-23 16:07docs: add evidence-based AI advisor specificationAnuarG
  • 2026-09-23 16:07docs: update Akim AI Level 1 architecture and statusAnuarG
  • 2026-09-23 15:46add docsEZDAMIR
  • 2026-09-23 15:46Implement Akim simulation API and deployment pipelineEZDAMIR
  • 2026-09-23 15:02Add Akim AI color concept Figma fileDariya
  • 2026-09-23 14:34Move all backend files into backend/ directoryEZDAMIR
  • 2026-09-23 14:31Collapse backend/src/ into backend/EZDAMIR
  • 2026-09-23 14:27Move backend source into backend/ directoryEZDAMIR
  • 2026-09-23 14:21Add FastAPI async backend starter kitEZDAMIR
  • 2026-09-23 14:21Update .gitignore and untrack IDE filesEZDAMIR
  • 2026-09-23 14:06docs: add Akim AI product concept and simulation READMEAnuarG
Структура репозитория (101 файлов)
.gitignore
README.md
backend/.dockerignore
backend/.env
backend/.env.example
backend/AGENT.md
backend/CLAUDE.md
backend/Dockerfile
backend/Makefile
backend/alembic.ini
backend/api/AGENT.md
backend/api/CLAUDE.md
backend/api/__init__.py
backend/api/controllers/AGENT.md
backend/api/controllers/CLAUDE.md
backend/api/controllers/__init__.py
backend/api/controllers/advisor.py
backend/api/controllers/dataset.py
backend/api/controllers/scenario.py
backend/api/controllers/scoring.py
backend/api/controllers/simulation.py
backend/api/controllers/validator.py
backend/api/core/__init__.py
backend/api/core/postgres.py
backend/api/main.py
backend/api/models/AGENT.md
backend/api/models/CLAUDE.md
backend/api/models/__init__.py
backend/api/models/scenario.py
backend/api/permission.py
backend/api/schemas/AGENT.md
backend/api/schemas/CLAUDE.md
backend/api/schemas/__init__.py
backend/api/schemas/scenario.py
backend/api/schemas/simulation.py
backend/api/services/AGENT.md
backend/api/services/CLAUDE.md
backend/api/v1/__init__.py
backend/api/v1/endpoints/AGENT.md
backend/api/v1/endpoints/CLAUDE.md
backend/api/v1/endpoints/__init__.py
backend/api/v1/endpoints/advisor.py
backend/api/v1/endpoints/data.py
backend/api/v1/endpoints/scenarios.py
backend/api/v1/endpoints/simulation.py
backend/api/v1/routers.py
backend/api/webhooks/AGENT.md
backend/api/webhooks/CLAUDE.md
backend/api/webhooks/__init__.py
backend/api/webhooks/advisor.py
backend/data/__init__.py
backend/data/city_data.json
backend/data/measures.json
backend/data/rules.json
backend/docker-compose.yml
backend/docs/development-log.md
backend/migrations/postgres/AGENT.md
backend/migrations/postgres/CLAUDE.md
backend/migrations/postgres/env.py
backend/migrations/postgres/script.py.mako
backend/migrations/postgres/versions/.gitkeep
backend/migrations/postgres/versions/20260923_1202_create_saved_scenarios.py
backend/pyproject.toml
backend/scripts/demo_flow.py
backend/tests/__init__.py
backend/tests/conftest.py
backend/tests/test_advisor.py
backend/tests/test_advisor_new.py
backend/tests/test_api.py
backend/tests/test_scenarios.py
backend/tests/test_simulation.py
deploy/deploy.sh
deploy/env.example
design/Akim AI — Цветовая концепция.fig
docs/AI_ADVISOR.md
docs/DECISIONS.md
docs/deployment.md
docs/district-dataset.md
docs/local-setup.md
docs/task-brief.md
frontend/.dockerignore
frontend/Dockerfile
frontend/README.md
frontend/index.html
frontend/nginx.conf
frontend/package-lock.json
frontend/package.json
frontend/src/ExperienceLayer.tsx
frontend/src/RecommendationPanel.tsx
frontend/src/ResultEvidence.tsx
frontend/src/ScenarioComparison.tsx
frontend/src/api.ts
frontend/src/comparison.ts
frontend/src/experience.css
frontend/src/main.tsx
frontend/src/styles.css
frontend/src/types.ts
frontend/tsconfig.json
frontend/vite.config.ts
openapi.json
scripts/capture-readme-media.py

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

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

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