О проекте
Команда: гок-гок алем
Кейс HackAlem.ai: Энергетика — Самрук-Казына
Стадия: Доведённый продукт
Задача кейса: AI-агент, прогнозирующий выработку ветровой электростанции по погодным данным
Суть
Приложение на React + FastAPI, воспроизводящее прогноз нормализованной мощности двух турбин на 24/48 ч за 1–28 февраля 2026 по архиву операционных прогнозов ECMWF, с графиком, таблицей, CSV-выгрузкой и чатом по результату.
Как устроено
Для выбранной даты сервер берёт выпуск ECMWF, доступный до момента решения (проверка по Last-Modified и хешам GRIB), интерполирует ветер и температуру с 3-часового шага до почасового и пишет канонический CSV. Отдельные HistGradientBoostingRegressor для T1/T2 читают этот CSV и прогнозируют мощность. Анализ и диалог (например, «лучшие четыре часа подряд») работают через численные инструменты по сохранённому forecast ID; OpenAI подключается опционально только для объяснений и прогноз не меняет.
Ключевые решения
- HistGradientBoostingRegressor
- ECMWF IFS operational GRIB
- интерполяция 3ч→1ч
- point-in-time replay
- аудит происхождения данных с хешами
- численные инструменты для чата
- побайтная проверка воспроизводимости
Особенности
Строгий февральский replay: 56/56 запусков, аудит из 289 проверок, повторный прогон даёт побайтно те же CSV, а для каждого выпуска погоды сохранено подтверждение доступности. Команда не заявляет MAE за февраль, потому что факта нет.
Стек
Python · FastAPI · React · Vite · TypeScript · scikit-learn · WebGL · Open-Meteo · Node.js
Модели
OpenAI (модель не указана)
Проект создан за 5 часов на финале хакатона HackAlem.ai (23 сентября 2026, Астана). Код — BAITC-Hacks/hack-fca97f7a-team.
README
README.mdSamal — прогноз мощности ВЭС
Русскоязычное приложение React + FastAPI воспроизводит прогнозирование за 1–28 февраля 2026 года. Выберите T1/T2, день февраля и 24/48 часов. Сервер берёт операционный погодный выпуск ECMWF, доступный до исторического момента решения, пишет CSV, модель читает этот файл и прогнозирует нормализованную мощность. График, таблица, объяснение и чат используют один сохранённый результат. Текущий прогноз доступен отдельно.

Готово: 56 из 56 запусков, 2 688 строк на 48 часов и 1 344 строки непрерывного февраля — по 672 часа на турбину. Локальный аудит покрытия, хронологии и целостности прошёл 289 проверок. После переноса моделей и повторного создания входных CSV оба итоговых CSV совпали побайтно; исходный GRIB-кеш оставался общим и перепроверялся. CSV, отчёт, модели, входы и погодные свидетельства. Фактической мощности февраля в исходных данных нет: MAE/RMSE этого периода не заявляются.
Быстрый запуск
Проверенная среда: Linux, Python 3.14.4, Node.js 22. Загрузчик готовых моделей требует Python 3.14 и ту же версию scikit-learn; зависимости устанавливаются из requirements.txt. Полные версии записаны в манифесте комплекта. Для другой версии Python потребуется проверить зависимости и переобучить модели. Команды ниже выполняются в Bash из корня репозитория.
python3.14 -m venv .venv
. .venv/bin/activate
python -m pip install -r requirements.txt
mkdir -p artifacts/models
cp -Rn deliverables/february_2026_operational/artifacts/models/. artifacts/models/
python -m scripts.fetch_operational_weather --workers 4
npm --prefix frontend ci
npm --prefix frontend run build
python -m uvicorn backend.api:app --host 127.0.0.1 --port 8000
Команда копирования добавляет недостающие файлы и не перезаписывает уже установленные модели. Откройте http://localhost:8000; API — http://localhost:8000/docs. Первая загрузка архивной погоды требует сети и около 1,1 ГБ места под кеш; повторный запуск проверяет готовые выпуски и продолжает незавершённую загрузку. Расчёты читают локальный кеш. В поставку включены погодные свидетельства, но не исходные GRIB: их получает команда загрузки. Если архив отсутствует или повреждён, сервер выдаёт ошибку без подмены текущей/фактической погодой.
Для разработки интерфейса отдельно запустите npm --prefix frontend run dev: Vite на порту 5173 проксирует /api в FastAPI на 8000. Не добавляйте ключи в VITE-переменные. В этом приватном репозитории по явному запросу владельца предоставлен серверный .env только для проверки жюри. Он включает настройку OpenAI; не переносите ключ во frontend и не распространяйте за пределами приватного репозитория. Без ключа доступны явно обозначенные расчётные ответы.
Весь период одной командой
После загрузки погоды и установки моделей:
python -m scripts.jury_run --cache-only
Команда проверяет кеш, выполняет 56 прогнозов и сохраняет CSV, report.json, audit.json в artifacts/february_operational. Без --cache-only она также загружает архив. Для нового переносимого комплекта добавьте --package-dir artifacts/submission/new_february; каталог должен ещё не существовать. Здесь нет обучения или платных вызовов LLM. Успешный запуск возвращает status: ok; неполный расчёт или ошибка аудита — ненулевой код завершения.
После прогона сравните результаты с комплектом:
cmp deliverables/february_2026_operational/forecast.csv artifacts/february_operational/forecast.csv
cmp deliverables/february_2026_operational/daily_forecast.csv artifacts/february_operational/daily_forecast.csv
При совпадении cmp ничего не выводит и завершается с кодом 0. В CSV время записано в UTC, границы февраля определены по Asia/Almaty. Файлы содержат турбину, момент расчёта, целевой час, номер часа прогноза, нормализованную мощность и идентификаторы погоды/модели; отдельного шаблона сдачи в предоставленном задании нет.
Сценарий показа
- Выберите февральский режим, T1, 1 февраля и 48 часов. Origin — 31 января 23:00 Asia/Almaty (18:00 UTC); первый прогнозный час — 1 февраля 00:00.
- Покажите источник ECMWF, дату инициализации и серверное время доступности архивного объекта до origin. Last-Modified — время архивной копии и верхняя граница её доступности, а не точное время первой публикации ECMWF. Сегодняшнее скачивание не считается исторической публикацией.
- Откройте график мощности и ветра, почасовую таблицу; скачайте прогноз и точный входной CSV модели. Мощность нормализована [0,1], не МВт/МВт·ч.
- Спросите «Найди лучшие четыре часа подряд», затем «А какой там ветер?». Разговор сохраняет выбранный период.
- Перейдите к 2 февраля: origin теперь 1 февраля. Повторите для T2 и 24 часов. Смена даты/турбины/горизонта очищает прежний контекст.
- Выберите 28 февраля, 48 часов: результат включает 1 марта. Непрерывный месячный CSV берёт первые 24 часа каждого запуска и содержит только февраль.
3D-сцена иллюстративна: положение солнца вычисляется по времени и координатам, обороты визуально реагируют на прогнозный ветер. Это не телеметрия оборудования. При недоступном WebGL расчёт и чат сохраняются.
Устройство проекта
| Путь | Ответственность |
|---|---|
frontend/src/ | Samal, сцена, выбор даты, график, таблица, чат и HTTP-клиент |
backend/api.py, backend/services/february.py | HTTP, исторические даты, хранение результата и CSV |
backend/services/agent.py | Погода → канонический CSV → модель → численный анализ |
backend/adapters/operational_weather.py | Операционные GRIB, хеши, серверные метаданные и почасовой вход |
backend/ml/ | Исходные данные, схема CSV, отдельные модели T1/T2 |
backend/services/forecast_tools.py, backend/adapters/explanation.py | Численные инструменты диалога и необязательный OpenAI |
scripts/ | Подготовка, обучение, replay, аудит и упаковка |
legacy/ | Прежний Streamlit; не активный интерфейс |
Мощность рассчитывают две отдельные модели градиентного бустинга HistGradientBoostingRegressor по ветру и температуре. LLM не создаёт и не меняет прогноз мощности. Анализ и вопросы принимают серверный forecast ID. Прогнозы сохраняются с контрольной суммой: до 256 файлов на семь дней; сервер рассчитан на один процесс. Контракты: CONTRACTS.md.
Данные, проверка и ограничения
Истории T1/T2 содержат 142 360/149 499 строк и заканчиваются 31 января 2026 года несмотря на имена файлов. Дополнительные материалы не содержат фактической мощности февраля. Обучение заморожено на завершённых часах до 2026-01-31T18:00:00Z.
Операционный архив проверен по серверным датам каждого использованного объекта, идентичности GRIB и хешам. На каждый из 28 выпусков сохранены 17 индексов и 51 выбранное GRIB-сообщение из 34 объектов провайдера. Сетка — 0,25°; компоненты ветра и температура интерполируются с трёхчасового шага до почасового. В этом расчёте обе близкие турбины попадают в одну погодную ячейку (43,75°; 78,5°), но используют разные модели мощности. Источник и разрешение отличаются от погодного ряда обучения: происхождение подтверждено, точность мощности на феврале не оценена.
Результаты зафиксированы в аудите, проверке переноса и отчёте о проверках. Проверены полный replay и 289 пунктов аудита; в реальном браузере — Samal, T2/48 часов, T1/24 часа, последовательные вопросы по четырёхчасовому периоду, настольная и мобильная ширина без ошибок JavaScript. 44 целевые backend-проверки и 17 frontend-проверок прошли. Платных LLM-проверок в этом прогоне не было; расчётный чат проверен отдельно от качества ответов OpenAI.
Подробнее: февральский процесс, критерии жюри, модель, данные, показ.
Подготовка моделей с нуля
python -m scripts.fetch_training_weather --start-date 2024-01-01 --end-date 2026-01-31
python -m scripts.train_forecast --activate
Обучение требует сети и времени, выполняется только через CLI. Исходные CSV не меняются. Для дальнейшей оценки нужны фактическая мощность февраля и уточнение временных границ/нормировки SCADA у владельца данных.
Прежний условный результат Open-Meteo Single Runs оставлен только для воспроизводимости в старом комплекте. Он не заменяет основной операционный результат и не повышается автоматически до verified.
Авторы коммитов
История коммитов
- 2026-09-23 17:49feat: enhance February weather data handling with packaged points verification and timeout managementDias Suleimenov
- 2026-09-23 17:38docs: clarify verified setup and reproducibility in final READMEDias Suleimenov
- 2026-09-23 17:31fix: use verified ECMWF archive automatically in February UIDias Suleimenov
- 2026-09-23 17:29feat: deliver verified February forecasts, portable models and final jury demoDias Suleimenov
- 2026-09-23 17:24chore: provide jury-only server configuration in private repositoryDias Suleimenov
- 2026-09-23 17:15feat: replay February from original ECMWF operational forecasts with publication checksDias Suleimenov
- 2026-09-23 17:14Merge PR #4: integrate Samal scene with February replay and grounded chatDias Suleimenov
- 2026-09-23 17:08feat: add February replay UI and historical forecast APIDias Suleimenov
Все коммиты (66)
- 2026-09-23 17:05Merge current main and connect grounded chat to SamalJalil
- 2026-09-23 17:02Merge latest main and preserve live forecasts in Samal UIJalil
- 2026-09-23 16:55Merge PR #3: integrate grounded conversation tools into current backend and live UIDias Suleimenov
- 2026-09-23 16:45Merge PR #2: measured HGB candidate preserving live and replay modelsDias Suleimenov
- 2026-09-23 16:43feat: add immersive Samal wind forecast experienceJalil
- 2026-09-23 16:40docs: deliver February forecasts and reproducible offline bundleDias Suleimenov
- 2026-09-23 16:39feat: package portable offline February replay with verified artifact checksumsDias Suleimenov
- 2026-09-23 16:39feat(C): render readable forecast answers and separate limitationsDarkhan Shalbayev
- 2026-09-23 16:36feat: compute February replay from explicitly qualified historical forecast runsDias Suleimenov
- 2026-09-23 16:34feat: reopen saved live forecasts without weather or LLM callsDias Suleimenov
- 2026-09-23 16:30Merge latest main and adapt model changes to backend/mlJalil
- 2026-09-23 16:28refactor: simplify live demo and document jury requirements and module layoutDias Suleimenov
- 2026-09-23 16:28Merge latest main into dev-a preserving forecast dialogue and live chronologyDarkhan Shalbayev
- 2026-09-23 16:28model: add MAE candidate while preserving live weather profileJalil
- 2026-09-23 16:26refactor: organize backend into core services adapters and ml packagesDias Suleimenov
- 2026-09-23 16:24Merge main into dev-a and preserve forecast conversation toolsDarkhan Shalbayev
- 2026-09-23 16:22fix: remove historical archive from demo scope and weather selectorDias Suleimenov
- 2026-09-23 16:18feat: harden live forecasts with weather cache and persistent resultsDias Suleimenov
- 2026-09-23 16:14Improve power forecasts with provider-trained ECMWF models and chronological evaluationDias Suleimenov
- 2026-09-23 16:11feat: add auditable February replay and remove baseline from exportsDias Suleimenov
- 2026-09-23 16:00feat: overlay forecast wind with a separate speed axisDias Suleimenov
- 2026-09-23 15:58fix: remove stale baseline from forecast UI and chart exportsDias Suleimenov
- 2026-09-23 15:51feat: pull live Open-Meteo weather by default through CSV inferenceDias Suleimenov
- 2026-09-23 15:50feat(A3): show live Open-Meteo forecasts in the Russian UIDarkhan Shalbayev
- 2026-09-23 15:43Merge latest main into weather integration and verify 112 testsDias Suleimenov
- 2026-09-23 15:42Merge dev-a weather adapter preserving current UI and model contractsDias Suleimenov
- 2026-09-23 15:41Merge pull request #1 from BAITC-Hacks/MLmodelDias Suleimenov
- 2026-09-23 15:31merge: include Russian demo and coordinate updates from mainJalil
- 2026-09-23 15:27feat(A2-A3): guard Open-Meteo archive forecasts with provenance evidenceDarkhan Shalbayev
- 2026-09-23 15:27feat(C2): explain forecasts and questions in RussianDarkhan Shalbayev
- 2026-09-23 15:22docs: record model audit, contracts, and integration handoffJalil
- 2026-09-23 15:22feat(B3): add chronological measured-weather evaluationJalil
- 2026-09-23 15:22feat(B2): integrate audited turbine artifacts with CSV inferenceJalil
- 2026-09-23 15:19Merge Russian demo redesign and update remaining team tasksDias Suleimenov
- 2026-09-23 15:16C4: simplify forecast UI, add supplied coordinates and chart exportsDias Suleimenov
- 2026-09-23 15:15docs: update team backlog after model integrationDias Suleimenov
- 2026-09-23 15:13Merge MLmodel with CSV inference and compatible model loadingDias Suleimenov
- 2026-09-23 15:06docs(A2): verify turbine coordinates and Open-Meteo limitsDarkhan Shalbayev
- 2026-09-23 14:59merge: bring current main contracts into MLmodelJalil
- 2026-09-23 14:56C1-C3 C5: localize forecast demo and explanationsDias Suleimenov
- 2026-09-23 14:47feat: add reproducible local turbine model trainingJalil
- 2026-09-23 14:42docs: assign three-developer backlog and require Russian demoDias Suleimenov
- 2026-09-23 14:38fix: clarify React control labels and verify end-to-end CSV flowDias Suleimenov
- 2026-09-23 14:37docs: define React API CSV model and LLM replacement contractsDias Suleimenov
- 2026-09-23 14:34feat: expose forecasts CSV downloads and grounded analysis through FastAPIDias Suleimenov
- 2026-09-23 14:33feat: add React forecast dashboard with CSV and explanation flowDias Suleimenov
- 2026-09-23 14:31feat: add grounded OpenAI explanation adapter and offline fallbackDias Suleimenov
- 2026-09-23 14:30feat: feed power inference through validated canonical weather CSVDias Suleimenov
- 2026-09-23 14:23docs: confirm real-browser turbine marker smoke checksDias Suleimenov
- 2026-09-23 14:23docs: record slice setup verification and parallel handoffDias Suleimenov
- 2026-09-23 14:20feat: add turbine map forecast UI and computed analysisDias Suleimenov
- 2026-09-23 14:19data: add distinct turbine histories and organizer briefDias Suleimenov
- 2026-09-23 14:18feat: add trained turbine forecast core and synthetic weather toolsDias Suleimenov
- 2026-09-23 14:16docs: freeze wind forecast demo plan and agent working agreementDias Suleimenov
- 2026-09-23 12:11Tighten five-hour demo workflowDias Suleimenov
- 2026-09-23 12:02Refine three-person build splitDias Suleimenov
- 2026-09-23 11:42Add shared project stateDias Suleimenov
- 2026-09-23 11:19Add hackathon agent workflowDias Suleimenov
Структура репозитория (241 файлов)
.env .env.example .gitattributes .gitignore AGENTS.md CONTRACTS.md DATA_MODEL_HANDOFF.md DEMO_CHECKLIST.md EVALUATION_REPORT.md FORECASTING_REPORT.md FRONTEND_EXPERIENCE.md INTEGRATION.md MODEL_IMPROVEMENT.md PLAN.md README.md TEAM_WORKFLOW.md TRAINING_PLAN.md api.py backend/__init__.py backend/adapters/__init__.py backend/adapters/explanation.py backend/adapters/forecast_store.py backend/adapters/operational_weather.py backend/adapters/replay_weather.py backend/adapters/weather.py backend/api.py backend/core/__init__.py backend/core/contracts.py backend/ml/__init__.py backend/ml/data.py backend/ml/model.py backend/ml/model_input.py backend/services/__init__.py backend/services/agent.py backend/services/february.py backend/services/forecast_tools.py data/Dataset HackAlemAI для участников 11.03.2023-28.02.2026 - turbine 1.csv data/Dataset HackAlemAI для участников 11.03.2023-28.02.2026 - turbine 2.csv data/HackAlem AI_ Agentic AI для прогнозирования выработки ВЭС.md deliverables/february_2026/README.md deliverables/february_2026/documented_daily_forecast.csv deliverables/february_2026/documented_forecast.csv deliverables/february_2026/replay_bundle.zip deliverables/february_2026/report.json deliverables/february_2026/reproduction_check.json deliverables/february_2026_operational/README.md deliverables/february_2026_operational/artifacts/model_inputs/039cb4a1824a651b262504ad028bb0bdfb85bfc5a00144c64c32229d24ee01fc.csv deliverables/february_2026_operational/artifacts/model_inputs/03acadb5b6e8a7cab86581613f9739580bc9e5b8c232dbf4f0fad7c21d8d0078.csv deliverables/february_2026_operational/artifacts/model_inputs/0b735e755e88907a54ebe5a512a5b9280739fe60b1756cedba382acef2c76f2e.csv deliverables/february_2026_operational/artifacts/model_inputs/14d2291253631925e50bc3c7554e3fe54d04a48221a1857599771d074dec9f78.csv deliverables/february_2026_operational/artifacts/model_inputs/14f4af30e254876bf9d31a06840b01442d2d35d9f9360ced0b2d886e8c46cb97.csv deliverables/february_2026_operational/artifacts/model_inputs/1721e2a6a297586bc3e56da39434d3df3a174812aa45af0eb62e0cb3766da936.csv deliverables/february_2026_operational/artifacts/model_inputs/173a93c47868140a804e6ae902088d46f939bbca46828bf97bbf872c75a05846.csv deliverables/february_2026_operational/artifacts/model_inputs/19dd1f7918a39370ccdecdd4020f39bcb8633942e3292ea3d74e77b12d8bb510.csv deliverables/february_2026_operational/artifacts/model_inputs/2269d1efcffe898bea141ef55f08279724b6cac7c0677a32c5d775b78dffce32.csv deliverables/february_2026_operational/artifacts/model_inputs/245782b741909546fe4a7c26a8141dbd6638a860e9505879e298ddbe71674cbe.csv deliverables/february_2026_operational/artifacts/model_inputs/2c86be678bc28e6835b4306d34472cf9ecb826492b2bf4786958d6638b7aa935.csv deliverables/february_2026_operational/artifacts/model_inputs/355e3bb3df216a7f8bb6ed470aa51a024f6cc6e67b30f026da1c0158976b03a5.csv deliverables/february_2026_operational/artifacts/model_inputs/39b6864a897f659fa1b91523309091317ed57d9a9a89aa0d585bddd36495bd5c.csv deliverables/february_2026_operational/artifacts/model_inputs/3fa379e82c54e43b545e14046eec844f829ed53d20f55ef9f17d1badb0bf483e.csv deliverables/february_2026_operational/artifacts/model_inputs/419f627deefcc9257ba102c03201846a3384ba414dfb8ab4bede1fa25b98c83b.csv deliverables/february_2026_operational/artifacts/model_inputs/4925fa34320504ae522cedab78ad42f054c50609d160f3763f7db1a03183d828.csv deliverables/february_2026_operational/artifacts/model_inputs/499391fb2ccf54904fb98d9d2bf636c1c030468cb11522015af49f7a820092f7.csv deliverables/february_2026_operational/artifacts/model_inputs/4d66c22e370a83b394caf97446a840f84336c60bf8df628fe37b83f4b3dfe311.csv deliverables/february_2026_operational/artifacts/model_inputs/54bb12b4c08e8e55138fec291c2f049e1cabf66a8fbc3d8f6bf85d4c091567e4.csv deliverables/february_2026_operational/artifacts/model_inputs/6325d85caa60276366d90a304e96cff2e69aad6491d265afa81ba4f14ef7eb74.csv deliverables/february_2026_operational/artifacts/model_inputs/633635d1a03aeeba759fa06583932adc9b6eedc649520de6f545669c35862030.csv deliverables/february_2026_operational/artifacts/model_inputs/6610d85a34e3ae02119c246dc755eeafba1f83cb3587af02173d84948d7480c8.csv deliverables/february_2026_operational/artifacts/model_inputs/686a823c24ee4c07878aadec9b4d4abefa8ddb0022683f42dbb855ad48a74c36.csv deliverables/february_2026_operational/artifacts/model_inputs/807f29ac23b05a564c28be2a3614cf46e774ff70aa4a29e9e804e4655d011b87.csv deliverables/february_2026_operational/artifacts/model_inputs/813defb24c541d51bc3854525654791f5a399002eb6885c96113088b13121676.csv deliverables/february_2026_operational/artifacts/model_inputs/819b579d7903fffb42d53a350be44ca5846ec7d1410e064b225eb42e5a883c4d.csv deliverables/february_2026_operational/artifacts/model_inputs/8806bddeafb0cc89fe4c5fd06d16a50db06aa47df833842a2596ba92017e1073.csv deliverables/february_2026_operational/artifacts/model_inputs/8b4885b9b0ec7bf8c5b9fe70a9ba022fed00ee29bb1c888f0dfc91e0c478d236.csv deliverables/february_2026_operational/artifacts/model_inputs/8c7c0a9ee5c5f119355959c4932604ba2afbb8fbb28c9b1bf232cade40c1bc33.csv deliverables/february_2026_operational/artifacts/model_inputs/8e3cc859388b7c4e583718dedd03ffa2e5e682cf964c0232793ceb2688c28ac9.csv deliverables/february_2026_operational/artifacts/model_inputs/92e685fdacdb599e998ebd3f72641f9ad4c503579e648926e14a581fa23c7690.csv deliverables/february_2026_operational/artifacts/model_inputs/9301bec9c086f67f9bb9093ed03893efeabac0237317235f575a2922e1a1b741.csv deliverables/february_2026_operational/artifacts/model_inputs/9863735cc0c034c87396deceac9edc7f09d5c1c62fdb51dadd40e504a19a1d13.csv deliverables/february_2026_operational/artifacts/model_inputs/a0aee2ea41355d58f4bcd9770c0bf6b97bda6601cac53e518dd960f501b9c5a4.csv deliverables/february_2026_operational/artifacts/model_inputs/a2b3f0506268ef36ef3c593a8f2c62f67323faa57d0e80e7cd478cd825b3930d.csv deliverables/february_2026_operational/artifacts/model_inputs/acb0d915a37192f4b05d0f4111126184ffabe2b08126efc806c6964eef6ecec7.csv deliverables/february_2026_operational/artifacts/model_inputs/ae94f302c8fba1e9716714380d7c2850221f4a71072f35bae733b7df4191332f.csv deliverables/february_2026_operational/artifacts/model_inputs/b3a7684b6a04479db3b4d39aa0fc87cf1119c493fe47535fd487e10e52321584.csv deliverables/february_2026_operational/artifacts/model_inputs/b3cd65da8732b22537ad63b19e9e0cb31f67e9fbfd583493cdf1cedca2d24e23.csv deliverables/february_2026_operational/artifacts/model_inputs/b71135593766ca4a0d0b0052117ae6f15a1598ef58dcf78d5e1a39346ea02ac6.csv deliverables/february_2026_operational/artifacts/model_inputs/bad15f556df5958afcdaf7aa5c9a10dfc9a04eb760868b7d25873a3292b1ce54.csv deliverables/february_2026_operational/artifacts/model_inputs/cb89e4fde030913b6b2df4320694c56b7cd7fe8048eeb1faed2c2960c5824207.csv deliverables/february_2026_operational/artifacts/model_inputs/cd56c0eebd72500641cd65c7f52ec28d396b4c17b8197c2f3356aac67173533a.csv deliverables/february_2026_operational/artifacts/model_inputs/db90531bba9e3473a05058592e2ce85a2dc49b9e3bb916bc2c4bf4bc73bf6042.csv deliverables/february_2026_operational/artifacts/model_inputs/dd3c8e348226beb649517412e8bd4546654ca0a8dcc552c56cad482ee42abc3c.csv deliverables/february_2026_operational/artifacts/model_inputs/e6e0ec14855d161e130afc0bbf5c961205c0efc6e82302099ebe98d90dedd32c.csv deliverables/february_2026_operational/artifacts/model_inputs/e7cce42e03616e6b444320fba5a5db4c9153acdaf1f208890ae90198a875344d.csv deliverables/february_2026_operational/artifacts/model_inputs/e9ad838b17d1e806cbed44cce5ba33e931f0ad0ce8ab39087613771a1c663406.csv deliverables/february_2026_operational/artifacts/model_inputs/ee1224700263d36206e52ac29a6c23ede60c0fcb45d812060cc9b7f5a62133a5.csv deliverables/february_2026_operational/artifacts/model_inputs/ef9eacaf926d104e59955dd14e34e6f99be498efe4132a3e8d4f1b27398cc6f4.csv deliverables/february_2026_operational/artifacts/model_inputs/f177eb9b6fd2a106b16a9fc8c8436d27b902ea596d5ec117cdaea724c6c5607d.csv deliverables/february_2026_operational/artifacts/model_inputs/f1d7347084137761486b5434ea49634967f026723e95dca06e1f229363c54620.csv deliverables/february_2026_operational/artifacts/model_inputs/f2a3c31d3c27ca31486916452445d5520ba37b378c2ae03588e2a1e886b97127.csv deliverables/february_2026_operational/artifacts/model_inputs/f2bc7b3c06be9ed6fd0c3dfde277041009875d38517e9d7778c17eed39ed5b53.csv deliverables/february_2026_operational/artifacts/model_inputs/f4a4661d37e2fbc7a244a7e1c6b5427cdf31aa06dbd2f21ed74dcf8abebf9c1a.csv deliverables/february_2026_operational/artifacts/model_inputs/f691f6eaf6bcd198ff9c5e1df99223003b0f4a5542870f257905d5f39b5e6ede.csv deliverables/february_2026_operational/artifacts/models/open_meteo_ecmwf_ifs_10m/T1/594ab96b14faef987df918ca088c7784f8964e26a17075bcc4a009b6d23b8b96/metadata.json deliverables/february_2026_operational/artifacts/models/open_meteo_ecmwf_ifs_10m/T1/594ab96b14faef987df918ca088c7784f8964e26a17075bcc4a009b6d23b8b96/model.pkl deliverables/february_2026_operational/artifacts/models/open_meteo_ecmwf_ifs_10m/T2/071928f407ba189f1d74b42e9e9ac8b1c0b71991dbfd32c9574f67294a09100f/metadata.json deliverables/february_2026_operational/artifacts/models/open_meteo_ecmwf_ifs_10m/T2/071928f407ba189f1d74b42e9e9ac8b1c0b71991dbfd32c9574f67294a09100f/model.pkl deliverables/february_2026_operational/artifacts/models/open_meteo_ecmwf_ifs_10m/latest.json deliverables/february_2026_operational/audit.json deliverables/february_2026_operational/bundle_manifest.json deliverables/february_2026_operational/daily_forecast.csv deliverables/february_2026_operational/data_inventory.json deliverables/february_2026_operational/forecast.csv deliverables/february_2026_operational/report.json deliverables/february_2026_operational/reproduction_check.json deliverables/february_2026_operational/verification.json deliverables/february_2026_operational/weather_fetch_report.json deliverables/february_2026_operational/weather_receipts/20260131-00z.json deliverables/february_2026_operational/weather_receipts/20260201-00z.json deliverables/february_2026_operational/weather_receipts/20260202-00z.json deliverables/february_2026_operational/weather_receipts/20260203-00z.json deliverables/february_2026_operational/weather_receipts/20260204-00z.json deliverables/february_2026_operational/weather_receipts/20260205-00z.json deliverables/february_2026_operational/weather_receipts/20260206-00z.json deliverables/february_2026_operational/weather_receipts/20260207-00z.json deliverables/february_2026_operational/weather_receipts/20260208-00z.json deliverables/february_2026_operational/weather_receipts/20260209-00z.json deliverables/february_2026_operational/weather_receipts/20260210-00z.json deliverables/february_2026_operational/weather_receipts/20260211-00z.json deliverables/february_2026_operational/weather_receipts/20260212-00z.json deliverables/february_2026_operational/weather_receipts/20260213-00z.json deliverables/february_2026_operational/weather_receipts/20260214-00z.json deliverables/february_2026_operational/weather_receipts/20260215-00z.json deliverables/february_2026_operational/weather_receipts/20260216-00z.json deliverables/february_2026_operational/weather_receipts/20260217-00z.json deliverables/february_2026_operational/weather_receipts/20260218-00z.json deliverables/february_2026_operational/weather_receipts/20260219-00z.json deliverables/february_2026_operational/weather_receipts/20260220-00z.json deliverables/february_2026_operational/weather_receipts/20260221-00z.json deliverables/february_2026_operational/weather_receipts/20260222-00z.json deliverables/february_2026_operational/weather_receipts/20260223-00z.json deliverables/february_2026_operational/weather_receipts/20260224-00z.json deliverables/february_2026_operational/weather_receipts/20260225-00z.json deliverables/february_2026_operational/weather_receipts/20260226-00z.json deliverables/february_2026_operational/weather_receipts/20260227-00z.json docs/february-replay.md docs/images/samal-february.png docs/jury-readiness.md docs/open-meteo-verification.md docs/weather-archive-guide.md fixtures/T1-r1.json fixtures/T1-r2.json fixtures/T2-r1.json fixtures/T2-r2.json frontend/.gitignore frontend/DESIGN.md frontend/index.html frontend/package-lock.json frontend/package.json frontend/public/favicon.svg frontend/public/scene/ATTRIBUTION.md frontend/public/scene/earth-blue-marble-4k.webp frontend/public/scene/earth-blue-marble-8k.webp frontend/public/scene/earth-blue-marble.jpg frontend/src/App.tsx frontend/src/AssistantText.tsx frontend/src/PowerChart.tsx frontend/src/SiteMap.tsx frontend/src/api.ts frontend/src/assistant/Assistant.tsx frontend/src/assistant/agentTools.ts frontend/src/chartExport.ts frontend/src/experience/types.ts frontend/src/experience/weather.test.mjs frontend/src/experience/weather.ts frontend/src/main.tsx frontend/src/ru.ts frontend/src/scene/README.md frontend/src/scene/WorldScene.tsx frontend/src/scene/environment.ts frontend/src/scene/geography.ts frontend/src/scene/renderer.ts frontend/src/scene/scene.css frontend/src/scene/turbine.ts frontend/src/scene/wind.ts frontend/src/styles.css frontend/src/timeline/TimeScrubber.tsx frontend/src/timeline/daylight.ts frontend/src/timeline/format.ts frontend/src/types.ts frontend/src/ui/Analytics.tsx frontend/src/ui/Icon.tsx frontend/src/ui/Sheet.tsx frontend/tests/agent-tools.test.mjs frontend/tsconfig.json frontend/vite.config.ts legacy/__init__.py legacy/app.py model.py pytest.ini requirements.txt scripts/__init__.py scripts/audit_february.py scripts/compare_models.py scripts/evaluate.py scripts/fetch_operational_weather.py scripts/fetch_replay_weather.py scripts/fetch_training_weather.py scripts/jury_run.py scripts/make_fixtures.py scripts/package_operational_replay.py scripts/package_replay.py scripts/replay.py scripts/smoke_model.py scripts/train.py scripts/train_forecast.py tasks.md tests/conftest.py tests/test_agent.py tests/test_api.py tests/test_archive_weather.py tests/test_conversation_api.py tests/test_data.py tests/test_evaluation.py tests/test_explanation.py tests/test_forecast_store.py tests/test_forecast_tools.py tests/test_forecast_training.py tests/test_live_weather.py tests/test_model.py tests/test_model_artifacts.py tests/test_model_comparison.py tests/test_model_input.py tests/test_model_profiles.py tests/test_operational_weather.py tests/test_package_replay.py tests/test_replay.py tests/test_replay_weather.py tests/test_training_weather.py tests/test_ui.py tests/test_weather.py tests/test_weather_resilience.py
Обсуждение 0 комментариев
Войдите, чтобы комментироватьПока нет комментариев — будьте первым.