О проекте
Команда: Shusauro
Кейс HackAlem.ai: Спецтрек — Astana Innovations
Стадия: Рабочий MVP
Задача кейса: «Аким на 5 часов»: городской симулятор, распределяющий бюджет по 5 направлениям и 5 районам
Суть
Игровой MVP городского симулятора: игрок принимает 5 решений в рамках бюджета 100 и получает детерминированный Quality of Life Score по 5 районам Астаны. После каждого решения AI пишет газетную реакцию, в конце AI-аналитик разбирает итог.
Как устроено
Python-движок backend/engine.py проверяет план (повторы, бюджет, не больше двух мер одного направления, конфликты) и считает эффект по формуле полный_эффект×(8−lag)/8 с синергиями на горизонте 8 кварталов. Итог: Score = 0.7×городской балл + 0.3×балл слабейшего района − число критических показателей (<40). FastAPI отдаёт preview и simulation. media_analysis.py собирает проверенные факты, на основе которых OpenAI генерирует негативный газетный выпуск и финальный анализ. Без ключа используются детерминированные тексты.
Ключевые решения
- deterministic simulation engine
- lag-weighted effects
- synergies
- population-weighted scoring
- AI Media Reaction Engine
Особенности
Геймификация через «газетную реакцию» на каждое решение: LLM пишет негативный выпуск прессы только по проверенным backend-фактам. Формула Score явно описана в README.
Стек
Python · FastAPI · Next.js · React · TypeScript · Tailwind CSS
Модели
OpenAI
Проект создан за 5 часов на финале хакатона HackAlem.ai (23 сентября 2026, Астана). Код — BAITC-Hacks/hack-4a8499ce-shusauro.
README
README.mdQala — «Аким на 5 часов»
Игровой MVP для HackAlem AI: выберите пять городских или районных мер и увидьте детерминированный расчёт Astana Quality of Life Score для пяти районов Астаны. Расчёт выполняет Python backend; OpenAI может только объяснять готовые результаты.
Что работает
- Бюджет 100 условных единиц, пять окончательных решений. После каждого решения появляется газетная реакция; после пятой игрок продолжает к итоговому расчёту.
- Городские меры применяются ко всем районам. Для районной меры сначала выберите район на карте.
- Каталог показывает стоимость, направление, тип, лаг, полный эффект, потенциальные синергии и несовместимости.
- Валидатор запрещает повтор меры, превышение бюджета, больше двух решений одного направления и конфликтующие решения.
- Backend учитывает лаг в горизонте 8 кварталов, синергии, ограничение показателей диапазоном 0–100, доли населения, слабейший район и критические показатели ниже 40.
- Один итоговый аналитический экран показывает Score, показатели «до / после», изменение по каждому району и выбранный план.
- AI Media Reaction Engine получает проверенные backend-факты и создаёт негативный газетный выпуск после каждого решения. Final AI Analyst получает готовый детерминированный результат и формирует один аналитический экран. Без OPENAI_API_KEY используются краткие детерминированные редакционные тексты и аналитическая сводка.
- Аккаунты и база данных не нужны. Данные синтетические.
Требования
- Node.js 20+
- Python 3.11+
Запуск в Windows PowerShell
Из корня репозитория откройте два терминала.
Терминал 1 — backend:
py -3.11 -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r backend\requirements.txt
Copy-Item backend\.env.example backend\.env
uvicorn backend.main:app --reload --port 8000
Терминал 2 — frontend:
npm install
npm run dev
Откройте http://localhost:3000. API доступно на http://localhost:8000; описание endpoint'ов FastAPI — http://localhost:8000/docs.
Чтобы включить AI-хронику, добавьте OPENAI_API_KEY в backend/.env и перезапустите backend. Ключ хранится только на сервере и не передаётся в браузер. Для симуляции и расчёта результата он не нужен.
Формула
Реализованный эффект меры равен полный эффект × (8 − lag) / 8. Синергия добавляется отдельно и не масштабируется лагом. Для каждого района рассчитывается взвешенная оценка по десяти показателям; городской балл — среднее по долям населения. Итог:
Score = 0.7 × городской балл + 0.3 × балл самого слабого района − критические показатели
Критическим считается каждый показатель района со значением строго ниже 40. Исходный Score в наборе данных — 52.56.
Структура
app/— Next.js, React, TypeScript, Tailwind CSS.backend/engine.py— набор синтетических данных, правила проверки и детерминированный движок.backend/main.py— FastAPI: dataset, preview, simulation, газетная реакция и итоговый анализ.backend/media_analysis.py— детерминированный сбор проверяемых фактов и media angles для редакционного narrative layer.design/— исходные черновики интерфейса.
Карта схематическая и предназначена для симуляции, а не для навигации или отображения точных административных границ.
Авторы коммитов
История коммитов
- 2026-09-23 17:39Add press reactions and final AI analysisshusauro
- 2026-09-23 16:41Build Qala city simulation MVPshusauro
- 2026-09-23 15:50Add MVP interface scaffoldshusauro
- 2026-09-23 14:56Add initial city simulator design draftshusauro
- 2026-09-23 13:37Add GLHF text fileshusauro
Структура репозитория (24 файлов)
.gitignore GLHF.txt README.md app/globals.css app/layout.tsx app/page.tsx backend/.env.example backend/__init__.py backend/engine.py backend/main.py backend/media_analysis.py backend/requirements.txt design/ОКНО меры.png design/ЧЕРНОВИК.txt design/окно списка мер.png design/основное меню.png eslint.config.mjs next-env.d.ts next.config.ts package-lock.json package.json postcss.config.mjs styles.css tsconfig.json
Обсуждение 0 комментариев
Войдите, чтобы комментироватьПока нет комментариев — будьте первым.