О проекте
Команда: Codex, make no mistakes
Кейс HackAlem.ai: Логистика — Электрокомплект · ekt.kz
Стадия: Доведённый продукт
Задача кейса: Автоматический расчёт заказов поставщикам для пополнения склада, с утверждением менеджером
Суть
Система рекомендаций заказов поставщикам для Электрокомплекта: импорт Excel-выгрузок в PostgreSQL, прогноз спроса, расчёт черновиков заказов с учётом остатков и транзита, версии сценариев, утверждение менеджером и экспорт в CSV, React-интерфейс рабочего места закупщика.
Как устроено
Excel-книги поставщиков импортируются в PostgreSQL (SQLAlchemy + Alembic) с независимым аудитом качества данных. Прогноз в режиме auto: недельный EWMA за 8 недель с весами 0.72^(возраст в неделях) при истории от 56 дней, иначе историческое среднее. К прогнозу применяются сценарные коэффициенты, буфер, остатки и транзит, пересчёт единиц, минимальная партия и кратность, lead time определяет срок прибытия. В экспериментах сравнивали LightGBM Tweedie, SBA, TSB и очистку спроса по WAPE, дополнительно есть маршрутизация доставок по Алматы через OSRM.
Ключевые решения
- EWMA
- LightGBM Tweedie
- SBA
- TSB
- WAPE
- feature ablation
- demand cleaning
- OSRM routing
- min order / order multiple rounding
Метрики
WAPE 2026 retrospective: IEK/м/28д 64.98 (baseline) vs 58.80 (Tweedie); IEK/уп/28д 42.57 vs 46.29; IEK/шт/28д 40.25 vs 40.15; Systeme/шт/28д 42.76 vs 42.43
Особенности
Строгая методология: 7 зарегистрированных экспериментов на 65 754 ключах прогноза, разделение development и retrospective периодов, честный вывод, что LightGBM не лучше везде и в продукте оставлен объяснимый EWMA. У каждой позиции возвращается использованный forecast_method.
Стек
Python · FastAPI · SQLAlchemy · Alembic · PostgreSQL 17 · React · uv · Make · Docker · GitHub Actions · LightGBM
Проект создан за 5 часов на финале хакатона HackAlem.ai (23 сентября 2026, Астана). Код — BAITC-Hacks/hack-f5ec9a3e-codex-make-no-mistakes.
README
README.mdhack-f5ec9a3e-codex-make-no-mistakes
Hackathon team repository for Codex, make no mistakes
HackAlem AI case: supplier order recommendations for Elektrokomplekt LLP (ekt.kz).
Forecasting: what we use and what the research found
Operational choice: uncapped weekly EWMA, selected through forecast_method: "auto".
There is no universally best model in the experiments. EWMA is our explainable
baseline for purchasing; full-feature Tweedie LightGBM is the strongest ML challenger,
not a validated replacement across all suppliers and forecast periods.
The calculation API and imported-source preparation support automatic forecasting:
- With at least 56 declared history days, use the last eight weeks with weights
0.72 ** floor(age_in_days / 7), without automatically capping large sales. - With shorter history, or explicit stockout compensation, use the existing historical-mean policy. An explicitly entered daily-demand assumption takes precedence.
- Forecast the user's inclusive start/end dates, then apply scenario factors, buffer, eligible stock/transit, unit conversion, minimum order and order multiples. Supplier lead time controls arrival timing; it is not added to a custom date range.
- Return
forecast_methodwith each result. Existing API callers that omit the selector retainhistory_mean; new source-prepared scenarios opt intoauto. Bulk exclusion and stockout compensation remain off unless explicitly requested.
Seven registered experiments share 65,754 forecast keys. The table compares 2026 retrospective WAPE (%; lower is better) with the development-selected benchmark, which is not the same as the uncapped application EWMA.
| Supplier / unit / horizon | Selected benchmark | Full Tweedie | Finding |
|---|---|---|---|
| IEK / meters / 28 days | 64.977 | 58.803 | Strong ML lead; Tweedie lost in 2025 development |
| IEK / packs / 28 days | 42.567 | 46.293 | Capped baseline has lower error, with more underforecasting |
| IEK / pieces / 28 days | 40.245 | 40.152 | Small difference; no convincing general replacement |
| Systeme / pieces / 28 days | 42.760 | 42.430 | Small difference; monitor bias as well as error |
The narrower IEK packs, 7-day, Tweedie without weekly-lag features candidate scored 66.990 vs 81.969 retrospectively and 51.634 vs 51.879 in development. Automatic cleaning worsened every 28-day baseline group. Combined raw/clean/bulk features, SBA and TSB did not establish a universal improvement. Keep raw demand and validate challengers at the actual purchasing horizon before promotion.
These are forecasts of recorded positive sales, not unconstrained demand or proven inventory savings. WAPE is not an accuracy percentage. July–December 2025 was used for selection; January–August 2026 has already informed multiple experiments and is retrospective, not a fresh test. Arbitrary custom horizons are extrapolations; LightGBM and calibrated safety buffers are not connected as automatic defaults.
Evidence: registered comparison, baseline findings, ablation findings, cleaning findings, combined features. Implementation: calculation policy, custom-period contract.
Промышленный базовый выбор — недельный EWMA без ограничения пиков; при короткой истории используется среднее. Tweedie — перспективный кандидат для отдельных групп и горизонтов, а не доказанный общий победитель. Собственные даты передаются в расчёт, а использованный метод возвращается для каждой позиции. Built within 3 hours: an end-to-end supplier order recommendation prototype with Excel ingestion, demand forecasting, order drafts, CSV export and a React interface.
Deployment
Requires GNU Make, uv, Node.js 22+ and PostgreSQL 17. On the server, from the repository root, set a connection URL for an empty application database:
export DATABASE_URL='postgresql+psycopg://USER:[скрыто]@HOST:5432/replenishment'
make install migrate import-data calculate build
cd backend
uv run --frozen uvicorn replenishment.api.app:create_app --factory --host 127.0.0.1 --port 8000
Keep the API running with a service manager (e.g. systemd). Configure an HTTPS
web server to serve frontend/dist and proxy /api/* to 127.0.0.1:8000,
preserving the path. Use deployment credentials; the bundled Compose starts
only a development database. For a local demo, use make dev-setup, then
make dev-api and make dev-ui in separate terminals.
Development tasks
Run make help from the repository root. Requires GNU Make, uv, Node.js 22+;
Docker is needed for database tasks. On Windows use a POSIX shell with Make,
or the native PowerShell commands in backend setup.
make dev-setup # Install dependencies, start DB, migrate, import workbooks
make dev-api # API with reload; keep running
make dev-ui # Frontend; run in a second terminal
make check # Lint, DB-free tests, frontend build, registry guards
make test-eval # Evaluation contracts and tests only; no DB
make evaluate # Evaluate monthly three-period forecasts on original documents
make calculate # Persist pinned forecast/order drafts in PostgreSQL
make install installs dependencies without starting Docker. make test runs
backend and frontend tests; make test-postgres requires an explicitly set
TEST_DATABASE_URL pointing to a dedicated empty *_test database (creation
instructions in the backend setup). DATABASE_URL defaults to local Compose;
override it through the environment when needed. make db-stop preserves data.
The main application implements the v2 forecast-first contract. Development origins are
June–September 2025; the January–May 2026 comparison is retrospective.
make test-eval-strict and make evaluate-strict exercise the implemented calculation contract. Reports use new immutable
directories under artifacts/inventory-evaluation/. See the
evaluation protocol. Forecast research retains its
separate Python 3.10 environment.
Start with the project documentation, then read the
project context and data guide.
The original brief and all 12 extracted supplier workbooks are included in docs/.
Current state: source documentation, audit checks, Excel ingestion, read API and React source tables, plus backend purchasing calculations, saved scenario revisions, approval and CSV export are implemented. The new Elektrokomplekt purchasing workspace connects imported products, calculation, saved revisions, approval and CSV export to the backend. Explicitly labelled synthetic examples remain available. Calculable v0 recommendations are explicitly labelled scenarios. See the current verification and demo walkthrough. Start with purchasing backend RU/EN and the parallel execution plan. See backend setup RU/EN, architecture and Excel-to-database mapping.
Текущее состояние: импорт Excel, API чтения и React-таблицы, backend расчёта закупок, сохранение версий, утверждение и CSV. Новое рабочее место Электрокомплект подключено к backend: импортированные товары, расчёт, версии сценариев, утверждение и CSV. Учебные примеры явно обозначены. Актуальная проверка и сценарий показа: RU/EN. Current state: source documentation, locked audit checks, modular SQLAlchemy models, PostgreSQL migration, Excel ingestion, read API and React tables are implemented. The forecast-first calculation, supplier draft persistence and CSV export are the main backend path. See backend setup RU/EN, architecture and Excel-to-database mapping.
Текущее состояние: документация, проверки аудита, модульные модели SQLAlchemy, миграция PostgreSQL, импорт Excel, API чтения и React-таблицы. Основной forecast-first расчёт, сохранение черновиков и CSV-экспорт доступны через CLI.
Запуск / Run: backend + import, frontend. API: contract RU/EN. UI scope: requirements RU/EN.
Проверка импорта / Import validation: independent data-quality report and reproduction command.
Согласованные требования к стеку, запуску через F5 и Docker, сценариям и демонстрации: план сдачи RU/EN. Инструкции запуска: Docker и F5.
Approved stack, F5/Docker startup, scenarios and demonstration requirements: delivery plan RU/EN. See Docker and F5 startup; Docker was verified, F5 configuration has not been launched in VS Code.
Авторы коммитов
История коммитов
- 2026-09-23 18:02fix: preserve legacy scenario databases after backend mergeDimash Isenov
- 2026-09-23 17:59merge: retain published frontend alongside backend integrationDimash Isenov
- 2026-09-23 17:58merge: integrate calculation backend with purchasing frontendDimash Isenov
- 2026-09-23 17:56feat: publish purchasing frontend with custom forecast datesDimash Isenov
- 2026-09-23 17:52feat: connect purchasing frontend to automatic forecast calculationsDimash Isenov
- 2026-09-23 17:51chore: update README.mdAlexander Los
- 2026-09-23 17:50Add files via uploadaftermath-source
- 2026-09-23 17:49feat: evaluation checks improvementsAlexander Los
Все коммиты (27)
- 2026-09-23 17:41feat: checkpoint purchasing app and planning workflowsDimash Isenov
- 2026-09-23 17:34research: evaluate calibrated replenishment buffersIssenov Dinmukhamed
- 2026-09-23 17:18feat: core engine & order draftsAlexander Los
- 2026-09-23 17:17research: audit replenishment and validate application baselineIssenov Dinmukhamed
- 2026-09-23 16:39feat: recommend client shipment quantities and delivery routesDimash Isenov
- 2026-09-23 16:39feat: add shared backend forecast metricsDimash Isenov
- 2026-09-23 16:38feat: import local purchasing frontendCodex
- 2026-09-23 16:33feat: isolate and verify purchasing planning and approval backendDimash Isenov
- 2026-09-23 15:47feat: add evaluation test and MakefileAlexander Los
- 2026-09-23 15:16feat: independently audit Excel imports and publish quality reportDimash Isenov
- 2026-09-23 15:09docs: define business readiness and purchasing acceptance contractDimash Isenov
- 2026-09-23 15:00Merge remote-tracking branch 'origin/main'Dimash Isenov
- 2026-09-23 15:00Compare LightGBM feature ablations and register resultsDimash Isenov
- 2026-09-23 14:58feat: add AGENTS.mdAlexander Los
- 2026-09-23 14:56feat: import supplier Excel into PostgreSQL and browse source dataDimash Isenov
- 2026-09-23 14:45Publish forecasting experiments and shared run registryDimash Isenov
- 2026-09-23 14:24feat: add modular Excel data schema and lock audit baselineDimash Isenov
- 2026-09-23 14:04docs: record approved delivery plan and data auditDimash Isenov
- 2026-09-23 13:42docs: import hackathon materials and project contextDimash Isenov
Структура репозитория (344 файлов)
.dockerignore .env.example .github/workflows/backend.yml .gitignore AGENTS.md Makefile README.md artifacts/almaty-routing/locations.geojson artifacts/almaty-routing/osrm-baseline-day0.json artifacts/almaty-routing/osrm-baseline-day3.json artifacts/almaty-routing/osrm-proposed-day0.json artifacts/almaty-routing/osrm-proposed-day3.json artifacts/almaty-routing/results.json artifacts/almaty-routing/routes.geojson artifacts/almaty-routing/scenario.json artifacts/demand-experiment/coverage.csv artifacts/demand-experiment/diagnostics.json artifacts/demand-experiment/metrics.csv artifacts/demand-experiment/monthly_metrics.csv artifacts/demand-experiment/results.json artifacts/intermittent-experiment/grid_development.csv artifacts/intermittent-experiment/metrics.csv artifacts/intermittent-experiment/monthly_metrics.csv artifacts/intermittent-experiment/results.json artifacts/lightgbm-ablation/feature_importance.csv artifacts/lightgbm-ablation/metrics.csv artifacts/lightgbm-ablation/monthly_metrics.csv artifacts/lightgbm-ablation/results.json artifacts/lightgbm-ablation/training.csv artifacts/lightgbm-experiment/feature_importance.csv artifacts/lightgbm-experiment/metrics.csv artifacts/lightgbm-experiment/monthly_metrics.csv artifacts/lightgbm-experiment/results.json artifacts/lightgbm-experiment/training.csv artifacts/source-upload-verification.json artifacts/verify_source_upload.py backend/API.md backend/ARCHITECTURE.md backend/DELIVERY_PLANNING.md backend/Dockerfile backend/IMPORTING.md backend/PLANNING.md backend/README.md backend/alembic.ini backend/migrations/env.py backend/migrations/script.py.mako backend/migrations/versions/0001_excel_data_foundation.py backend/migrations/versions/0002_forecast_first_calculation.py backend/migrations/versions/0003_employee_order_documents.py backend/migrations/versions/0004_order_scenarios.py backend/pyproject.toml backend/src/replenishment/.DS_Store backend/src/replenishment/__init__.py backend/src/replenishment/api/__init__.py backend/src/replenishment/api/app.py backend/src/replenishment/api/deliveries.py backend/src/replenishment/api/ordering.py backend/src/replenishment/api/orders.py backend/src/replenishment/api/planning_sources.py backend/src/replenishment/api/uploads.py backend/src/replenishment/browsing/__init__.py backend/src/replenishment/browsing/tables.py backend/src/replenishment/calculation/__init__.py backend/src/replenishment/calculation/contracts.py backend/src/replenishment/calculation/evaluation.py backend/src/replenishment/calculation/forecasting.py backend/src/replenishment/calculation/inputs.py backend/src/replenishment/calculation/llm.py backend/src/replenishment/calculation/ml.py backend/src/replenishment/calculation/models.py backend/src/replenishment/calculation/persistence.py backend/src/replenishment/calculation/purchasing.py backend/src/replenishment/catalog/__init__.py backend/src/replenishment/catalog/models.py backend/src/replenishment/catalog/writing.py backend/src/replenishment/cli/__init__.py backend/src/replenishment/cli/almaty_routes.py backend/src/replenishment/cli/audit_data.py backend/src/replenishment/cli/calculate.py backend/src/replenishment/cli/import_excel.py backend/src/replenishment/cli/planning_demo.py backend/src/replenishment/cli/reconcile_legacy_scenarios.py backend/src/replenishment/cli/routing_demo.py backend/src/replenishment/cli/seed_demo.py backend/src/replenishment/delivery_planning.py backend/src/replenishment/delivery_planning_demo.py backend/src/replenishment/demand/__init__.py backend/src/replenishment/demand/cleaning.py backend/src/replenishment/demand/models.py backend/src/replenishment/demand/writing.py backend/src/replenishment/evaluation/__init__.py backend/src/replenishment/evaluation/artifacts.py backend/src/replenishment/evaluation/runner.py backend/src/replenishment/evaluation/sources.py backend/src/replenishment/intake/__init__.py backend/src/replenishment/intake/adapters/__init__.py backend/src/replenishment/intake/adapters/csv.py backend/src/replenishment/intake/adapters/normalization.py backend/src/replenishment/intake/adapters/xlsx.py backend/src/replenishment/intake/models.py backend/src/replenishment/intake/writing.py backend/src/replenishment/inventory/__init__.py backend/src/replenishment/inventory/models.py backend/src/replenishment/inventory/writing.py backend/src/replenishment/kernel/__init__.py backend/src/replenishment/kernel/db.py backend/src/replenishment/metrics/__init__.py backend/src/replenishment/ordering/__init__.py backend/src/replenishment/ordering/documents.py backend/src/replenishment/ordering/models.py backend/src/replenishment/orders/__init__.py backend/src/replenishment/orders/models.py backend/src/replenishment/orders/writing.py backend/src/replenishment/planning/__init__.py backend/src/replenishment/planning/calculator.py backend/src/replenishment/planning/demo.py backend/src/replenishment/planning/models.py backend/src/replenishment/planning_sources.py backend/src/replenishment/routing.py backend/src/replenishment/routing_osrm.py backend/src/replenishment/schema.py backend/src/replenishment/supply/__init__.py backend/src/replenishment/supply/models.py backend/src/replenishment/supply/writing.py backend/tests/evaluation/__init__.py backend/tests/evaluation/cases.py backend/tests/evaluation/conftest.py backend/tests/evaluation/leftovers.py backend/tests/evaluation/test_app.py backend/tests/evaluation/test_evaluation.py backend/tests/evaluation/test_leftovers.py backend/tests/test_api.py backend/tests/test_audit_baseline.py backend/tests/test_calculation_storage.py backend/tests/test_custom_forecast.py backend/tests/test_data_audit.py backend/tests/test_database.py backend/tests/test_delivery_planning.py backend/tests/test_demand_cleaning.py backend/tests/test_evaluation_acceptance.py backend/tests/test_evaluation_artifacts.py backend/tests/test_excel_import.py backend/tests/test_forecast_completion.py backend/tests/test_forecasting.py backend/tests/test_legacy_reconcile.py backend/tests/test_llm.py backend/tests/test_metrics.py backend/tests/test_ordering.py backend/tests/test_orders.py backend/tests/test_orders_postgres.py backend/tests/test_planning_calculator.py backend/tests/test_planning_sources.py backend/tests/test_purchasing_acceptance.py backend/tests/test_routing.py backend/tests/test_routing_osrm.py backend/tests/test_uploads.py backend/tests/test_worksheet_mapping.py backend/uv.lock compose.yaml docs/ALMATY_ROUTING_RESULTS.md docs/BACKEND_ACCEPTANCE.md docs/BACKLOG.md docs/BUSINESS_READINESS.md docs/COMBINED_FORECAST_EXPERIMENT.md docs/COMBINED_FORECAST_RESULTS.md docs/CUSTOM_FORECAST_PERIOD.md docs/DATA_AUDIT.md docs/DATA_GUIDE.md docs/DATA_MODEL.md docs/DECISIONS.md docs/DELIVERY_PLAN.md docs/DELIVERY_VERIFICATION.md docs/DEMAND_CLEANING.md docs/DEMAND_CLEANING_RESULTS.md docs/DEMAND_EXPERIMENT.md docs/DEMAND_RESULTS.md docs/EVALUATION_PIPELINE.md docs/FINAL_FORECAST_EVALUATION.md docs/FRONTEND_REQUIREMENTS.md docs/INTERMITTENT_EXPERIMENT.md docs/INTERMITTENT_RESULTS.md docs/INVENTORY_EVALUATION.md docs/KAGGLE_RESEARCH.md docs/LIGHTGBM_ABLATION.md docs/LIGHTGBM_EXPERIMENT.md docs/MULTIDAY_ROUTING.md docs/PARALLEL_DELIVERY_PLAN.md docs/PLANNING_API.md docs/PROJECT_CONTEXT.md docs/PURCHASING_CONTRACT.md docs/README.md docs/ROUTE_OPTIMIZATION_RESEARCH.md docs/STARTUP.md docs/data/IEK/MOQ ИЭК.xlsx docs/data/IEK/Динамика продаж_2025-2026.xlsx docs/data/IEK/Ежемесячные остатки продукции за последние 2 года ИЭК.xlsx docs/data/IEK/Ежемесячные продажи в количественном выражении за последние 2 года.xlsx docs/data/IEK/Путь ИЭК 22.09.2026.xlsx docs/data/IEK/Сезонность ИЭК.xlsx docs/data/Systeme electric/MOQ SystemElectric.xlsx docs/data/Systeme electric/Динамика продаж_Syseme Electric_2025-2026.xlsx docs/data/Systeme electric/Ежемесячные остатки SystemElectric 2024-2026.xlsx docs/data/Systeme electric/Ежемесячные продажи в кол-м выражении SystemElectric 2024-2026.xlsx docs/data/Systeme electric/Сезонность SystemElectric 2024-2026.xlsx docs/data/Systeme electric/Товар в пути_SystemElectric на 22.09.2026.xlsx docs/reports/data-quality.json docs/reports/data-quality.md docs/sources/HackAlem AI_ Автоматизация формирования заказов поставщикам.docx.md docs/sources/HackAlem AI_ Автоматизация формирования заказов поставщикам.docx.pdf docs/sources/almaty-routing/locations.json docs/sources/almaty-routing/osrm-table.json docs/sources/audit-baseline.json docs/sources/manifest.json docs/sources/workbook-inventory.json experiments/.gitignore experiments/INDEX.md experiments/README.md experiments/comparison.csv experiments/monthly/20260923-forecast-first/code/backend/src/replenishment/calculation/__init__.py experiments/monthly/20260923-forecast-first/code/backend/src/replenishment/calculation/contracts.py experiments/monthly/20260923-forecast-first/code/backend/src/replenishment/calculation/evaluation.py experiments/monthly/20260923-forecast-first/code/backend/src/replenishment/calculation/forecasting.py experiments/monthly/20260923-forecast-first/code/backend/src/replenishment/calculation/inputs.py experiments/monthly/20260923-forecast-first/code/backend/src/replenishment/calculation/llm.py experiments/monthly/20260923-forecast-first/code/backend/src/replenishment/calculation/ml.py experiments/monthly/20260923-forecast-first/code/backend/src/replenishment/calculation/models.py experiments/monthly/20260923-forecast-first/code/backend/src/replenishment/calculation/persistence.py experiments/monthly/20260923-forecast-first/code/backend/src/replenishment/calculation/purchasing.py experiments/monthly/20260923-forecast-first/code/backend/src/replenishment/intake/adapters/normalization.py experiments/monthly/20260923-forecast-first/code/backend/src/replenishment/intake/adapters/xlsx.py experiments/monthly/20260923-forecast-first/code/backend/tests/evaluation/cases.py experiments/monthly/20260923-forecast-first/code/backend/tests/evaluation/contracts.py experiments/monthly/20260923-forecast-first/code/experiments/requirements.txt experiments/monthly/20260923-forecast-first/code/scripts/backtest_monthly_lightgbm.py experiments/monthly/20260923-forecast-first/results.json experiments/requirements.txt experiments/routing/20260923T111348Z-almaty-road-v1/code/backend/pyproject.toml experiments/routing/20260923T111348Z-almaty-road-v1/code/backend/src/replenishment/cli/almaty_routes.py experiments/routing/20260923T111348Z-almaty-road-v1/code/backend/src/replenishment/routing.py experiments/routing/20260923T111348Z-almaty-road-v1/code/backend/src/replenishment/routing_osrm.py experiments/routing/20260923T111348Z-almaty-road-v1/code/backend/tests/test_routing.py experiments/routing/20260923T111348Z-almaty-road-v1/code/backend/tests/test_routing_osrm.py experiments/routing/20260923T111348Z-almaty-road-v1/code/backend/uv.lock experiments/routing/20260923T111348Z-almaty-road-v1/locations.geojson experiments/routing/20260923T111348Z-almaty-road-v1/locations.json experiments/routing/20260923T111348Z-almaty-road-v1/manifest.json experiments/routing/20260923T111348Z-almaty-road-v1/osrm-baseline-day0.json experiments/routing/20260923T111348Z-almaty-road-v1/osrm-baseline-day3.json experiments/routing/20260923T111348Z-almaty-road-v1/osrm-proposed-day0.json experiments/routing/20260923T111348Z-almaty-road-v1/osrm-proposed-day3.json experiments/routing/20260923T111348Z-almaty-road-v1/osrm-table.json experiments/routing/20260923T111348Z-almaty-road-v1/results.json experiments/routing/20260923T111348Z-almaty-road-v1/routes.geojson experiments/routing/20260923T111348Z-almaty-road-v1/scenario.json experiments/routing/README.md experiments/runs/20260923T093731649804Z-baseline-v1/code/backtest_demand.py experiments/runs/20260923T093731649804Z-baseline-v1/diagnostics.json experiments/runs/20260923T093731649804Z-baseline-v1/manifest.json experiments/runs/20260923T093731649804Z-baseline-v1/results.json experiments/runs/20260923T093758721157Z-intermittent-v1/code/backtest_demand.py experiments/runs/20260923T093758721157Z-intermittent-v1/code/backtest_intermittent.py experiments/runs/20260923T093758721157Z-intermittent-v1/manifest.json experiments/runs/20260923T093758721157Z-intermittent-v1/results.json experiments/runs/20260923T093912139814Z-lightgbm-v1/code/backtest_demand.py experiments/runs/20260923T093912139814Z-lightgbm-v1/code/backtest_intermittent.py experiments/runs/20260923T093912139814Z-lightgbm-v1/code/backtest_lightgbm.py experiments/runs/20260923T093912139814Z-lightgbm-v1/manifest.json experiments/runs/20260923T093912139814Z-lightgbm-v1/results.json experiments/runs/20260923T095929639835Z-lightgbm-ablation-v1/code/backtest_demand.py experiments/runs/20260923T095929639835Z-lightgbm-ablation-v1/code/backtest_intermittent.py experiments/runs/20260923T095929639835Z-lightgbm-ablation-v1/code/backtest_lightgbm.py experiments/runs/20260923T095929639835Z-lightgbm-ablation-v1/code/summarize_lightgbm_ablation.py experiments/runs/20260923T095929639835Z-lightgbm-ablation-v1/manifest.json experiments/runs/20260923T095929639835Z-lightgbm-ablation-v1/results.json experiments/runs/20260923T101945737047Z-demand-cleaning-v1/code/backtest_cleaning.py experiments/runs/20260923T101945737047Z-demand-cleaning-v1/code/backtest_demand.py experiments/runs/20260923T101945737047Z-demand-cleaning-v1/code/backtest_intermittent.py experiments/runs/20260923T101945737047Z-demand-cleaning-v1/code/cleaning.py experiments/runs/20260923T101945737047Z-demand-cleaning-v1/manifest.json experiments/runs/20260923T101945737047Z-demand-cleaning-v1/results.json experiments/runs/20260923T102653146360Z-lightgbm-cleaning-v1/code/backtest_cleaning.py experiments/runs/20260923T102653146360Z-lightgbm-cleaning-v1/code/backtest_demand.py experiments/runs/20260923T102653146360Z-lightgbm-cleaning-v1/code/backtest_intermittent.py experiments/runs/20260923T102653146360Z-lightgbm-cleaning-v1/code/backtest_lightgbm.py experiments/runs/20260923T102653146360Z-lightgbm-cleaning-v1/code/cleaning.py experiments/runs/20260923T102653146360Z-lightgbm-cleaning-v1/manifest.json experiments/runs/20260923T102653146360Z-lightgbm-cleaning-v1/results.json experiments/runs/20260923T104442154821Z-lightgbm-combined-v1/code/backtest_cleaning.py experiments/runs/20260923T104442154821Z-lightgbm-combined-v1/code/backtest_demand.py experiments/runs/20260923T104442154821Z-lightgbm-combined-v1/code/backtest_intermittent.py experiments/runs/20260923T104442154821Z-lightgbm-combined-v1/code/backtest_lightgbm.py experiments/runs/20260923T104442154821Z-lightgbm-combined-v1/code/cleaning.py experiments/runs/20260923T104442154821Z-lightgbm-combined-v1/code/summarize_combined_forecast.py experiments/runs/20260923T104442154821Z-lightgbm-combined-v1/manifest.json experiments/runs/20260923T104442154821Z-lightgbm-combined-v1/results.json frontend/.gitignore frontend/Dockerfile frontend/README.md frontend/index.html frontend/nginx.conf frontend/package-lock.json frontend/package.json frontend/public/favicon.svg frontend/src/purchasing/api.js frontend/src/purchasing/connected-workspace.jsx frontend/src/purchasing/connected-workspace.test.jsx frontend/src/purchasing/data-sources.css frontend/src/purchasing/data-sources.jsx frontend/src/purchasing/data-sources.test.jsx frontend/src/purchasing/elektro-workspace.jsx frontend/src/purchasing/elektro-workspace.test.jsx frontend/src/purchasing/elektro.css frontend/src/purchasing/forecast-period.jsx frontend/src/purchasing/forecast-period.test.jsx frontend/src/purchasing/main.jsx frontend/src/purchasing/period.css frontend/src/purchasing/planning-api.js frontend/src/purchasing/planning-api.test.js frontend/src/purchasing/product-evidence.css frontend/src/purchasing/product-evidence.jsx frontend/src/purchasing/purchasing-data.js frontend/src/purchasing/purchasing-prototype.css frontend/src/purchasing/replenishment-demo.js frontend/src/purchasing/replenishment-demo.test.js frontend/src/purchasing/saved-orders.jsx frontend/src/purchasing/source-tables.jsx frontend/src/purchasing/source-tables.test.jsx frontend/tsconfig.json frontend/vite.config.ts frontend/zakupki.html scripts/backtest_cleaning.py scripts/backtest_demand.py scripts/backtest_intermittent.py scripts/backtest_lightgbm.py scripts/backtest_monthly_lightgbm.py scripts/check_eval_contract.py scripts/check_experiment_registry.py scripts/evaluate.py scripts/register_experiment.py scripts/summarize_cleaning_experiment.py scripts/summarize_combined_forecast.py scripts/summarize_demand_experiment.py scripts/summarize_lightgbm_ablation.py scripts/verify_purchasing_http.py
Обсуждение 0 комментариев
Войдите, чтобы комментироватьПока нет комментариев — будьте первым.