О проекте
Команда: Tirek Systems and Solutions
Кейс HackAlem.ai: Логистика — Электрокомплект · ekt.kz
Стадия: Доведённый продукт
Задача кейса: Автоматический расчёт заказов поставщикам для пополнения склада, с утверждением менеджером
Суть
Платформа рекомендаций пополнения склада: импорт XLSX Systeme Electric и IEK, 28-дневный прогноз продаж CatBoost, расчёт количества заказа с MOQ/кратностью, корректировка и утверждение менеджером, экспорт CSV.
Как устроено
XLSX проверяются (SHA-256, версия набора), нормализуются; прогноз v2 (CatBoost-модели по поставщику/единице, ridge, смеси с baseline, выбранные по трём временным validation-окнам) даёт спрос на 28 дней. Модуль решения учитывает свободный запас, поступления, обязательства, MOQ и кратность партии; модуль регулярного спроса отделяет разовые крупные покупки в 7-дневных окнах. FastAPI + SQLite с аутентификацией и рабочими пространствами, React-интерфейс для проверки, корректировки с причиной и утверждения; опциональный AI-review.
Ключевые решения
- CatBoost
- Ridge regression
- Poisson loss
- temporal backtesting
- WAPE
- MOQ/кратность партии
- stockout correction
- ablation
Метрики
WAPE v2: SE шт. 33.92% (baseline v1 37.73%), IEK м 56.64%, IEK упак. 26.89%, IEK шт. 33.30%
Особенности
Очень честная методология: null вместо нулей для неизвестных данных, блокировка итогового количества при недостатке данных, отдельный testbed с аудитом утечек, OpenAPI-контракты и e2e-тесты Playwright; явно признаётся, что цель WAPE ≤10% не достигнута.
Стек
Python · FastAPI · SQLite · pandas · SciPy · CatBoost · React 19 · TypeScript · Vite · Recharts · Playwright · Docker
Проект создан за 5 часов на финале хакатона HackAlem.ai (23 сентября 2026, Астана). Код — BAITC-Hacks/hack-e1c6f154-tirek-systems-and-solutions.
README
README.mdTirek — рекомендации по пополнению склада
Проект команды Tirek Systems and Solutions для HackAlem AI. Кейс ТОО «Электрокомплект»: автоматический расчёт заказов поставщикам.
Tirek помогает закупщику перейти от ручного сведения Excel к списку закупок с объяснением каждой позиции. Система учитывает прогноз продаж, остатки, поступления и ограничения партии. Менеджер проверяет рекомендации, меняет количество с указанием причины, утверждает снимок заказа и скачивает CSV. Цель — уменьшить дефицит, излишки и время подготовки заказа; экономический эффект в эксплуатации пока не измерен.
Жюри: запуск · проверка за 5 минут · метрики · подробный сценарий · анализ соответствия условиям.
Что можно проверить
- Регистрацию, вход, восстановление сессии, выход и смену пароля. Каждый аккаунт получает отдельное рабочее пространство: файлы, расчёты и решения не видны другим аккаунтам.
- Встроенного помощника: локальная справка доступна без ключа; внешний ИИ подключается администратором через серверные переменные окружения.
- Обзор склада, поиск и группировку рекомендаций по поставщику, карточку товара, историю спроса, причины решения и отсутствующие данные.
- Полный демонстрационный цикл: корректировка → утверждение → экспорт → повторное скачивание сохранённого снимка.
- Импорт совместимых XLSX Systeme Electric и IEK, нормализацию, прогноз v2 и расчёт потребности при наличии подтверждённого текущего остатка и условий партии.
- Скачивание учебного ZIP в «Источниках данных»: синтетические Excel проходят настоящий расчёт, отдельно от встроенного демо с заранее подготовленными числами.
- Сохранённые веса, протокол временной проверки, сравнение с baseline и тесты бизнес-правил.
Два режима проверки: встроенное демо содержит 12 синтетических товаров
и работает без партнёрских файлов и API-ключей. Его числа подготовлены заранее,
forecast.method=contract_example. Реальный адаптер запускает сохранённую модель
на локальных XLSX; исходные данные партнёра в Git не включены.
При переданных точных интервалах stockout и обезличенных клиентских метках адаптер
применяет модуль регулярного спроса к затронутым товарам; метод и поправки видны
в обосновании и требуют ручной проверки. Без этого контекста используется сохранённый
прогноз v2, а отсутствие данных явно указывается. В исходных партнёрских XLSX таких
меток нет: это не доказательство качества коррекции на реальном бизнесе.
Проверка MVP.
Быстрый запуск
Нужны Git, Python 3.12, Node.js 20.19+ и npm. Команды выполняются из корня проекта. Для первой установки зависимостей нужен интернет. Docker, внешняя база, обучение модели и ключ LLM не требуются.
git clone https://github.com/BAITC-Hacks/hack-e1c6f154-tirek-systems-and-solutions.git
cd hack-e1c6f154-tirek-systems-and-solutions
Windows / PowerShell
py -3.12 -m venv .venv-ml
.\.venv-ml\Scripts\python.exe -m pip install -r backend/requirements-ml.txt
npm --prefix frontend ci
В первом терминале запустите API:
.\.venv-ml\Scripts\python.exe -m uvicorn backend.app.main:app --host 127.0.0.1 --port 8000
Во втором терминале из того же корня:
npm --prefix frontend run dev
Также доступен общий скрипт ./scripts/dev.ps1: он запускает оба сервера,
проверяет доступность API через Vite и сохраняет логи в .logs/.
Если PowerShell запрещает выполнение скрипта, используйте две команды выше.
Linux / macOS
python3.12 -m venv .venv-ml
.venv-ml/bin/python -m pip install -r backend/requirements-ml.txt
npm --prefix frontend ci
.venv-ml/bin/python -m uvicorn backend.app.main:app --host 127.0.0.1 --port 8000
Во втором терминале: npm --prefix frontend run dev.
Локальная проверка сдачи выполнялась на Windows.
| Адрес | Назначение |
|---|---|
| http://127.0.0.1:5173 | Приложение для жюри |
| http://127.0.0.1:8000/docs | Интерактивная документация API |
| http://127.0.0.1:8000/api/v1/health | Проверка работы API |
Первый запуск автоматически создаёт SQLite. Создайте аккаунт в форме регистрации:
имя, название рабочего пространства, email и пароль от 12 символов.
В личном пространстве появится явно помеченный демонстрационный набор.
Данные сохраняются в data/; другой каталог задаётся переменной DATA_DIR.
Остановка — Ctrl+C в каждом терминале. Настройки.
Проверка за 5 минут
- Откройте приложение, зарегистрируйтесь или войдите. Если раньше использовались другие данные, нажмите «Новый расчёт», выберите синтетический набор и стандартные параметры: 28 дней = 7 дней поставки + 21 день пересмотра.
- В «Рекомендациях» найдите
EZ9F34116и откройте карточку: доступны история, прогноз, остаток, партия и обоснование. - В «Корректировке» введите
13и причину: приложение должно отклонить количество, не кратное 12. Введите156и причину «Уточнён план монтажа», сохраните. - Отметьте позицию, нажмите «Утвердить (1)», затем
«Утвердить и скачать CSV». Проверьте в файле
final_quantity=156и причину. Заказ поставщику не отправляется. - В «Истории решений» повторно скачайте снимок. Найдите
A9R41240в рекомендациях: неизвестный остаток показан как—, указана причина отсутствия количества.
Полный сценарий, формат CSV и проверка реальных XLSX.
Технологии и архитектура
| Часть | Технологии и назначение |
|---|---|
| Интерфейс | React 19, TypeScript, Vite 7, React Router, Recharts, Radix Dialog |
| API и хранение | Python, FastAPI, Pydantic / JSON Schema, SQLite, фоновые задачи |
| Данные и прогноз | openpyxl, pandas, NumPy, SciPy, CatBoost; baseline и смеси моделей |
| Расчёт заказа | Python, дневные траектории, поступления, экономика, MOQ и кратность |
| Проверки | pytest, unittest, Playwright, OpenAPI 3.1 |
flowchart LR
XLSX[Локальные XLSX] --> N[Проверка и нормализация]
N --> F[Прогноз v2 на 28 дней]
F --> D[Расчёт потребности]
D --> API[FastAPI и SQLite]
DEMO[Синтетический набор] --> API
API <--> UI[React: проверка менеджером]
UI --> A[Утверждённый снимок]
A --> CSV[Экспорт CSV]
Методология
- Источники проверяются и получают SHA-256 и версию набора. Помесячные продажи
и детализация сверяются, а не складываются. Неизвестные значения остаются
null. - Прогноз v2 оценивает положительные наблюдаемые продажи на следующие 28 дней. Методы выбирались по трём временным validation-окнам; признаки используют только прошлое, финальные веса нельзя применять к более ранним датам.
- Расчёт учитывает свободный запас, даты поступлений, обязательства, внешний прирост и экономический профиль либо явно заданную политику категории. Неизвестные ограничения партии требуют проверки, недостаточные данные блокируют окончательное количество. Бюджет проверяется при утверждении.
- Подключённый модуль регулярного спроса оценивает спрос по доступным дням и группирует крупные клиентские покупки в семидневные окна. Повторяемые покупки сохраняются, разовый избыток помечается и исключается из регулярной оценки без удаления исходных событий. Это эвристика; в реальной выгрузке нет точных интервалов stockout и клиентских ID для подтверждения её качества.
Проверка модели на учебных Excel
.\.venv-ml\Scripts\python.exe scripts/generate_sample_data.py --output .local-data/samples
Генератор создаёт синтетические данные с сезонностью, stockout и разовой
покупкой. Это функциональный пример, а не данные партнёра или доказательство
точности. Во вкладке «Источники данных» выберите Systeme Electric, загрузите
шесть XLSX из .local-data/samples, вставьте содержимое
additional-context.SYNTHETIC.json в дополнительный контекст и нажмите
«Проверить и загрузить». Затем «Перейти к расчёту»:
- дата 22.09.2026, срок 7 дней, сценарный режим;
- категория политики:
Учебная категория, квантиль 90%, явное обоснование; - нажмите «Применить политику к расчёту», затем «Подготовить рекомендации».
Появятся четыре товара. Их числа рассчитываются моделью и правилами при запуске; готовые числа встроенного демо не используются. Откройте SYN-ONE-003: в обосновании показан исключённый разовый объём 300 шт. У SYN-OUT-002 учтён интервал отсутствия. Выберите позиции, изучите предупреждения и утвердите CSV. В снимке есть явные поля «Минимальная партия» и «Склад»; если их убрать, система запросит подтверждённые ограничения вместо скрытой подстановки.
Качество прогноза
Результаты сохранённой v2 на двух ретроспективных 28-дневных окнах:
| Поставщик / единица | WAPE v2 | MAE на товар × окно |
|---|---|---|
| Systeme Electric / шт. | 33,92% | 212,00 |
| IEK / м | 56,64% | 257,26 |
| IEK / упаковки | 26,89% | 13,77 |
| IEK / шт. | 33,30% | 24,81 |
WAPE = Σ|прогноз − продажи| / Σпродажи; меньше — лучше.
Для SE baseline v1: 37,73%, улучшение v2: 3,82 процентного пункта
по неокруглённым значениям. Это ошибка объёма продаж, а не доля верных решений.
Последние два окна уже использовались при разработке v1 и не являются новым
независимым тестом. Цель WAPE ≤10% не достигнута. Разные единицы не суммируются.
Полный отчёт · сохранённые метрики · воспроизведение и веса.
Автоматические проверки
Из корня после установки зависимостей (Windows; на Linux/macOS замените
.\.venv-ml\Scripts\python.exe на .venv-ml/bin/python):
.\.venv-ml\Scripts\python.exe scripts/validate_contract.py
.\.venv-ml\Scripts\python.exe -m pytest backend/tests model -q
npm --prefix frontend run build
При запущенных API и frontend, из каталога frontend/:
npx playwright install chromium --no-shell
npm run test:e2e:service
Playwright создаёт аккаунты, расчёты и утверждения: перед запуском API задайте
отдельный DATA_DIR=./.local-data/browser-service. Для ML-сценария сначала создайте
учебные файлы командой выше. Старый набор npm run test:e2e:legacy запускается
отдельно с другим DATA_DIR и TIREK_AUTH_DISABLED=1; не используйте этот режим на рабочей базе.
Подтверждено после объединения с обновлениями команды: 162 backend-теста / 10 подтестов,
181 модельный тест / 966 подтестов, 17 браузерных сценариев, включая SE и IEK
XLSX → ML → CSV. Ещё два браузерных прогона прошли на готовой сборке без Vite.
Подробности и границы: отчёт проверки MVP.
Дополнительно прошли 12 проверок складского шаблона IEK: дубли SKU, склад,
единицы, противоречивые остатки, ETA и неизвестный шаг единицы.
Метрики прогноза и успешность функциональных тестов оценивают разные свойства.
Ограничения и навигация
- Реальный веб-адаптер поддерживает расчёт SE, Алматы, штуки и IEK, Алматы, штуки/метры/упаковки. Старый импорт и прогноз IEK ранее проверены на 2 149 товарах. Новый текущий снимок IEK проверяется на учебных данных; без свободного остатка IEK заказ остаётся неопределённым. Образец снимка доступен в учебном ZIP IEK. Запуск на своих файлах и настройка ИИ. Универсального импорта Excel нет.
- «Настройки» содержат синтетическую симуляцию уровней остатка 40/30/20%. Состояния и события сохраняются отдельно для каждого аккаунта; намерение пересчёта фиксируется, но worker автоматического пересчёта ещё не подключён.
- При неизвестном MOQ и неподтверждённом складском снимке количество предварительное; утверждение неполных условий блокируется сервером.
- В реальном адаптере используется одна дневная траектория; вероятностная гарантия уровня обслуживания не подтверждена.
- LLM-проверка подключается настройками
backend/.env; без провайдера и модели она честно недоступна. Реальной отправки поставщикам, живой интеграции с 1С и подтверждённого импорта в конкретную конфигурацию 1С нет. - Сервис MVP рассчитан на один сервер и один процесс API. Есть cookie-сессии, защита CSRF, хеширование паролей, изоляция аккаунтов и журнал действий. Приглашения коллег, роли внутри компании, подтверждение email и восстановление забытого пароля по почте пока не реализованы. Партнёрские файлы и секреты не публикуются.
Аккаунты и помощник
Регистрация создаёт личное пространство, вход восстанавливает доступ к сохранённым
расчётам. «Настройки» позволяют изменить пароль; при этом прежние сессии отзываются.
Утверждение и ручные изменения записывают автора в журнал /api/v1/audit.
Cookie недоступна JavaScript, сессия действует 12 часов; запросы изменения данных
требуют CSRF-токен. TIREK_AUTH_DISABLED=1 предназначен только для изолированных
старых тестов. Не используйте его при общем развёртывании.
Помощник работает только на чтение. Без ключа он показывает локальную справку
по навигации и фактам выбранного расчёта, помеченную «Локальная справка».
Для внешнего диалога задайте в локальном backend/.env:
OPENAI_API_KEY=<новый ключ, не публикуйте его>
TIREK_ASSISTANT_MODEL=<доступная вашему проекту модель>
Перезапустите API. Текст вопроса передаётся OpenAI; выбранные факты расчёта —
только при включённом согласии в панели. Исходные Excel и клиентские события
помощник не отправляет. Используется Responses API
с store=false; это не равнозначно соглашению Zero Data Retention.
Ошибка провайдера отображается как ошибка, а не как успешный ответ ИИ.
Опциональная проверка одной позиции использует отдельные TIREK_LLM_* настройки.
Развёртывание одного экземпляра
Для запуска готового интерфейса без Vite:
npm --prefix frontend run build
.\.venv-ml\Scripts\python.exe -m uvicorn backend.app.main:app --host 127.0.0.1 --port 8000 --workers 1
Откройте http://127.0.0.1:8000: API и собранный интерфейс работают на одном
адресе. Также подготовлены Dockerfile и compose.yaml:
docker compose up --build -d, адрес http://127.0.0.1:8080, данные — в именованном
томе tirek-data. Контейнерная сборка требует Docker; факт её проверки отдельно
указан в отчёте.
Для внешнего сервера задайте HTTPS, TIREK_COOKIE_SECURE=1 и точный адрес фронтенда
в TIREK_ALLOWED_ORIGINS. Обязательно сохраняйте том с базой и загрузками.
SQLite и фоновые задачи рассчитаны на один процесс: после перезапуска
незавершённая задача получает ошибку и требует повторного запуска. Несколько
воркеров и автоматическое восстановление очереди в этот MVP не входят.
| Где смотреть | Содержание |
|---|---|
| Сценарий жюри | Проверки, XLSX и CSV |
| Анализ сдачи | Условия, готовность и оставшиеся задачи |
| Аудит интеграции | Проверки платформы и технические ограничения |
| Матрица кейса | Пять обязательных бизнес-требований |
| Backend, frontend | Запуск и устройство приложения |
| ML-интеграция | Реальный адаптер и расширение |
| Прогноз v2 | Текущая модель; v1 — предыдущий эксперимент |
| Расчёт заказа | Математика и ограничения |
| Синтетический testbed | Отдельная среда и её результаты |
| OpenAPI | API-контракт и типы |
| Спецификация, дизайн | Целевой продукт и интерфейс |
Планы в docs/ описывают целевой объём. Фактическое состояние реализации
и границы доказательств приведены в README и анализе сдачи.
Авторы коммитов
История коммитов
- 2026-09-23 16:25test: cover malformed IEK inventory and document verificationCodex
- 2026-09-23 16:20feat: deliver authenticated procurement MVP with verified ML workflowCodex
- 2026-09-23 17:06fix: close review and constraint confirmation gapsPerricheno
- 2026-09-23 17:04fix: align AI evidence and verification runtimePerricheno
- 2026-09-23 17:01merge: integrate corrected testbed and business regressionsPerricheno
- 2026-09-23 17:01feat: harden procurement logic and stock monitoringPerricheno
- 2026-09-23 16:52docs(testbed): preserve full regression and real-data replay evidencePerricheno
- 2026-09-23 16:48fix(testbed): close numeric and evidence gaps; connect real forecast reviewPerricheno
Все коммиты (34)
- 2026-09-23 16:34feat: run IEK forecasts from uploaded data and add optional AI reviewAdilzhan17
- 2026-09-23 16:33Record source review and verified corrected testbed resultsPerricheno
- 2026-09-23 16:27Fix audited testbed defects and verify original procurement requirementsPerricheno
- 2026-09-23 16:26test(testbed): record repaired candidate, source findings and regression resultsPerricheno
- 2026-09-23 16:23fix(testbed): repair data boundaries, procurement checks and source auditPerricheno
- 2026-09-23 16:15docs: prepare jury README, verification guide and submission analysisAdilzhan17
- 2026-09-23 16:13fix: verify model runtime and connect real calculation controlsAdilzhan17
- 2026-09-23 15:56fix: validate API responses and verify development startupAdilzhan17
- 2026-09-23 15:54feat: connect forecast and procurement model to platformPerricheno
- 2026-09-23 15:44Audit frozen testbed metrics, leakage and procurement boundariesPerricheno
- 2026-09-23 15:39merge: добавить воспроизводимую тестовую среду и независимый аудитPerricheno
- 2026-09-23 15:39merge: объединить прогноз v2 с платформой и расчётом закупокPerricheno
- 2026-09-23 15:38fix(forecast): проверять совместимость весов и нулевые окнаPerricheno
- 2026-09-23 15:33feat: add forecast v2 with temporal benchmarks and trained weightsPerricheno
- 2026-09-23 15:22test(testbed): audit leakage metrics and procurement edge casesPerricheno
- 2026-09-23 15:22feat: добавить проверяемую математику закупок и модель регулярного спросаPerricheno
- 2026-09-23 15:13test(testbed): record frozen final evaluation and reproducibility auditPerricheno
- 2026-09-23 15:11fix(testbed): write reproducible LF-terminated CSV reportsPerricheno
- 2026-09-23 15:11chore(testbed): freeze candidate before final seed evaluationPerricheno
- 2026-09-23 15:11feat(testbed): add isolated synthetic forecast and procurement evaluationPerricheno
- 2026-09-23 15:10feat: add Tirek procurement platform and APIAdilzhan17
- 2026-09-23 14:38feat: обучить CatBoost для 28-дневного прогноза продаж SEPerricheno
- 2026-09-23 14:26revert: убрать симуляцию и вернуть объём к ТЗ и обучению моделиPerricheno
- 2026-09-23 14:22feat: добавить интерактивную симуляцию уровней складского остаткаPerricheno
- 2026-09-23 14:13docs: добавить уровни остатка и реакцию на складские событияPerricheno
- 2026-09-23 14:09docs: подготовить ТЗ двух команд и API-контракт MVP на четыре часаPerricheno
Структура репозитория (267 файлов)
.dockerignore .gitattributes .gitignore AGENTS.md DESIGN.md Dockerfile PRODUCT.md README.md backend/.env.example backend/README.md backend/app/__init__.py backend/app/ai_review.py backend/app/assistant.py backend/app/auth.py backend/app/contracts.py backend/app/demand_context.py backend/app/demo.py backend/app/iek_adapter.py backend/app/ingestion.py backend/app/inventory_template.py backend/app/main.py backend/app/ml_adapter.py backend/app/pipeline.py backend/app/runtime.py backend/app/samples.py backend/app/stock.py backend/app/storage.py backend/app/web.py backend/requirements-ml.txt backend/requirements.lock.txt backend/requirements.txt backend/tests/test_ai_review.py backend/tests/test_assistant.py backend/tests/test_auth.py backend/tests/test_demand_context.py backend/tests/test_iek_adapter.py backend/tests/test_import_cli.py backend/tests/test_ingestion_identity.py backend/tests/test_inventory_template.py backend/tests/test_ml_adapter.py backend/tests/test_platform.py backend/tests/test_result_semantics.py backend/tests/test_runtime.py backend/tests/test_samples.py backend/tests/test_stock.py backend/tests/test_uploaded_sample.py backend/tests/test_web.py compose.yaml contracts/README.md contracts/example-schemas.json contracts/examples/additional-context.json contracts/examples/approval-request.json contracts/examples/approval.json contracts/examples/calculation-request.json contracts/examples/dataset-report.json contracts/examples/error.json contracts/examples/item-detail.json contracts/examples/job-succeeded.json contracts/examples/override-request.json contracts/examples/recommendations.json contracts/monitoring-examples/event.json contracts/monitoring-examples/result.json contracts/openapi.yaml contracts/requirements-dev.txt contracts/stock-monitoring.openapi.yaml docs/business-audit-2026-09-23.md docs/decision-rules.md docs/integration-audit.md docs/integration.md docs/jury-guide.md docs/live-forecast.md docs/ml-integration.md docs/model-backend-spec.md docs/mvp-verification.md docs/plan-4h.md docs/platform-spec.md docs/product-spec.md docs/requirements-matrix.md docs/stock-monitoring.md docs/submission-analysis.md frontend/.env.example frontend/.prettierrc.json frontend/README.md frontend/e2e/auth.spec.ts frontend/e2e/ml-workflow.spec.ts frontend/e2e/platform.spec.ts frontend/index.html frontend/package-lock.json frontend/package.json frontend/playwright.config.ts frontend/public/favicon.svg frontend/src/App.tsx frontend/src/api/client.ts frontend/src/api/schema.d.ts frontend/src/auth/AuthPage.tsx frontend/src/auth/SessionProvider.tsx frontend/src/components/AccountSettings.tsx frontend/src/components/Assistant.tsx frontend/src/components/DemandChart.tsx frontend/src/components/ItemDrawer.tsx frontend/src/components/RecommendationTable.tsx frontend/src/components/StockSimulator.tsx frontend/src/components/ui.tsx frontend/src/main.tsx frontend/src/pages/DataPage.tsx frontend/src/styles.css frontend/src/vite-env.d.ts frontend/tsconfig.json frontend/vite.config.ts model/README.md model/artifacts/evaluation.json model/artifacts/manifest.json model/artifacts/se-demand-28d.cbm model/benchmark_protocol.json model/decision/README.md model/decision/__init__.py model/decision/audit_math.py model/decision/core.py model/decision/math_audit.json model/decision/rules.py model/decision/test_core.py model/decision/test_integration.py model/decision/test_rules.py model/forecast_v2/.gitignore model/forecast_v2/README.md model/forecast_v2/REPORT.md model/forecast_v2/__init__.py model/forecast_v2/ablation.py model/forecast_v2/artifacts/IEK__metres-cb_mae_d4.cbm model/forecast_v2/artifacts/IEK__metres-cb_scaled_mae_d6.cbm model/forecast_v2/artifacts/IEK__packs-cb_scaled_poisson.cbm model/forecast_v2/artifacts/IEK__pieces-cb_scaled_mae_d4.cbm model/forecast_v2/artifacts/IEK__pieces-cb_scaled_poisson.cbm model/forecast_v2/artifacts/SE__pieces-cb_scaled_poisson.cbm model/forecast_v2/artifacts/SE__pieces-ridge_100.json model/forecast_v2/artifacts/ablation.json model/forecast_v2/artifacts/evaluation.json model/forecast_v2/artifacts/manifest.json model/forecast_v2/artifacts/selection.json model/forecast_v2/artifacts/selection.lock.json model/forecast_v2/artifacts/validation.json model/forecast_v2/artifacts/verification.json model/forecast_v2/data.py model/forecast_v2/features.py model/forecast_v2/methods.py model/forecast_v2/protocol.json model/forecast_v2/refine.py model/forecast_v2/report.py model/forecast_v2/reproduce.sh model/forecast_v2/requirements.txt model/forecast_v2/run.py model/forecast_v2/test_forecast_v2.py model/forecast_v2/verify.py model/infer.py model/lab/README.md model/lab/__init__.py model/lab/source_audit.json model/lab/sources.py model/lab/test_sources.py model/pipeline.py model/regular_forecast/README.md model/regular_forecast/__init__.py model/regular_forecast/predictor.py model/regular_forecast/test_predictor.py model/requirements.txt model/test_pipeline.py model/testbed/README.md model/testbed/RESULTS.md model/testbed/__init__.py model/testbed/adapters.py model/testbed/audits/2026-09-23/.gitignore model/testbed/audits/2026-09-23/REPORT.md model/testbed/audits/2026-09-23/audit.json model/testbed/audits/2026-09-23/business-run.log model/testbed/audits/2026-09-23/business.json model/testbed/audits/2026-09-23/business.md model/testbed/audits/2026-09-23/business.sh model/testbed/audits/2026-09-23/generator-run.log model/testbed/audits/2026-09-23/generator.json model/testbed/audits/2026-09-23/generator.md model/testbed/audits/2026-09-23/generator.sh model/testbed/audits/2026-09-23/metrics-run.log model/testbed/audits/2026-09-23/metrics.json model/testbed/audits/2026-09-23/metrics.md model/testbed/audits/2026-09-23/metrics.sh model/testbed/audits/2026-09-23/replay-driver.log model/testbed/audits/2026-09-23/replay.json model/testbed/audits/2026-09-23/replay.log model/testbed/audits/2026-09-23/replay.sh model/testbed/audits/2026-09-23/run.sh model/testbed/audits/2026-09-23/unit-tests.log model/testbed/audits/corrections/REPORT.md model/testbed/audits/corrections/business.md model/testbed/audits/corrections/development.log model/testbed/audits/corrections/example-orders.csv model/testbed/audits/corrections/final.log model/testbed/audits/corrections/metrics.md model/testbed/audits/corrections/regression-evidence.json model/testbed/audits/corrections/requirements.json model/testbed/audits/corrections/run.sh model/testbed/audits/corrections/source-inventory.json model/testbed/audits/corrections/summary.json model/testbed/audits/corrections/unit-tests.log model/testbed/audits/review-2/.gitignore model/testbed/audits/review-2/REPORT.md model/testbed/audits/review-2/business/driver.log model/testbed/audits/review-2/business/report.md model/testbed/audits/review-2/business/results.json model/testbed/audits/review-2/business/run.sh model/testbed/audits/review-2/generator/driver.log model/testbed/audits/review-2/generator/report.md model/testbed/audits/review-2/generator/results.json model/testbed/audits/review-2/generator/run.sh model/testbed/audits/review-2/metrics/driver.log model/testbed/audits/review-2/metrics/report.md model/testbed/audits/review-2/metrics/results.json model/testbed/audits/review-2/metrics/run.sh model/testbed/audits/review-2/root/development-replay.log model/testbed/audits/review-2/root/driver.log model/testbed/audits/review-2/root/final-replay.log model/testbed/audits/review-2/root/results.json model/testbed/audits/review-2/root/run.sh model/testbed/audits/review-2/root/unit-tests.log model/testbed/audits/review-2/run.sh model/testbed/audits/review-2/summary.json model/testbed/baseline.py model/testbed/business.py model/testbed/corrected-freeze.json model/testbed/correction_evidence.py model/testbed/fixtures/business_cases.json model/testbed/freeze.json model/testbed/generator.py model/testbed/metrics.py model/testbed/protocol.json model/testbed/reports/business.json model/testbed/reports/corrected-development/report.json model/testbed/reports/corrected-development/report.md model/testbed/reports/corrected-development/rows.csv model/testbed/reports/corrected-final/report.json model/testbed/reports/corrected-final/report.md model/testbed/reports/corrected-final/rows.csv model/testbed/reports/development/report.json model/testbed/reports/development/report.md model/testbed/reports/development/rows.csv model/testbed/reports/final/report.json model/testbed/reports/final/report.md model/testbed/reports/final/rows.csv model/testbed/reports/unit-tests.txt model/testbed/reports/verification.json model/testbed/requirement_checks.py model/testbed/run.py model/testbed/seasonal.py model/testbed/source_inventory.py model/testbed/tests/__init__.py model/testbed/tests/adapter_examples.py model/testbed/tests/test_boundary_corrections.py model/testbed/tests/test_business_corrections.py model/testbed/tests/test_requirement_corrections.py model/testbed/tests/test_source_inventory.py model/testbed/tests/test_testbed.py model/testbed/worker.py model/train.py scripts/dev.ps1 scripts/generate_sample_data.py scripts/import_local.py scripts/setup.ps1 scripts/validate_contract.py
Обсуждение 0 комментариев
Войдите, чтобы комментироватьПока нет комментариев — будьте первым.