AAYMA
RU
Войти

Аким на 5 часов

Городской симулятор для Астаны: игрок распределяет бюджет по мерам и 5 районам, получает Astana Quality of Life Score, городские события, лидерборд…

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

О проекте

Команда: ZhanAi
Кейс HackAlem.ai: Спецтрек — Astana Innovations
Стадия: Рабочий MVP

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

Суть

Городской симулятор для Астаны: игрок распределяет бюджет по мерам и 5 районам, получает Astana Quality of Life Score, городские события, лидерборд и AI-объяснение компромиссов. Карта районов строится по границам OpenStreetMap.

Как устроено

Бэкенд на Python загружает districts.json, measures.json и rules.json. simulator.py считает эффект плана, validator.py проверяет ограничения, optimizer.py перебором ищет лучший план, events.py генерирует городские события. AI-агент на OpenAI function calling вызывает инструменты движка и объясняет компромиссы, по коммитам для объяснений выбрана «GPT-6 Sol». Фронтенд на React/TypeScript показывает каталог мер, портфель, интерактивную карту районов, панель Score и AI.

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

  • симуляция эффектов мер
  • полный перебор (exhaustive optimizer)
  • OpenAI function calling
  • городские события
  • лидерборд
  • GeoJSON OpenStreetMap

Особенности

Оптимальный план ищется полным перебором, и с ним можно сравнить план игрока. Агент с инструментами поверх детерминированного движка. Реальные границы 5 районов Астаны из OSM. В репозитории хранятся версии продукта v1 и v2.

Стек

Python · React · TypeScript · Vite · GeoJSON

Модели

GPT-6 Sol (OpenAI)


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

README

README.md

Аким на 5 часов — HackAlem AI

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

Актуальная версия продукта — product.v2/. Там README, запуск одной командой и документация для жюри.

cd product.v2
./scripts/setup.sh   # Python ≥3.10, Node ≥20
./scripts/start.sh   # http://127.0.0.1:8000
ПапкаЧто это
product.v2/Актуальная версия: редизайн каталога, Score и AI-панели, AI-агент с инструментами, улучшения во время событий, исправления по QA
product.v1/Первая собранная версия: бэкенд akim-engine + интерфейс claude.front + карта Astana Scheme
claude.front/Исходная версия интерфейса (до интеграции)
Astana Scheme/Интерактивная схема 5 районов Астаны по границам OpenStreetMap
Доки/Условие задачи, датасет районов, план работ
Звёзды
⭐ 0
Форки
0
Язык
TypeScript
Последний push
в прошлом месяце
Коммиты
23
Авторы
2
Файлы
184
Ветки
5

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

Akezhan 14Codex 9

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

  • 2026-09-23 17:43docs(product.v2): fresh screenshot and README scenario for the redesigned UIAkezhan
  • 2026-09-23 17:38feat(product.v2): redesigned catalog, Score and AI panels; QA fixes; improve during eventsAkezhan
  • 2026-09-23 17:03Merge remote-tracking branch 'origin/main' into codex/akim-unified-uxCodex
  • 2026-09-23 16:53style(map): match Astana Scheme palette and typographyCodex
  • 2026-09-23 16:44feat(product.v1): tool-using AI agent on OpenAI function callingAkezhan
  • 2026-09-23 16:35fix(product.v1): colored Astana districts, no page dimming on selectAkezhan
  • 2026-09-23 16:27feat(product.v1): assemble full Akim simulator productAkezhan
  • 2026-09-23 16:25feat(map): integrate Astana Scheme into simulatorCodex
Все коммиты (23)
  • 2026-09-23 16:15chore: normalize text line endings for Windows and LinuxCodex
  • 2026-09-23 16:15feat: integrate Claude UI with engine and accessible map planningCodex
  • 2026-09-23 16:15Merge remote-tracking branch 'origin/main' into codex/akim-unified-uxCodex
  • 2026-09-23 16:00feat(astana-scheme): add interactive Astana districts schemeAkezhan
  • 2026-09-23 15:44Merge remote-tracking branch 'origin/codex/akim-engine' into codex/akim-unified-uxCodex
  • 2026-09-23 15:36feat(claude.front): add the Akim simulator frontend skeletonAkezhan
  • 2026-09-23 15:03feat: add React dashboard design previewAkezhan
  • 2026-09-23 14:52docs: add frontend setup, demo and verified acceptance checklistCodex
  • 2026-09-23 14:52feat(ui): build Akim simulator interface with explicit demo and API integrationCodex
  • 2026-09-23 14:49chore: use GPT-6 Sol for Akim explanationsAkezhan
  • 2026-09-23 14:42feat: add city events leaderboard and brief exportAkezhan
  • 2026-09-23 14:36feat: implement Akim simulation API and exhaustive optimizerAkezhan
  • 2026-09-23 14:21docs: keep only the Akim plan, spec and dataset in ДокиAkezhan
  • 2026-09-23 14:15docs: review Akim plan, add specs and reference engineAkezhan
  • 2026-09-23 14:04docs: add five-hour Akim plan for two participantsAkezhan
Структура репозитория (184 файлов)
Astana Scheme/README.md
Astana Scheme/astana_districts.geojson
Astana Scheme/index.html
README.md
claude.front/.env.example
claude.front/.gitignore
claude.front/README.md
claude.front/index.html
claude.front/package-lock.json
claude.front/package.json
claude.front/src/App.tsx
claude.front/src/api/http.ts
claude.front/src/api/index.ts
claude.front/src/api/mock/engine.ts
claude.front/src/api/mock/index.ts
claude.front/src/api/types.ts
claude.front/src/components/Header.tsx
claude.front/src/components/LeaderboardDrawer.tsx
claude.front/src/components/catalog/Catalog.tsx
claude.front/src/components/city/CityMap.tsx
claude.front/src/components/city/DistrictDetail.tsx
claude.front/src/components/portfolio/Portfolio.tsx
claude.front/src/components/result/AiPanel.tsx
claude.front/src/components/result/EventCard.tsx
claude.front/src/components/result/ImproveCard.tsx
claude.front/src/components/result/ResultPanel.tsx
claude.front/src/components/ui.tsx
claude.front/src/data/dataset.ts
claude.front/src/index.css
claude.front/src/lib/availability.ts
claude.front/src/lib/format.ts
claude.front/src/lib/scales.ts
claude.front/src/lib/useCountUp.ts
claude.front/src/main.tsx
claude.front/src/state/usePlan.ts
claude.front/src/state/useSimulation.ts
claude.front/tsconfig.json
claude.front/vite.config.ts
product.v1/.env.example
product.v1/.gitignore
product.v1/README.md
product.v1/backend/app/__init__.py
product.v1/backend/app/agent.py
product.v1/backend/app/ai.py
product.v1/backend/app/data_loader.py
product.v1/backend/app/events.py
product.v1/backend/app/facts.py
product.v1/backend/app/leaderboard.py
product.v1/backend/app/main.py
product.v1/backend/app/optimizer.py
product.v1/backend/app/presentation.py
product.v1/backend/app/schemas.py
product.v1/backend/app/simulator.py
product.v1/backend/app/validator.py
product.v1/backend/data/districts.json
product.v1/backend/data/measures.json
product.v1/backend/data/rules.json
product.v1/backend/requirements.txt
product.v1/backend/tests/test_core.py
product.v1/docs/api-contract.md
product.v1/docs/architecture.md
product.v1/docs/criteria.md
product.v1/docs/demo-scenario.md
product.v1/docs/screenshot.png
product.v1/frontend/.env.example
product.v1/frontend/.gitignore
product.v1/frontend/README.md
product.v1/frontend/index.html
product.v1/frontend/package-lock.json
product.v1/frontend/package.json
product.v1/frontend/src/App.tsx
product.v1/frontend/src/api/adapter.ts
product.v1/frontend/src/api/http.ts
product.v1/frontend/src/api/index.ts
product.v1/frontend/src/api/mock/engine.ts
product.v1/frontend/src/api/mock/index.ts
product.v1/frontend/src/api/types.ts
product.v1/frontend/src/components/Header.tsx
product.v1/frontend/src/components/LeaderboardDrawer.tsx
product.v1/frontend/src/components/catalog/Catalog.tsx
product.v1/frontend/src/components/city/CityMap.tsx
product.v1/frontend/src/components/city/DistrictDetail.tsx
product.v1/frontend/src/components/portfolio/Portfolio.tsx
product.v1/frontend/src/components/result/AgentPanel.tsx
product.v1/frontend/src/components/result/AiPanel.tsx
product.v1/frontend/src/components/result/EventCard.tsx
product.v1/frontend/src/components/result/ImproveCard.tsx
product.v1/frontend/src/components/result/ResultPanel.tsx
product.v1/frontend/src/components/ui.tsx
product.v1/frontend/src/data/astanaGeometry.ts
product.v1/frontend/src/data/astana_districts.geojson
product.v1/frontend/src/data/dataset.ts
product.v1/frontend/src/index.css
product.v1/frontend/src/lib/availability.ts
product.v1/frontend/src/lib/format.ts
product.v1/frontend/src/lib/scales.ts
product.v1/frontend/src/lib/useCountUp.ts
product.v1/frontend/src/main.tsx
product.v1/frontend/src/state/usePlan.ts
product.v1/frontend/src/state/useSimulation.ts
product.v1/frontend/tsconfig.json
product.v1/frontend/vite.config.ts
product.v1/scripts/build_geometry.py
product.v1/scripts/dev.sh
product.v1/scripts/setup.sh
product.v1/scripts/start.sh
product.v1/scripts/test.sh
product.v2/.env.example
product.v2/.gitignore
product.v2/README.md
product.v2/backend/app/__init__.py
product.v2/backend/app/agent.py
product.v2/backend/app/ai.py
product.v2/backend/app/data_loader.py
product.v2/backend/app/events.py
product.v2/backend/app/facts.py
product.v2/backend/app/leaderboard.py
product.v2/backend/app/main.py
product.v2/backend/app/optimizer.py
product.v2/backend/app/presentation.py
product.v2/backend/app/schemas.py
product.v2/backend/app/simulator.py
product.v2/backend/app/validator.py
product.v2/backend/data/districts.json
product.v2/backend/data/measures.json
product.v2/backend/data/rules.json
product.v2/backend/requirements.txt
product.v2/backend/tests/test_core.py
product.v2/docs/api-contract.md
product.v2/docs/architecture.md
product.v2/docs/criteria.md
product.v2/docs/demo-scenario.md
product.v2/docs/screenshot.png
product.v2/frontend/.env.example
product.v2/frontend/.gitignore
product.v2/frontend/README.md
product.v2/frontend/index.html
product.v2/frontend/package-lock.json
product.v2/frontend/package.json
product.v2/frontend/src/App.tsx
product.v2/frontend/src/api/adapter.ts
product.v2/frontend/src/api/http.ts
product.v2/frontend/src/api/index.ts
product.v2/frontend/src/api/mock/engine.ts
product.v2/frontend/src/api/mock/index.ts
product.v2/frontend/src/api/types.ts
product.v2/frontend/src/components/Header.tsx
product.v2/frontend/src/components/LeaderboardDrawer.tsx
product.v2/frontend/src/components/MobileScoreBar.tsx
product.v2/frontend/src/components/catalog/Catalog.tsx
product.v2/frontend/src/components/catalog/FloatingHint.tsx
product.v2/frontend/src/components/catalog/MeasureCard.tsx
product.v2/frontend/src/components/catalog/pickers.tsx
product.v2/frontend/src/components/city/CityMap.tsx
product.v2/frontend/src/components/city/DistrictDetail.tsx
product.v2/frontend/src/components/portfolio/Portfolio.tsx
product.v2/frontend/src/components/result/AgentPanel.tsx
product.v2/frontend/src/components/result/AiPanel.tsx
product.v2/frontend/src/components/result/EventCard.tsx
product.v2/frontend/src/components/result/ImproveCard.tsx
product.v2/frontend/src/components/result/ResultPanel.tsx
product.v2/frontend/src/components/ui.tsx
product.v2/frontend/src/data/astanaGeometry.ts
product.v2/frontend/src/data/astana_districts.geojson
product.v2/frontend/src/data/dataset.ts
product.v2/frontend/src/index.css
product.v2/frontend/src/lib/availability.ts
product.v2/frontend/src/lib/format.ts
product.v2/frontend/src/lib/scales.ts
product.v2/frontend/src/lib/text.ts
product.v2/frontend/src/lib/useCountUp.ts
product.v2/frontend/src/main.tsx
product.v2/frontend/src/state/usePlan.ts
product.v2/frontend/src/state/useSimulation.ts
product.v2/frontend/tsconfig.json
product.v2/frontend/vite.config.ts
product.v2/scripts/build_geometry.py
product.v2/scripts/dev.sh
product.v2/scripts/setup.sh
product.v2/scripts/start.sh
product.v2/scripts/test.sh
Доки/HackAlem AI_ «Аким на 5 часов» - AI-симулятор управления городом.docx
Доки/plan-akim-2-people.md
Доки/Датасет районов.docx
Ветки (5)

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

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

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