AAYMA
RU
Войти

WindAgent AI

AI-агент прогноза почасовой мощности двух ветротурбин Goldwind (T1/T2, 5 МВт) на 24/48 ч по погодным прогнозам с проверкой физических ограничений…

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

О проекте

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

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

Суть

AI-агент прогноза почасовой мощности двух ветротурбин Goldwind (T1/T2, 5 МВт) на 24/48 ч по погодным прогнозам с проверкой физических ограничений, февральским replay и веб-дашбордом; проверено на открытом датасете Kelmarsh и синтетическом демо.

Как устроено

Модуль A очищает историю и кэширует архивные выпуски ECMWF Single Runs; модуль B обучает mean baseline и sklearn HistGradientBoosting на скорости ветра, температуре, календарных признаках и ID турбины с временной валидацией. Оркестратор проверяет доступность погоды на момент forecast origin, возвращает raw кВт, ставит флаги на отрицательные значения и превышение номинала, считает энергию ВЭС. Rolling replay за февраль 2026 в режимах MODE A (наблюдаемая погода) и MODE B (архивный прогноз). LLM только формирует пояснения. Финальная модель Goldwind не обучена из-за неподтверждённой семантики данных организаторов.

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

  • HistGradientBoosting
  • mean baseline
  • временная валидация
  • ECMWF Single Runs
  • rolling replay
  • эмпирическая кривая мощности
  • readiness gates
  • проверка физических ограничений

Особенности

Очень строгий контроль утечки данных: прогноз погоды допускается только если он был доступен на момент origin, более поздние выпуски в старый origin не попадают; модель не выдаётся за целевую без подтверждения семантики данных. Публичный Kelmarsh использован как проверенный пример вместо неподтверждённых данных станции.

Стек

Python 3.12 · scikit-learn · joblib · Streamlit · JavaScript · HTML/CSS


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

README

README.md

WindAgent AI · AI Energy Agent

HackAlem AI 2026 · команда Anhalt ANY

Локальный ML-прогноз активной мощности ветрогенераторов, проверка физических ограничений и объяснение результатов. Числа рассчитывает ML-модель; LLM формирует пояснения и не изменяет прогноз. Интерфейс объединяет погоду, мощность, энергию, качество данных и рекомендации.

Состояние проекта

Состояние main на 23 сентября 2026 года:

СценарийЧто доступноЧто означает результат
Goldwind T1/T2 — целевая ВЭСВеб-интерфейс, API, проверки доступности данных, почасовой прогноз 24/48 ч и февральский replay реализованы в коде. Получены CSV с историей.Реальный запуск заблокирован неподтверждённой семантикой данных, отсутствием обученного целевого artifact и подключённого проверенного погодного архива.
Kelmarsh — реальные наблюденияСохранённая модель, реальные SCADA, holdout, графики, метрики и анализ.Проверенный дополнительный пример MODE A, не оценка качества Goldwind.
Синтетическое демоЛокальная модель, сохранённая погода и полный путь до интерфейса без внешних API.Демонстрация работы программы, не подтверждение точности на реальной станции.

Общая сборка включает PR #1–#3, погодный модуль A из PR #4 и подготовку, обучение и провайдер Goldwind из PR #5. Ветки объединены через Git. Финальная модель Goldwind ещё не обучена. Проверка общей сборки и результаты.

Быстрый запуск интерфейса

Выполняйте команды из корня репозитория. Для общего UI/API используется Python 3.12 на Linux/macOS. На Windows запускайте общий сервис в WSL: текущий forecast orchestrator использует POSIX-модуль fcntl. Сам ML-слой отдельно проверен на Windows/Python 3.13.

python3.12 -m venv .venv
source .venv/bin/activate
python -m pip install -r requirements.lock.txt
cp .env.example .env
python scripts/run_ui.py

Откройте http://127.0.0.1:8000/ui/. Node.js и сборка frontend для запуска не нужны. Другой порт: python scripts/run_ui.py --port 8080.

Для воспроизведения ранее проверенного окружения Python 3.12/macOS arm64 сохранён requirements.lock.txt. Диапазоны зависимостей для других совместимых окружений — в requirements.txt; такое окружение требует отдельной проверки. Совместимость сериализованных моделей зависит от версий библиотек: Kelmarsh обучен со scikit-learn 1.9.1 и joblib 1.6.0; полный ML-список — requirements-trained.txt. При смене sklearn можно пересоздать только синтетическое демо командой python scripts/prepare_demo.py; Kelmarsh и его holdout менять для запуска не требуется.

Что показать в UI

  1. «Прогноз ВЭС T1/T2» — основной режим по умолчанию. Показывает причины неготовности; расчёт недоступен до подключения обязательных входов.
  2. «Синтетическое демо» — дата 10.02.2026, горизонт 24 или 48 часов. Нажмите «Рассчитать прогноз».
  3. «Реальные данные Kelmarsh» — дата 08.11.2017, Kelmarsh 1, горизонт 24 часа. Показывает модель и факт по наблюдаемой погоде.

Веб-интерфейс показывает мощность в МВт, энергию в МВт·ч, позволяет скачать CSV и исходный JSON. В вычислительном/API-контракте используются кВт и кВт·ч. Пропуски не заменяются нулями. Подробности интерфейса и проверки: FINAL_UI.md.

Исходный Streamlit-интерфейс также сохранён: streamlit run src/app/streamlit_app.py.

Целевая станция и данные

ТурбинаМодельНоминалВысота ступицыКоординаты
T1Goldwind GW109/25002500 кВт80 м43.645150, 78.535604
T2Goldwind GW109/25002500 кВт80 м43.643198, 78.538828

Общий номинал — 5 МВт. Параметры предоставлены командой и сохранены в config/turbines.json. Высота ступицы не подтверждает высоту измерения исходного ветра, а номинал не определяет формулу нормализации SCADA.

Полученные файлы лежат в data/goldwind/incoming/received_20260923. В основном CSV — 50 784 почасовые строки с метками T1/T2 за 11.03.2023–31.01.2026. Данные 1–10 марта отсутствуют. У 48 452 строк sample_count=6 и конечные погодные/целевые значения; сам счётчик ещё не доказывает корректное покрытие часа.

До финального обучения автор CSV или организаторы должны подтвердить:

  • timezone и историческую политику перевода часов, начало/конец интервала;
  • единицы ветра, температуры и мощности, формулу нормализации и её знаменатель;
  • соответствие исходных меток физическим T1/T2;
  • метод агрегации, смысл sample_count, пропусков, остановок и предварительной очистки;
  • высоту/место измерения ветра и время доступности SCADA;

Расписание команды уже выбрано: первый forecast_origin — 2026-01-31T23:00:00+05:00 (18:00 UTC), затем ежедневно 23:00 Asia/Almaty, первый lead — 1 час. Оба интерфейса берут время из forecast_schedule.json. Календарь выполнения не определяет timezone исходных CSV.

Диапазон значений не позволяет достоверно восстановить эти определения. Исходные CSV сохраняются для аудита. Подробности: проверка поставки, машинный отчёт.

Goldwind: условия запуска

python scripts/run_target_forecast.py --check

Команда возвращает готовность конфигурации и блокеры; код 2 ожидаем при отсутствии обязательных входов. Такая проверка не заменяет проверку исторической доступности каждого выпуска погоды.

Для реального расчёта требуются:

  1. Подтверждённый forecast protocol: timezone, час запуска, первый lead, интервальная и целевая семантика. confirmed нельзя включать без основания.
  2. Архивные прогнозы погоды с фактическими weather_issued_at, weather_available_at, valid_time, моделью/продуктом, версией, высотой ветра и временным шагом. Доступность проверяется для конкретной ревизии на момент origin. Успешная загрузка файла этого не доказывает; реанализ и наблюдения не заменяют прогноз, доступный в прошлом.
  3. Отдельная модель, обученная на подтверждённых данных Goldwind, и manifest с SHA-256, входной схемой, единицами, происхождением данных, границами fit/selection и их доступностью. Все использованные данные должны быть доступны не позже первого origin.

Интегрированные обучение и провайдер B используют скорость ветра, температуру, календарные признаки и явный ID турбины. Направление ветра не обязательно. Реализованы mean baseline и sklearn HistGradientBoosting, временная валидация, без февраля 2026 в подборе. Преобразования сохраняются внутри pipeline; провайдер возвращает raw кВт без clipping. Команды scripts/train_goldwind.py и scripts/evaluate_goldwind.py доступны; для полученного CSV нужен config/goldwind_hourly.template.json с подтверждёнными полями. Контракт и запуск B.

Модуль A предоставляет очистку истории и ECMWF Single Runs с кэшем: python scripts/prepare_data.py, python scripts/cache_weather.py --mode runs. Проверены 58 загрузок выпусков; их доступность на прошлый origin ещё требует доказательства. Контракт данных и погоды.

Переменная окруженияНазначение
FORECAST_DATA_MODULEПо умолчанию src.data.weather (A)
FORECAST_ML_MODULEПо умолчанию src.ml.goldwind_provider (B), raw кВт
FORECAST_MODEL_PATHmodels/goldwind/power_model.joblib — целевой artifact пока отсутствует
FORECAST_MANIFEST_PATHmodels/goldwind/forecast_manifest.json — создаётся с целевым artifact
FORECAST_PROTOCOL_PATHconfig/forecast_protocol.json
FORECAST_CACHE_DIRdata/cache/forecast_v2
FORECAST_RESULTS_DIRresults/forecast_v2

После подтверждения протокола и подключения входов используйте расписание команды:

FORECAST_ORIGIN=2026-01-31T23:00:00+05:00
python scripts/run_target_forecast.py --origin "$FORECAST_ORIGIN" --horizon 48 --output results/target.json
python scripts/run_target_forecast.py --origin "$FORECAST_ORIGIN" --horizon 24 --refresh

Результат хранит origin, время выпуска и доступности погоды, начало прогнозного часа, lead, версии входов, значения T1/T2 и сумму ВЭС. Raw-мощность сохраняется до физических проверок. Отрицательные значения и превышение номинала получают флаги. При отсутствии или невалидности одной турбины мощность/энергия станции — null; конечная raw-сумма сохраняется отдельно для метрик. Почасовая энергия равна средней мощности × 1 час.

--refresh проверяет допустимые обновления и создаёт новую версию результата при изменении входов. Более поздний выпуск не допускается в старый origin. Автономное расписание опроса внешних API пока не настроено. Точный контракт: TARGET_FORECAST_CONTRACT.md.

Февральский replay и оценка качества

MODE A: наблюдаемая погода → мощность. Оценивает зависимость мощности от погодных признаков.

MODE B: архивный прогноз погоды → мощность. Оценивает погоду и ML-модель как полную прогнозную систему. Метрики этих режимов не взаимозаменяемы.

После подключения целевых входов:

python scripts/replay_february.py --horizon 48 --output-dir results/february-48h
python scripts/replay_february.py --horizon 24 --output-dir results/february-24h
# Только при наличии реальных фактов организаторов:
python scripts/replay_february.py --horizon 48 --actuals data/actuals.csv --output-dir results/february-evaluated

Origins идут ежедневно с 31 января по 28 февраля 2026 включительно в часу подтверждённого протокола. Февральские метрики учитывают только интервалы с 1 февраля до 1 марта в том же timezone. Все origins и перекрывающиеся прогнозы сохраняются; лучший выпуск постфактум не выбирается.

Выход: predictions.csv, farm.csv, manifest.json с покрытием, версиями, хэшами и ошибками. Actuals CSV должен содержать timestamp,turbine_id,actual_power_kw: timestamp с timezone означает начало часа, мощность — средние raw кВт, ID — T1/T2. MAE/RMSE считаются по совпавшим конечным raw-парам с указанием покрытия.

Факты февраля нужны для метрик, но не для выпуска прогноза. Если это скрытая тестовая выборка организаторов, собственные февральские метрики остаются неизвестными (null). Пока отсутствуют обязательные входы, replay создаёт blocked manifest и CSV с заголовками; это не готовый прогноз. Реальный полный февральский запуск пока не подтверждён.

Kelmarsh: воспроизводимый пример на реальных данных

Шесть Senvion MM92 по 2050 кВт, исходный шаг 10 минут. Модель и holdout уже сохранены; переобучение и погодный API для примера не нужны.

python scripts/run_observed.py --date 2017-11-08 --turbine "Kelmarsh 1" --output results/observed.json
python scripts/run_observed_backtest.py --turbine "Kelmarsh 1"
python -m scripts.verify_ml_provider --report results/provider_verification.json

Доступные полные сутки holdout: 2017-11-08…2017-12-31. По всем 47 006 holdout-строкам сохранённый отчёт проверки воспроизводит raw MODE A:

MAERMSER²
82,9047 кВт145,1903 кВт0,953016

Метрики отдельного дня/турбины отличаются. Они не относятся к Goldwind и не подтверждают качество оперативного прогноза. Провайдер src.ml.provider принимает только Kelmarsh 1…6; T1/T2 не подменяются ими и не масштабируются молча.

Источник: Charlie Plumley, Roberta Takeuchi / Cubico Sustainable Investments Ltd, Kelmarsh SCADA, CC BY 4.0. Подготовка данных — data/README.md; модель и интерфейс — README_ML.md, ML_INFERENCE_CONTRACT.md.

CLI, API и объяснения

Автономное синтетическое демо из CLI:

python scripts/run_forecast.py --demo --date 2026-02-10 --turbine T1 --horizon 24 --output results/demo.json
python scripts/run_backtest.py --demo

Демо включается явно. Его T1/T2 используют один синтетический погодный ряд; пространственные различия не моделируются.

scripts/run_ui.py одновременно поднимает API. Основные маршруты:

МаршрутНазначение
GET /healthРаботоспособность API, не готовность целевого прогноза
GET /readinessБлокеры и готовность конфигурации T1/T2
GET /dashboard/configКонфигурация режимов веб-интерфейса
POST /target-forecastСтрогий прогноз T1/T2 на origin, 24/48 ч
POST /demo-forecastЯвное синтетическое демо для интерфейса
POST /observedKelmarsh по наблюдаемой погоде
POST /forecastСохранённый интерфейс совместимости/demo

Интерактивная схема запросов: http://127.0.0.1:8000/docs.

Ключ OpenAI для локальных расчётов и объяснений не требуется. Для опционального LLM-анализа задайте OPENAI_API_KEY и OPENAI_MODEL в окружении/.env, затем используйте --with-agent в поддерживающих его CLI. При недоступности API используется локальное объяснение. Реальный LLM-вызов без ключа не подтверждён; сценарии интеграции проверяются подставными ответами. Секреты не коммитятся.

FORECAST_* управляет целевым сценарием. DATA_MODULE, ML_MODULE, MODEL_PATH, DEMO_MODE относятся к сохранённому интерфейсу/demo — полный список находится в .env.example. Сервис рассчитан на локальную демонстрацию; публичная аутентификация и deployment не настроены.

Архитектура

Погода + происхождение/доступность
    → проверка на forecast_origin
    → признаки → локальная ML-модель → raw кВт
    → физические правила → статистика T1/T2 и ВЭС
    → локальное/LLM-объяснение → API / UI / CSV / JSON
КаталогОтветственность
src/data/История T1/T2, очистка, ECMWF Single Runs/кэш, признаки, demo и Kelmarsh
src/ml/Обучение/оценка Goldwind, преобразования, raw-кВт провайдеры Goldwind и Kelmarsh
src/forecast/Временные контракты, архивные выпуски, целевой orchestrator и replay
src/agent/Физические правила, статистика, анализ и сценарии совместимости
src/api/FastAPI и раздача интерфейса
src/app/web/Основной WindAgent UI: HTML/CSS/JavaScript
src/app/streamlit_app.pyСохранённый Streamlit UI
config/, data/, models/, reports/Протоколы, исходные данные, artifacts и результаты проверки

Стек: Python, pandas, NumPy, scikit-learn, joblib, matplotlib, Pydantic, FastAPI, Streamlit; OpenAI SDK для опциональных объяснений. Численный прогноз работает локально без cloud ML services.

Проверки и документация

python -m pytest -q
node tests/test_dashboard_data.cjs
node tests/test_dashboard_state.cjs

Node.js нужен только для двух frontend-тестов. Проверки общего приложения выполняйте в окружении Linux/macOS/WSL с полными зависимостями.

Общая сборка проверена: 293 Python-теста passed, 1 skipped, две JavaScript-проверки, CLI и браузерное демо. Добавлена совместная проверка адаптеров A/B и orchestrator C на 24/48 часов с искусственными программными fixtures. Демо-backtest: по 29 дней, 696/696 часов для T1 и T2, без ошибок; это не измерение качества Goldwind. Строгий replay отдельно оценивает 672 часа февраля. Полный отчёт и сохранённые результаты.

ДокументСодержание
FINAL_UI.mdИнтерфейс, режимы, запуск и проверка UI
TARGET_FORECAST_CONTRACT.mdЕдиницы, origin, выпуски погоды, manifest и replay
GOLDWIND_DELIVERY_REVIEW.mdЧто установлено по полученным CSV и что требует ответа автора
TARGET_ACCEPTANCE.mdПроверки требований и текущие блокеры
README_ML.mdСуществующий ML-слой и Kelmarsh
CONTRACTS.mdКонтракты существующих DATA/ML-интерфейсов

Следующий шаг для целевого результата — получить описание CSV, доказать доступность исторических погодных версий, обучить Goldwind и выполнить реальный replay. Пороговые скорости 3/25 м/с пока являются настройками правил, а не подтверждёнными характеристиками GW109. Неопределённость прогноза, контекст ограничений генерации/ремонтов и автоматическое расписание опроса источников пока не реализованы. Флаги служат поводом для проверки и не являются диагнозом неисправности.

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

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

Eroxxxac 15ukonunion 6locallyloved22 6

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

  • 2026-09-23 17:48Merge pull request #6 from BAITC-Hacks/codex/final-integrationEroxxxac
  • 2026-09-23 17:48Reconcile latest README with verified A/B/C integrationerasylsamarhanov7-sys
  • 2026-09-23 17:46Merge remote-tracking branch 'origin/main' into codex/final-integrationerasylsamarhanov7-sys
  • 2026-09-23 17:45Connect A/B providers to final UI and verify integrated MVPerasylsamarhanov7-sys
  • 2026-09-23 17:36Merge remote-tracking branch 'origin/feature/goldwind-model' into codex/final-integrationerasylsamarhanov7-sys
  • 2026-09-23 17:33Merge remote-tracking branch 'origin/feature/data-weather' into codex/final-integrationerasylsamarhanov7-sys
  • 2026-09-23 17:32Finalize README with current UI, reproducibility and Goldwind readinessukonunion
  • 2026-09-23 17:26Document and package final WindAgent UIlocallyloved22
Все коммиты (27)
  • 2026-09-23 17:26Test dashboard API, data handling and UI statelocallyloved22
  • 2026-09-23 17:25Connect WindAgent UI and explicit demo to existing APIlocallyloved22
  • 2026-09-23 17:25Add local launcher for WindAgent dashboardlocallyloved22
  • 2026-09-23 17:24Add final responsive WindAgent dashboardlocallyloved22
  • 2026-09-23 17:23Add WindAgent UI photo assets from supplied designlocallyloved22
  • 2026-09-23 17:21Prepare gated Goldwind training and raw kW provider for T1 T2ukonunion
  • 2026-09-23 17:16Fix team forecast origin and daily schedule without assuming source semanticserasylsamarhanov7-sys
  • 2026-09-23 16:59Add auditable T1 T2 data pipeline and archived weather cacheerasylsamarhanov7-sys
  • 2026-09-23 16:32Receive and audit T1 T2 hourly export with explicit unresolved source semanticserasylsamarhanov7-sys
  • 2026-09-23 16:18Merge pull request #1 from BAITC-Hacks/codex/energy-agent-mvpEroxxxac
  • 2026-09-23 16:17Fix Goldwind row identity and document verified target forecast readiness and acceptanceerasylsamarhanov7-sys
  • 2026-09-23 16:13Add strict target-station historical forecast and rolling replay with explicit readiness gateserasylsamarhanov7-sys
  • 2026-09-23 16:13Integrate reviewed Goldwind organizer data preparation from PR 3erasylsamarhanov7-sys
  • 2026-09-23 15:57Prepare explicit organizer Goldwind dataset contract and hourly audit loaderukonunion
  • 2026-09-23 15:35Merge ML provider and add real Kelmarsh MODE A end-to-end analysiserasylsamarhanov7-sys
  • 2026-09-23 15:19Verify raw provider output through MVP rules and document integration handoffukonunion
  • 2026-09-23 15:16Add strict raw-kW Kelmarsh provider and frozen-artifact verificationukonunion
  • 2026-09-23 14:48Add trained MODE A power model, Kelmarsh data and evaluation reportsukonunion
  • 2026-09-23 14:19Build energy forecast orchestration MVP with offline demo and integration contractserasylsamarhanov7-sys
Структура репозитория (182 файлов)
.env.example
.gitignore
FINAL_UI.md
README.md
README_ML.md
SOURCE_SNAPSHOT.json
config.json
config.kelmarsh.json
config/forecast_protocol.json
config/forecast_schedule.json
config/goldwind_dataset.template.json
config/goldwind_hourly.template.json
config/kelmarsh_turbines.json
config/turbines.json
config/weather_availability.template.json
data/README.md
data/demo/weather.csv
data/excluded_rows.csv
data/goldwind/.gitignore
data/goldwind/README.md
data/goldwind/incoming/received_20260923/build_weather_cache.py
data/goldwind/incoming/received_20260923/data_quality_report.json
data/goldwind/incoming/received_20260923/historical_hourly.csv
data/goldwind/incoming/received_20260923/historical_hourly_features.csv
data/goldwind/incoming/received_20260923/weather_api.py
data/goldwind/incoming/received_20260923/weather_requests_manifest.csv
data/holdout.csv
data/preparation_report.json
data/raw/kelmarsh/Kelmarsh_WT_dataSignalMapping.csv
data/raw/kelmarsh/Kelmarsh_WT_static.csv
data/scada.csv
docs/CONTRACTS.md
docs/DATA_WEATHER.md
docs/FORECAST_SCHEDULE_DECISION.md
docs/GOLDWIND_DELIVERY_REVIEW.md
docs/GOLDWIND_MODEL_CONTRACT.md
docs/INTEGRATION.md
docs/ML_INFERENCE_CONTRACT.md
docs/TARGET_ACCEPTANCE.md
docs/TARGET_FORECAST_CONTRACT.md
docs/VALIDATION.md
examples/config.json
examples/forecast_input.json
examples/weather_input.json
models/demo/metadata.json
models/demo/model.joblib
models/power_model.joblib
models/power_model.metadata.json
pyproject.toml
reports/WORK_REPORT_RU.md
reports/data_weather_validation.json
reports/eda.json
reports/empirical_power_curve.csv
reports/errors_by_season.csv
reports/errors_by_turbine_id.csv
reports/errors_by_wind_bin.csv
reports/evaluation.md
reports/feature_importance.csv
reports/figures/actual_vs_predicted.png
reports/figures/error_vs_wind_speed.png
reports/figures/power_curve.png
reports/figures/time_series_prediction.png
reports/final-mvp/README.md
reports/final-mvp/backtest-T1/results.csv
reports/final-mvp/backtest-T1/summary.json
reports/final-mvp/backtest-T2/results.csv
reports/final-mvp/backtest-T2/summary.json
reports/final-mvp/demo-T1.json
reports/final-mvp/demo-T2.json
reports/final-mvp/target-48h.json
reports/final-mvp/target-readiness.json
reports/final-mvp/verification.json
reports/goldwind_delivery_audit.json
reports/goldwind_preparation_status.md
reports/goldwind_training_readiness.md
reports/kelmarsh_training_summary.md
reports/metrics.json
reports/provider_integration_check.md
reports/provider_verification.json
reports/repository_review.md
reports/target-acceptance/README.md
reports/target-acceptance/farm.csv
reports/target-acceptance/manifest.json
reports/target-acceptance/predictions.csv
reports/target-acceptance/target-origin.json
reports/target-acceptance/target-readiness.json
reports/test_predictions.csv
reports/verification.md
requirements-lightgbm.txt
requirements-tested.txt
requirements-trained.txt
requirements.lock.txt
requirements.txt
scripts/__init__.py
scripts/audit_goldwind_delivery.py
scripts/cache_weather.py
scripts/download_kelmarsh.py
scripts/evaluate_goldwind.py
scripts/evaluate_model.py
scripts/prepare_data.py
scripts/prepare_demo.py
scripts/prepare_goldwind.py
scripts/prepare_kelmarsh.py
scripts/replay_february.py
scripts/run_backtest.py
scripts/run_forecast.py
scripts/run_observed.py
scripts/run_observed_backtest.py
scripts/run_target_forecast.py
scripts/run_ui.py
scripts/train_goldwind.py
scripts/train_model.py
scripts/verify_ml_provider.py
src/__init__.py
src/agent/__init__.py
src/agent/analyzer.py
src/agent/backtest.py
src/agent/observed.py
src/agent/orchestrator.py
src/agent/rules.py
src/agent/schemas.py
src/agent/tools.py
src/api/__init__.py
src/api/main.py
src/app/__init__.py
src/app/streamlit_app.py
src/app/web/app.js
src/app/web/assets/hero_wind.png
src/app/web/assets/kz_flowers.png
src/app/web/assets/kz_mountains.png
src/app/web/assets/kz_steppe.png
src/app/web/favicon.svg
src/app/web/index.html
src/app/web/ui.css
src/config.py
src/data/__init__.py
src/data/cache.py
src/data/cleaning.py
src/data/contracts.py
src/data/demo.py
src/data/features.py
src/data/kelmarsh_observed.py
src/data/loader.py
src/data/weather.py
src/forecast/__init__.py
src/forecast/contracts.py
src/forecast/orchestrator.py
src/forecast/replay.py
src/forecast/weather.py
src/ml/__init__.py
src/ml/adapters.py
src/ml/aggregation.py
src/ml/config.py
src/ml/contracts.py
src/ml/data.py
src/ml/demo.py
src/ml/evaluation.py
src/ml/features.py
src/ml/goldwind_data.py
src/ml/goldwind_model.py
src/ml/goldwind_provider.py
src/ml/model.py
src/ml/provider.py
src/ml/reports.py
tests/test_cli.py
tests/test_dashboard.py
tests/test_dashboard_data.cjs
tests/test_dashboard_state.cjs
tests/test_data_pipeline.py
tests/test_data_weather.py
tests/test_forecast_replay.py
tests/test_forecast_weather.py
tests/test_goldwind_data.py
tests/test_goldwind_model.py
tests/test_ml.py
tests/test_observed.py
tests/test_pipeline.py
tests/test_provider.py
tests/test_provider_agent_contract.py
tests/test_target_forecast.py
tests/test_team_schedule.py
tests/test_ui.py
Ветки (6)

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

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

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