AAYMA
RU
Войти

Samal

Приложение на React + FastAPI, воспроизводящее прогноз нормализованной мощности двух турбин на 24/48 ч за 1–28 февраля 2026 по архиву операционных…

Доведённый продукт
Команда «гок-гок алем» 19💬 0 комментариевс 23 сентября 2026 г.

О проекте

Команда: гок-гок алем
Кейс 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.md

Samal — прогноз мощности ВЭС

Русскоязычное приложение React + FastAPI воспроизводит прогнозирование за 1–28 февраля 2026 года. Выберите T1/T2, день февраля и 24/48 часов. Сервер берёт операционный погодный выпуск ECMWF, доступный до исторического момента решения, пишет CSV, модель читает этот файл и прогнозирует нормализованную мощность. График, таблица, объяснение и чат используют один сохранённый результат. Текущий прогноз доступен отдельно.

Февральский прогноз в Samal

Готово: 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. Файлы содержат турбину, момент расчёта, целевой час, номер часа прогноза, нормализованную мощность и идентификаторы погоды/модели; отдельного шаблона сдачи в предоставленном задании нет.

Сценарий показа

  1. Выберите февральский режим, T1, 1 февраля и 48 часов. Origin — 31 января 23:00 Asia/Almaty (18:00 UTC); первый прогнозный час — 1 февраля 00:00.
  2. Покажите источник ECMWF, дату инициализации и серверное время доступности архивного объекта до origin. Last-Modified — время архивной копии и верхняя граница её доступности, а не точное время первой публикации ECMWF. Сегодняшнее скачивание не считается исторической публикацией.
  3. Откройте график мощности и ветра, почасовую таблицу; скачайте прогноз и точный входной CSV модели. Мощность нормализована [0,1], не МВт/МВт·ч.
  4. Спросите «Найди лучшие четыре часа подряд», затем «А какой там ветер?». Разговор сохраняет выбранный период.
  5. Перейдите к 2 февраля: origin теперь 1 февраля. Повторите для T2 и 24 часов. Смена даты/турбины/горизонта очищает прежний контекст.
  6. Выберите 28 февраля, 48 часов: результат включает 1 марта. Непрерывный месячный CSV берёт первые 24 часа каждого запуска и содержит только февраль.

3D-сцена иллюстративна: положение солнца вычисляется по времени и координатам, обороты визуально реагируют на прогнозный ветер. Это не телеметрия оборудования. При недоступном WebGL расчёт и чат сохраняются.

Устройство проекта

ПутьОтветственность
frontend/src/Samal, сцена, выбор даты, график, таблица, чат и HTTP-клиент
backend/api.py, backend/services/february.pyHTTP, исторические даты, хранение результата и 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.

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

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

Dias Suleimenov 48Jalil 11Darkhan Shalbayev 7

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

  • 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
Ветки (6)

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

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

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