О проекте
Команда: 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.mdWindAgent 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
- «Прогноз ВЭС T1/T2» — основной режим по умолчанию. Показывает причины неготовности; расчёт недоступен до подключения обязательных входов.
- «Синтетическое демо» — дата
10.02.2026, горизонт 24 или 48 часов. Нажмите «Рассчитать прогноз». - «Реальные данные Kelmarsh» — дата
08.11.2017,Kelmarsh 1, горизонт 24 часа. Показывает модель и факт по наблюдаемой погоде.
Веб-интерфейс показывает мощность в МВт, энергию в МВт·ч, позволяет скачать CSV и исходный JSON. В вычислительном/API-контракте используются кВт и кВт·ч. Пропуски не заменяются нулями. Подробности интерфейса и проверки: FINAL_UI.md.
Исходный Streamlit-интерфейс также сохранён: streamlit run src/app/streamlit_app.py.
Целевая станция и данные
| Турбина | Модель | Номинал | Высота ступицы | Координаты |
|---|---|---|---|---|
| T1 | Goldwind GW109/2500 | 2500 кВт | 80 м | 43.645150, 78.535604 |
| T2 | Goldwind GW109/2500 | 2500 кВт | 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 ожидаем при отсутствии обязательных входов. Такая проверка не заменяет проверку исторической доступности каждого выпуска погоды.
Для реального расчёта требуются:
- Подтверждённый forecast protocol: timezone, час запуска, первый lead, интервальная и целевая семантика.
confirmedнельзя включать без основания. - Архивные прогнозы погоды с фактическими
weather_issued_at,weather_available_at,valid_time, моделью/продуктом, версией, высотой ветра и временным шагом. Доступность проверяется для конкретной ревизии на момент origin. Успешная загрузка файла этого не доказывает; реанализ и наблюдения не заменяют прогноз, доступный в прошлом. - Отдельная модель, обученная на подтверждённых данных 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_PATH | models/goldwind/power_model.joblib — целевой artifact пока отсутствует |
FORECAST_MANIFEST_PATH | models/goldwind/forecast_manifest.json — создаётся с целевым artifact |
FORECAST_PROTOCOL_PATH | config/forecast_protocol.json |
FORECAST_CACHE_DIR | data/cache/forecast_v2 |
FORECAST_RESULTS_DIR | results/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:
| MAE | RMSE | R² |
|---|---|---|
| 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 /observed | Kelmarsh по наблюдаемой погоде |
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. Неопределённость прогноза, контекст ограничений генерации/ремонтов и автоматическое расписание опроса источников пока не реализованы. Флаги служат поводом для проверки и не являются диагнозом неисправности.
Авторы коммитов
История коммитов
- 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
Обсуждение 0 комментариев
Войдите, чтобы комментироватьПока нет комментариев — будьте первым.