AAYMA
RU
Войти

WindCast Agent

Система прогноза выработки ветропарка из двух турбин на 24 или 48 часов.

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

О проекте

Команда: egin.ai
Кейс HackAlem.ai: Энергетика — Самрук-Казына
Стадия: Рабочий MVP

Задача кейса: AI-агент, прогнозирующий выработку ветровой электростанции по погодным данным

Суть

Система прогноза выработки ветропарка из двух турбин на 24 или 48 часов. По прогнозу она считает выручку, штраф за дисбаланс и уровень риска и выдаёт рекомендацию оператору, а AI-агент объясняет результат.

Как устроено

Исторические CSV турбин загружаются в SQLite и проходят проверку качества. По ним калибруется power curve с расчётом MAE/RMSE. Прогноз ветра берётся из Open-Meteo Single Runs API и переводится в мощность по калиброванной кривой, модель проверяется walk-forward симуляцией на архивной погоде. Модуль business impact считает выработку, выручку, потенциальный штраф, часы низкой уверенности и резкие изменения ветра. Агентный цикл на OpenAI Responses API с инструментами над датасетом даёт структурированное объяснение, есть детерминированный fallback.

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

  • калибровка power curve
  • walk-forward validation
  • MAE/RMSE
  • agent loop с инструментами
  • расчёт штрафа за дисбаланс

Особенности

Прогноз мощности переводится в бизнес-показатели: выручку, штраф за дисбаланс и риск с рекомендацией оператору. Прогноз проверяется walk-forward на архивных прогнозах погоды. Интерфейс переведён на русский, английский и казахский.

Стек

TypeScript · React 19 · Vite · Tailwind CSS · i18next · Express 5 · Node.js SQLite · Open-Meteo API

Модели

OpenAI Responses API


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

README

README.md

WindCast Agent

WindCast Agent — система прогнозирования генерации ветропарка, которая переводит прогноз ветра в бизнес-решение: ожидаемую выработку, выручку, риск дисбаланса и рекомендацию для оператора.

Подробный рассказ для жюри: docs/README.md.

Результат интерфейса

WindCast AI dashboard

Почему это важно

Прогноз погоды не показывает, сколько энергии реально попадёт в сеть и сколько будет стоить ошибка. WindCast Agent объединяет исторические данные турбин, прогноз ветра и коммерческие параметры, чтобы заранее подготовить план поставки и резерв.

Что умеет продукт

  • прогнозировать мощность по двум турбинам на 24 или 48 часов;
  • проверять качество входных CSV-данных;
  • калибровать power curve и показывать MAE/RMSE;
  • рассчитывать выработку, выручку и потенциальный штраф;
  • находить часы низкой уверенности и резкие изменения ветра;
  • выдавать уровень риска и понятную операционную рекомендацию;
  • объяснять прогноз через AI или надёжный детерминированный fallback;
  • проверять модель на исторических данных через walk-forward simulation.

Технологии

Frontend

React 19.1.0, React DOM 19.1.0, TypeScript ~5.8.3, Vite ^6.3.5, React Router DOM ^7.18.4, Axios ^1.8.4, Tailwind CSS ^3.4.17, i18next ^26.4.2, react-i18next ^17.0.15, lucide-react ^0.511.0, @radix-ui/react-slot ^1.2.3, class-variance-authority ^0.7.1, clsx ^2.1.1, tailwind-merge ^3.3.0.

Инструменты: @vitejs/plugin-react ^4.5.2, ESLint ^9.29.0, @eslint/js ^9.29.0, typescript-eslint ^8.34.0, eslint-plugin-react-hooks ^5.2.0, eslint-plugin-react-refresh ^0.4.20, @types/node ^22.15.30, @types/react ^19.1.8, @types/react-dom ^19.1.6, PostCSS ^8.5.4, Autoprefixer ^10.4.21, globals ^15.15.0.

Backend

Express ^5.1.0, CORS ^2.8.5, dotenv ^16.5.0, Multer ^2.4.0, TypeScript ^5.8.3, встроенный Node.js SQLite, Open-Meteo Single Runs API и OpenAI Responses API.

Инструменты: tsx ^4.19.4, @types/cors ^2.8.17, @types/express ^5.0.1, @types/multer ^2.2.0, @types/node ^22.15.30.

Запуск проекта

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

cd frontend
npm install
npm run dev
cd backend
npm install
copy .env.example .env
npm run dev

Конфигурация берётся из примеров:

  • backend/.env.example — порт, координаты турбин, OpenAI, Open-Meteo и коммерческие значения;
  • frontend/.env.example — адрес backend через VITE_API_URL.

Frontend: http://localhost:5173 API: http://localhost:3000/api/health

API

Основной бизнес-результат возвращает POST /api/wind-farm/business-impact. Остальные маршруты и формат ответа описаны в docs/README.md.

Не добавляйте .env, API-ключи и другие секреты в Git.

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

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

jupiteror 35

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

  • 2026-09-23 17:49test: add frontend localization test and dashboard screenshotjupiteror
  • 2026-09-23 17:46feat: localize dataset upload controlsjupiteror
  • 2026-09-23 17:42docs: add project overview and hackathon demo guidejupiteror
  • 2026-09-23 17:40merge: make walk-forward demo-readyjupiteror
  • 2026-09-23 17:40fix: keep walk-forward forecasts without actual test datajupiteror
  • 2026-09-23 17:31merge: integrate dataset upload and archival weather fixjupiteror
  • 2026-09-23 17:31feat: add sqlite dataset upload and archival run sourcejupiteror
  • 2026-09-23 17:20merge: integrate frontend operations pagesjupiteror
Все коммиты (35)
  • 2026-09-23 17:19feat: add frontend operations pages and app routerjupiteror
  • 2026-09-23 17:12merge: integrate frontend localizationjupiteror
  • 2026-09-23 17:11feat: add ru en kk frontend localizationjupiteror
  • 2026-09-23 17:04fix: support calibration debugging and validate port envjupiteror
  • 2026-09-23 17:00merge: integrate wind farm frontend dashboardjupiteror
  • 2026-09-23 16:59feat: add wind farm forecast dashboardjupiteror
  • 2026-09-23 16:48merge: align forecast window with issue datejupiteror
  • 2026-09-23 16:48fix: start forecasts after issue datejupiteror
  • 2026-09-23 16:43merge: enforce 24 to 48 hour forecast contractjupiteror
  • 2026-09-23 16:43fix: enforce complete 24 to 48 hour forecastsjupiteror
  • 2026-09-23 16:38fix: harden dataset and walk-forward routesjupiteror
  • 2026-09-23 16:33merge: integrate wind farm business impact featurejupiteror
  • 2026-09-23 16:32feat: add wind farm business impact APIjupiteror
  • 2026-09-23 16:20chore: configure API endpoints through envjupiteror
  • 2026-09-23 16:03fix: return structured OpenAI agent analysisjupiteror
  • 2026-09-23 15:56merge: integrate agent explanation featurejupiteror
  • 2026-09-23 15:54feat: add agentic forecast explanation loopjupiteror
  • 2026-09-23 15:42merge: integrate archival weather simulation featurejupiteror
  • 2026-09-23 15:42feat: add archival weather walk-forward simulationjupiteror
  • 2026-09-23 15:26chore: record calibration runjupiteror
  • 2026-09-23 15:25merge: integrate power curve calibration featurejupiteror
  • 2026-09-23 15:20feat: add power curve calibration modeljupiteror
  • 2026-09-23 15:11fix: resolve env and dataset path bugs #1jupiteror
  • 2026-09-23 14:58merge: integrate dataset loading featurejupiteror
  • 2026-09-23 14:55chore: add backend startup loggerjupiteror
  • 2026-09-23 14:45feat: add historical dataset ingestion APIjupiteror
  • 2026-09-23 14:10feat: scaffold frontend and backend applicationsjupiteror
Структура репозитория (85 файлов)
.codex/skills/auto-commit-push/SKILL.md
.codex/skills/backend-setup/SKILL.md
.codex/skills/branch-workflow/SKILL.md
.codex/skills/scoped-context/SKILL.md
.codex/skills/shared-client-instance/SKILL.md
.codex/skills/strict-typescript/SKILL.md
.gitignore
AGENTS.md
README.md
backend/.env.example
backend/AGENTS.md
backend/package-lock.json
backend/package.json
backend/src/agent/llm.ts
backend/src/agent/loop.ts
backend/src/agent/prompts.ts
backend/src/agent/tools/dataset.ts
backend/src/agent/types.ts
backend/src/business/impact.ts
backend/src/business/types.ts
backend/src/config/forecast.ts
backend/src/config/turbines.ts
backend/src/data/calibration-log.json
backend/src/index.ts
backend/src/logger.ts
backend/src/models/metrics.ts
backend/src/models/powerCurve.ts
backend/src/models/types.ts
backend/src/routes/agent.ts
backend/src/routes/businessImpact.ts
backend/src/routes/calibration.ts
backend/src/routes/dataset.ts
backend/src/routes/datasetUpload.ts
backend/src/routes/walkForward.ts
backend/src/services/calibration.ts
backend/src/services/calibrationLog.ts
backend/src/services/walkForward.ts
backend/src/storage/datasetDb.ts
backend/src/tests/agent.test.ts
backend/src/weather/client.ts
backend/src/weather/types.ts
backend/tsconfig.json
docs/README.md
docs/dashboard-result.png
frontend/.env.example
frontend/AGENTS.md
frontend/components.json
frontend/index.html
frontend/package-lock.json
frontend/package.json
frontend/postcss.config.js
frontend/src/app/App.tsx
frontend/src/app/providers/AppProvider.tsx
frontend/src/app/router.tsx
frontend/src/components/ui/button.tsx
frontend/src/components/ui/card.tsx
frontend/src/components/ui/input.tsx
frontend/src/entities/operations/model/types.ts
frontend/src/entities/wind-farm/model/types.ts
frontend/src/features/dataset-upload/ui/DatasetDropzone.tsx
frontend/src/features/forecast-run/model/types.ts
frontend/src/features/forecast-run/ui/ForecastForm.tsx
frontend/src/index.css
frontend/src/lib/api.ts
frontend/src/lib/utils.ts
frontend/src/main.tsx
frontend/src/pages/calibration/ui/CalibrationPage.tsx
frontend/src/pages/dashboard/ui/DashboardPage.tsx
frontend/src/pages/data-quality/ui/DataQualityPage.tsx
frontend/src/shared/api/operations.ts
frontend/src/shared/api/windFarm.ts
frontend/src/shared/i18n/i18n.test.ts
frontend/src/shared/i18n/index.ts
frontend/src/shared/i18n/locales/en/translate.json
frontend/src/shared/i18n/locales/kk/translate.json
frontend/src/shared/i18n/locales/ru/translate.json
frontend/src/vite-env.d.ts
frontend/src/widgets/app-shell/ui/AppShell.tsx
frontend/src/widgets/forecast-dashboard/ui/HourlyForecastChart.tsx
frontend/src/widgets/forecast-dashboard/ui/WindFarmDashboard.tsx
frontend/tailwind.config.ts
frontend/tsconfig.app.json
frontend/tsconfig.json
frontend/tsconfig.node.json
frontend/vite.config.ts
Ветки (13)

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

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

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