AAYMA
RU
Войти

Umytpa

Внутренняя платформа планирования закупок для ekt.kz: по выгрузкам 1С (IEK, Systeme Electric) рассчитывает пополнение по SKU×склад, объясняет…

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

О проекте

Команда: hubtech
Кейс HackAlem.ai: Логистика — Электрокомплект · ekt.kz
Стадия: Доведённый продукт

Задача кейса: Автоматический расчёт заказов поставщикам для пополнения склада, с утверждением менеджером

Суть

Внутренняя платформа планирования закупок для ekt.kz: по выгрузкам 1С (IEK, Systeme Electric) рассчитывает пополнение по SKU×склад, объясняет количество, даёт менеджеру поправить и подтвердить позиции и выгружает Excel.

Как устроено

Выгрузки 1С в Excel/CSV превращаются в Dataset и дополняются публичным каталогом ekt.kz (локальный JSON, совпадение по SKU). Отдельный worker строит прогноз: сезонность, линейный тренд, страховой запас, MOQ и кратность; крупные заказы выявляются по порогу Тьюки и 8 медианам, stockout компенсируется по явно переданным интервалам, приходы учитываются только с ETA в горизонте. Результат хранится в SQLite с optimistic revision (на конфликт отвечает 409), ролями manager/admin и историей действий, а экспорт в Excel идёт по сохранённой версии. Объяснение количества шаблонное, OpenAI опционален.

Ключевые решения

  • seasonality + linear trend forecast
  • safety stock
  • MOQ/multiplicity rounding
  • Tukey outlier detection
  • stockout compensation
  • backtest vs naive baselines
  • catalog enrichment by SKU
  • optimistic concurrency

Метрики

3 907 SKU, 248 467 транзакций; полный расчёт 430 строк; обогащение каталогом 773/3 907 SKU (19,8%); на бэктесте (июль–август 2026) метод проигрывает прогнозу «предыдущий месяц» в штуках и упаковках и выигрывает в метрах

Особенности

Необычно честный бэктест: команда прямо пишет, что её прогноз не превосходит наивный базовый метод. Есть аудит качества данных (34,87% расхождений между отчётами) и строгое разделение учётных данных 1С и обогащения из каталога сайта. Эксплуатационная обвязка: worker, systemd-таймеры бэкапов, CSRF и восстановление заданий после перезапуска.

Стек

Python · FastAPI · React · Vite · SQLite · Docker · Docker Compose · nginx · systemd · GitHub Actions

Модели

OpenAI (опционально, по умолчанию выключен)


Проект создан за 5 часов на финале хакатона HackAlem.ai (23 сентября 2026, Астана). Код — BAITC-Hacks/hack-a84ff6d0-hubtech.

README

README.md

Umytpa — платформа планирования и согласования закупок

Сервис для менеджера закупа ТОО «Электрокомплект»: читает выгрузки продаж и запасов, рассчитывает пополнение по артикулу и складу, объясняет количество, позволяет исправить и утвердить позиции, экспортирует результат в Excel. Кейс HackAlem AI: relly-problem.md.

Статус: интегрирована ветка baitc/frontend (5a0ace2) с новым интерфейсом и сервисной частью. Работают именной вход, роли manager/admin, постоянные заказы и правки в SQLite, история действий, проверка версии, отдельный worker, резервные копии и экспорт сохранённых решений. Улучшения Excel/EKT основной ветки сохранены. Полное production-ТЗ ещё не выполнено: независимого согласования, пяти бизнес-ролей, складских областей доступа и управляемой активации входных партий пока нет.

Задание на production-платформу

Основной документ — ТЗ платформы, версия 2.0: роли и права, ежедневные сценарии, версии заказов, свежесть данных, фоновые расчёты, эксплуатация, этапы и критерии приёмки. Контракт интерфейса описывает назначение каждого экрана, данные, действия, ошибки и мобильное поведение. Дизайн Umytpa переводит визуальное направление в компоненты закупочной платформы.

Предлагаемая нагрузка первого выпуска: 20 аккаунтов / 10 одновременных пользователей / 2 расчёта. Это параметры будущего испытания, а не известный штат или подтверждённая производительность. Предусмотрены менеджер закупок, руководитель, аналитик данных, администратор и наблюдатель компании/спонсора. Последний получает разрешённый обзор реальных агрегатов; закупщики и руководители работают с заказами по своим правам.

В ТЗ явно разделены существующие возможности, требования первого production-выпуска и вопросы владельцу процесса. Сейчас действуют две роли и один последовательный worker, а подтверждение строки выполняет сам менеджер; это не независимое согласование руководителем. Вход, сохранение заказов, очередь и эксплуатационные инструменты уже реализованы. Остальные целевые роли и процессы остаются этапами развития.

Для запуска по готовым файлам установка или подключение 1С не нужны. Достаточно приложенных Excel-файлов и Python/Node.js. Сейчас приложение читает файлы, а не работающую базу 1С. Для регулярной эксплуатации потребуется согласованное обновление учётных данных; варианты описаны в ИНТЕГРАЦИЯ_1С.md.

Два независимых источника

ИсточникДля чего используется
Выгрузки 1С: Excel или CSVПродажи, остатки, ожидаемые приходы, поставщики, MOQ/кратность, сезонность. Они задают числа для расчёта.
Публичный каталог ekt.kz: локальный JSONТоварная категория, подкатегория, характеристики и ссылка на карточку для существующих SKU. Это обогащение справочника.

Каталог сайта не заменяет историю продаж, обезличенных клиентов, периоды отсутствия, доступные складские остатки или договорные сроки закупки. Обогащение не меняет количества, единицы, цены, MOQ и сроки поставки. Внутренняя category из 1С и товарная product_category сайта хранятся отдельно.

flowchart LR
    X["Excel / CSV из 1С"] --> D["Dataset: учётные данные"]
    W["ekt.kz"] -->|отдельная синхронизация| J["data/ekt/catalog.json"]
    J -->|точное совпадение SKU| D
    D --> E["Worker: прогноз и потребность"]
    E --> S["SQLite: расчёт, заказ и владелец"]
    S --> U["Менеджер: сохранение правок и подтверждение"]
    U --> F["Excel сохранённой версии + событие"]

Во время расчёта и экспорта запросов к ekt.kz нет. Подробнее: КАТАЛОГ_EKT.md.

Снимок каталога от 2026-09-23T10:25:22Z получен ограниченным проходом: 160 страниц разделов и 80 попыток чтения карточек. В JSON сохранено 800 записей; к учётным данным применено 773 из 3 907 SKU (19,8%), доступно 9 товарных групп. 200 кодов оставлены на ручную проверку сборщиком, ещё 27 записей не применены из-за несовпадения артикула. Покрытие частичное: у 3 134 SKU обогащения нет.

В проверенном полном расчёте описания добавлены к 118 из 430 строк; количества и состав рекомендаций сохранились. Подробный аудит и ограничения снимка — в разделе «Зафиксированный результат».

Возможности и границы

  • Расчёт отдельно по (sku, warehouse); фильтры склада, внутренней категории и товарной категории сайта.
  • Сезонность, линейный тренд, страховой запас, MOQ и кратность. Месячные итоги приняты основным источником объёма; транзакции служат для поиска крупных заказов. Вычитание опта из месяца допускается только после сверки сумм двух отчётов.
  • Детекция крупных заказов объединяет клиент/день и документ/день в пределах SKU×склад: минимум пять наблюдений, одновременно порог Тьюки и восемь медиан. Разбиение крупной покупки клиента на документы не скрывает её; строки не вычитаются дважды.
  • Дневная и месячная компенсация stockout по явно переданным интервалам отсутствия, с сохранением наблюдённых продаж и предупреждениями о предпосылках. В приложенных реальных Excel таких интервалов нет; нулевые месячные остатки их не заменяют.
  • Поставки уменьшают потребность только при ETA в горизонте расчёта. Поздний приход не скрывает дефицит до его даты.
  • Постоянные заказы, сохранение правок, история действий и optimistic revision: устаревшая команда получает 409. Правка количества снимает подтверждение. Excel использует сохранённую версию, содержит ID заказа/расчёта и не запускает новый прогноз. Неизвестная единица не допускает подтверждения положительной позиции.
  • Именные сессии, CSRF, owner/admin-доступ, ограниченная очередь, отмена/таймаут и восстановление незавершённых заданий после перезапуска. Шаблонное объяснение работает без сети; OpenAI по умолчанию выключен, при явном включении ограничен таймаутом и бюджетом. Заказ поставщику не отправляется.

Excel-экспорт — таблица для проверки и передачи. Загрузчик заказа в конкретную конфигурацию 1С пока не реализован, совместимость без доработок не заявляется.

Данные и ограничения

В комплекте — 12 файлов, по шесть для IEK и Systeme Electric. Зафиксированный импорт содержит 3 907 SKU, 248 467 положительных транзакций за 2025-01-04 — 2026-09-22 и месячные матрицы продаж/остатков. Для этих файлов дата расчёта по умолчанию — 2026-09-23, а не дата запуска приложения.

В выгрузках нет обезличенных клиентов и точных интервалов отсутствия. Часть остатков устарела или неизвестна; сроки новых заказов 21/35 дней — допущения до подтверждения. Предупреждения, даты и счётчики качества доступны в интерфейсе и /api/meta. Количество рекомендаций зависит от параметров и версии данных; для зафиксированных исходников и стандартных параметров полный расчёт содержит 430 строк. Историческая проверка месячного прогноза теперь выполнена и опубликована, но превосходство над простым базовым методом для всего ассортимента не подтверждено.

Проверка ветки alish и подготовка ML

Проверен baitc/alish на коммите 5facda2 — Add new data files for machine learning model training and quality issues. Это полезная подготовка данных IEK и отчёты о качестве. Шесть исходных Excel совпадают с файлами основной ветки по SHA-256: новой истории, других городов и обученной модели в коммите нет.

В проект выборочно добавлены скрипты очистки и подготовки scripts/, их тесты и инструкции. Результаты создаются в data/clean/iek/ и data/ml/iek/; коммит c7062f9 добавил большие производные CSV в Git для проверки жюри. Основной расчёт продолжает читать Excel через ExcelDataSource. Файлы ML имеют другой контракт и не подключаются через DATA_SOURCE=csv.

У подготовленной выборки есть существенное ограничение: при исходной политике «пусто = неизвестно» все 28 979 целей строго положительны. Это не полная выборка спроса с периодами без продаж. Также сверка обнаружила 7 414 расхождений в 21 262 сопоставимых SKU-месяцах (34,87%). До обучения нужно подтвердить смысл пустот и область отчётов. Подробности, происхождение и применение файлов: АУДИТ_ВЕТКИ_ALISH.md.

Команды из корня проекта после установки зависимостей backend:

backend/.venv/bin/python scripts/clean_monthly_data.py
backend/.venv/bin/python scripts/prepare_ml_data.py --as-of 2026-09-23
backend/.venv/bin/python -m unittest discover -s scripts -p 'test_*.py' -v

Полный контракт и варианты обработки пропусков: CLEANING.md, ML_PREPARATION.md. Подготовка признаков не обучает модель и не измеряет её точность.

Проверка прогноза на отложенном периоде

scripts/backtest_forecast.py сравнивает текущий месячный прогноз с предыдущим месяцем и тем же месяцем прошлого года на одинаковых строках. История ограничена прошлым относительно каждой даты; validation — январь–июнь 2026, test — июль–август 2026. Нули, неизвестные ячейки, покрытие и единицы учитываются явно. Используются две политики чтения пустот, а не две независимые выборки.

Результат не подтверждает общего превосходства модели: на опубликованном тесте текущий метод проигрывает предыдущему месяцу в штуках и упаковках, выигрывает в метрах. Это проверка функции прогноза, а не всей политики заказа, скрытого спроса или экономии компании. Протокол, ограничения и результаты — BACKTEST.md; машинные артефакты — data/evaluation.

backend/.venv/bin/python scripts/backtest_forecast.py

Города и склады

На сайте перечислены Алматы, Астана, Шымкент, Тараз, Атырау, Актау, Караганда, Талдыкорган и Усть-Каменогорск. В текущих учётных данных подтверждён только склад Алматы. Месячные отчёты и путь не имеют отдельного поля склада, поэтому их отнесение к Алматы остаётся допущением.

Остальные восемь городов не добавлены как действующие склады без данных: выбор города на сайте не даёт историю продаж, остатки и ETA по этому городу. Список складов интерфейса строится из загруженных учётных таблиц. Для расширения нужны идентификаторы складов 1С и их связь с городами, продажи/запасы/приходы отдельно по складу и сроки маршрутов. План подключения и состояние каждого города: ГОРОДА_И_СКЛАДЫ.md.

Быстрый запуск

Через Docker (одна команда, рекомендуется для проверки)

Нужен только Docker с плагином Compose:

docker compose up --build

Откройте localhost:5173, вход admin / admin. Автоматически поднимаются API, worker, SQLite, фронтенд и включённые данные партнёра (init применяет миграции и создаёт администратора). Ключ OpenAI не обязателен. Подробнее и параметры — в DEPLOY.md, раздел 0.

Локально (без Docker)

Нужны Python 3.12, Node.js 22.19+ в ветке 22.x или 24.x и npm. 1С, ключ OpenAI и доступ к ekt.kz для расчёта по готовым файлам не обязательны. Используйте закреплённые зависимости; подробнее локальная установка и Linux/systemd/nginx описаны в DEPLOY.md.

Из корня проекта:

cd backend
python3.12 -m venv .venv
.venv/bin/python -m pip install -r requirements-dev.txt
cp .env.example .env

Для локального HTTP измените в backend/.env три значения:

APP_ENV=development
APP_ORIGIN=http://127.0.0.1:5173
OPENAI_API_KEY=

Оставьте DATA_SOURCE=excel и DATA_DIR=. для реальных файлов проекта. API, worker и административные команды должны использовать одинаковые настройки и путь БД. Первый администратор создаётся один раз; пароль вводится скрыто, стандартного пароля нет. Следующий блок выполняйте в том же терминале, уже находясь в backend/:

.venv/bin/python -m app.manage migrate
.venv/bin/python -m app.manage create-admin --username admin

Запустите три терминала, каждый из корня проекта:

# 1. API
cd backend
.venv/bin/python -m uvicorn app.main:app --host 127.0.0.1 --port 8017 --no-access-log
# 2. Worker — без него расчёт не принимается
cd backend
.venv/bin/python -m app.worker
# 3. Интерфейс
cd frontend
npm ci
npm run dev -- --host 127.0.0.1

Откройте 127.0.0.1:5173, войдите и создайте менеджеров в разделе сотрудников. Не смешивайте localhost и 127.0.0.1: origin должен совпадать с настройкой. Swagger API включён только в development. /api/ready проверяет БД, heartbeat worker и наличие обязательных файлов, но не подтверждает их свежесть или полное качество.

Для отдельной демонстрации доступны:

НастройкаДанные и дата
DATA_SOURCE=syntheticДетерминированные тестовые товары с явными единицами; стандартная дата 2026-09-23
DATA_SOURCE=csv, DATA_DIR=data/sample_csvГотовый пример: шесть обязательных CSV и catalog.csv с единицами м/шт
DATA_AS_OF=2026-09-23Явная дата для Excel, CSV или synthetic; без неё Excel/CSV используют день после последней продажи

При смене режима перезапустите API и worker. Синтетика и пример CSV не являются дополнительными наблюдениями партнёра или подтверждёнными данными других городов. ML-файлы из data/ml/iek не соответствуют контракту CSV-источника.

EKT подключён к Excel-режиму через EKT_CATALOG_ENABLED и EKT_CATALOG_PATH. CSV и synthetic не обращаются к сайту или этому справочнику. Синхронизация запускается отдельно:

cd backend
.venv/bin/python -m scripts.sync_ekt_catalog --help

Проверки

cd backend
RUN_REAL_EXCEL_TESTS=1 .venv/bin/python -m unittest discover -s tests -v
.venv/bin/python -m tests.validate_must_have

Из корня проекта:

backend/.venv/bin/python -m unittest discover -s scripts -p 'test_*.py' -v
backend/.venv/bin/python qa/smoke_service.py
backend/.venv/bin/python qa/smoke_service.py --real-data
cd frontend
npm test
npm run lint
npm run build

Must-have-проверки используют контролируемые наборы и матрицу влияния входов. Регрессии покрывают месячный stockout, крупного клиента с несколькими документами, даты/склады, MOQ, единицы, сохранение, доступ и экспорт. HTTP smoke запускает настоящие API/worker с временной БД; исходные Excel не меняет. Браузерный сценарий — qa/browser_smoke.mjs. CI-конфигурация включена в репозиторий; удалённый успешный запуск не заявляется только по наличию файла workflow.

Актуальная оценка обоих наборов критериев, выполненные проверки и остающиеся ограничения приведены в ОТЧЁТ_ПО_КРИТЕРИЯМ.md. Проходящие сценарии доказывают конкретные свойства реализации, но не полноту рабочих данных, преимущество прогноза, экономию или завершение всего production-ТЗ.

Документация

ДокументСодержание
ОТЧЁТ_ПО_КРИТЕРИЯМ.mdДве независимые оценки, свежие проверки, реальные пробелы и приоритеты; без оценки красоты дизайна
ТЗ_платформы.mdОсновной production-контракт: пользователи, права, процессы, нагрузка, этапы и приёмка
ИНТЕРФЕЙС_ПЛАТФОРМЫ.mdЭкраны, данные и действия по ролям, состояния и мобильные сценарии
SOLUTION.mdМетодология, параметры, ограничения и экспорт
ИНТЕГРАЦИЯ_1С.mdНужна ли 1С, контракт учётных данных и варианты последующей интеграции
КАТАЛОГ_EKT.mdЛокальный JSON, сопоставление кодов, происхождение и покрытие обогащения
АРХИТЕКТУРА.mdСлои, потоки, модель данных, сохраняемые результаты
БЭКЕНД.mdAPI, источники и расчётные модули
ФРОНТЕНД.mdФильтры, таблицы, корректировка, утверждение и экспорт
Дизайн_фронтенда.mdЦелевая визуальная система Umytpa, компоненты и адаптивность
ML_И_ДАННЫЕ.mdДневная/месячная модели, сезонность, опт, stockout и отдельная подготовка ML
BACKTEST.mdВременная оценка текущего прогноза, базовые методы, покрытие и ограничения
АУДИТ_ВЕТКИ_ALISH.mdПроверенный коммит, полезные артефакты, качество и ограничения обучающей выборки
ГОРОДА_И_СКЛАДЫ.mdДевять городов сайта, реальные склады и контракт региональных данных
РЕЕСТР_ДАННЫХ.mdФайлы, происхождение и ограничения качества
КОНЦЕПЦИЯ_СИСТЕМЫ_РК.mdНазначение и развитие системы
DEPLOY.mdПодготовка окружения и запуск

Проверенная поставка и демонстрация

Итог 23.09.2026: 124 backend + 23 проверки скриптов + 35 frontend unit + 19 UI, пять строгих Must-have-групп, lint/build, оба HTTP smoke и браузерный сценарий на реальных Excel проходят. Проверены сохранение после перезагрузки, конфликт двух вкладок, точное количество в XLSX и мобильные ширины 320–1440 px. На телефоне показывается пять карточек поставщика, на desktop — двадцать строк.

Команды, среда и границы проверки — ПРИЕМКА. Для показа партнёру и пилотного замера подготовлен сценарий демонстрации. Обновлённый отчёт по двум критериям разделяет закрытые дефекты и незавершённую внешнюю приёмку; хакатонные баллы не означают готовность полного production-ТЗ. Текущие изменения проверены локально, удалённое развёртывание и запуск CI не заявляются.

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

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

godz1llla 13KhamzeyevAlisher 8Solana Tokenization Team 6

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

  • 2026-09-23 17:59feat: подключить ML API к расчёту заказов в backendKhamzeyevAlisher
  • 2026-09-23 17:58feat: Docker — запуск в одну команду (docker compose up)godz1llla
  • 2026-09-23 17:50docs: перенести обновления документации из ветки frontend + инструкцииgodz1llla
  • 2026-09-23 17:47docs: добавить ml_api/README.md из ветки alish (без кода API)godz1llla
  • 2026-09-23 17:46Merge main backend and EKT catalog into the persistent frontend serviceSolana Tokenization Team
  • 2026-09-23 17:46chore: обновления рабочего дерева (доки, приёмка, отчёты, тесты)godz1llla
  • 2026-09-23 17:40feat: добавить API прогнозирования спроса для IEK и Systeme ElectricKhamzeyevAlisher
  • 2026-09-23 17:23feat: добавить декомпозицию спроса и выявление крупных заказовKhamzeyevAlisher
Все коммиты (27)
  • 2026-09-23 17:18docs: add complete frontend user and developer guidesSolana Tokenization Team
  • 2026-09-23 17:07feat: добавить подготовку данных и обучение прогнозов IEK и Systeme ElectricKhamzeyevAlisher
  • 2026-09-23 16:53Merge completed Umytpa service into frontendSolana Tokenization Team
  • 2026-09-23 16:51fix: prevent internal API errors leaking through server logsSolana Tokenization Team
  • 2026-09-23 16:49feat: implement Umytpa internal purchasing serviceSolana Tokenization Team
  • 2026-09-23 16:26chore: игнорировать папку критерии (только локально)godz1llla
  • 2026-09-23 16:12feat: подготовить входные данные для расчёта заказов IEKKhamzeyevAlisher
  • 2026-09-23 16:06data: закоммитить сгенерированные датасеты для проверки жюриgodz1llla
  • 2026-09-23 16:00feat: ML-подготовка и очистка данных + аудит, обновление доковgodz1llla
  • 2026-09-23 15:37feat: обогащение каталога данными ekt.kz + интеграция 1С (docs)godz1llla
  • 2026-09-23 15:32Add new data files for machine learning model training and quality issuesKhamzeyevAlisher
  • 2026-09-23 15:30clean_data_2KhamzeyevAlisher
  • 2026-09-23 15:08docs(frontend): добавить архитектурный и продуктовый план разработки в стиле inDriveSolana Tokenization Team
  • 2026-09-23 15:06clean_datasetKhamzeyevAlisher
  • 2026-09-23 15:05docs: перенос ТЗ дизайна inDrive в docs/Дизайн_фронтенда.mdgodz1llla
  • 2026-09-23 14:55docs: комплект документации в стиле template (docs/ + README)godz1llla
  • 2026-09-23 14:44feat: подключение реальных данных партнёра (Excel) + реворк движкаgodz1llla
  • 2026-09-23 13:53feat: сервис автозаказов поставщикам (FastAPI + React)godz1llla
  • 2026-09-23 13:51docs+data: кейс ЭКТ, аналитика РК и датасеты партнёраgodz1llla
Структура репозитория (186 файлов)
.dockerignore
.github/workflows/ci.yml
.gitignore
IEK/MOQ  ИЭК.xlsx
IEK/Динамика продаж_2025-2026.xlsx
IEK/Ежемесячные остатки продукции за последние 2 года  ИЭК.xlsx
IEK/Ежемесячные продажи в количественном выражении за последние 2 года.xlsx
IEK/Путь ИЭК 22.09.2026.xlsx
IEK/Сезонность ИЭК.xlsx
README.md
SOLUTION.md
Systeme electric/MOQ SystemElectric.xlsx
Systeme electric/Динамика продаж_Syseme Electric_2025-2026.xlsx
Systeme electric/Ежемесячные остатки SystemElectric 2024-2026.xlsx
Systeme electric/Ежемесячные продажи в кол-м выражении SystemElectric 2024-2026.xlsx
Systeme electric/Сезонность SystemElectric 2024-2026.xlsx
Systeme electric/Товар в пути_SystemElectric на 22.09.2026.xlsx
backend/.env.example
backend/Dockerfile
backend/app/__init__.py
backend/app/api/__init__.py
backend/app/api/models.py
backend/app/api/routes.py
backend/app/config.py
backend/app/core/__init__.py
backend/app/core/explain.py
backend/app/core/export.py
backend/app/core/forecasting.py
backend/app/core/outliers.py
backend/app/core/recommend.py
backend/app/core/replenishment.py
backend/app/core/snapshots.py
backend/app/core/stockout.py
backend/app/data/__init__.py
backend/app/data/adapter.py
backend/app/data/enrichment.py
backend/app/data/excel.py
backend/app/data/synthetic.py
backend/app/jobs.py
backend/app/main.py
backend/app/manage.py
backend/app/ops.py
backend/app/repositories.py
backend/app/schemas.py
backend/app/security.py
backend/app/storage.py
backend/app/worker.py
backend/requirements-dev.txt
backend/requirements.lock
backend/requirements.txt
backend/scripts/__init__.py
backend/scripts/sync_ekt_catalog.py
backend/tests/__init__.py
backend/tests/process_utils.py
backend/tests/test_calculation.py
backend/tests/test_catalog_enrichment.py
backend/tests/test_catalog_flow.py
backend/tests/test_ekt_sync.py
backend/tests/test_excel_import.py
backend/tests/test_export.py
backend/tests/test_input_contract.py
backend/tests/test_ops.py
backend/tests/test_request_logging.py
backend/tests/test_sample_sources.py
backend/tests/test_service.py
backend/tests/test_warehouse_metadata.py
backend/tests/test_worker_process.py
backend/tests/validate_must_have.py
data/clean/iek/monthly_clean.csv
data/clean/iek/quality_issues.csv
data/clean/iek/quality_report.json
data/ekt/catalog.json
data/evaluation/forecast_backtest.json
data/evaluation/forecast_metrics.csv
data/ml/iek/in_transit.csv
data/ml/iek/integration_audit.json
data/ml/iek/monthly_panel.csv
data/ml/iek/moq.csv
data/ml/iek/prediction_features.csv
data/ml/iek/preparation_report.json
data/ml/iek/products.csv
data/ml/iek/provided_seasonality.csv
data/ml/iek/quality_issues.csv
data/ml/iek/reconciliation.csv
data/ml/iek/training_data.csv
data/ml/iek/transactions.csv
data/sample_csv/README.md
data/sample_csv/catalog.csv
data/sample_csv/in_transit.csv
data/sample_csv/sales.csv
data/sample_csv/sku_suppliers.csv
data/sample_csv/stock.csv
data/sample_csv/stockouts.csv
data/sample_csv/suppliers.csv
deploy/nginx.conf
deploy/umytpa-api.service
deploy/umytpa-backup.service
deploy/umytpa-backup.timer
deploy/umytpa-worker.service
deploy/umytpa.env.example
docker-compose.yml
docs/DEPLOY.md
docs/ML_И_ДАННЫЕ.md
docs/АРХИТЕКТУРА.md
docs/АУДИТ_ВЕТКИ_ALISH.md
docs/БЭКЕНД.md
docs/ГОРОДА_И_СКЛАДЫ.md
docs/ДЕМОНСТРАЦИЯ.md
docs/Дизайн_фронтенда.md
docs/ИНТЕГРАЦИЯ_1С.md
docs/ИНТЕРФЕЙС_ПЛАТФОРМЫ.md
docs/КАТАЛОГ_EKT.md
docs/КОНЦЕПЦИЯ_СИСТЕМЫ_РК.md
docs/ОТЧЁТ_ПО_КРИТЕРИЯМ.md
docs/ПРИЕМКА.md
docs/РЕЕСТР_ДАННЫХ.md
docs/РУКОВОДСТВО_ПОЛЬЗОВАТЕЛЯ.md
docs/ТЗ_платформы.md
docs/ФРОНТЕНД.md
docs/ФРОНТЕНД_РАЗРАБОТЧИКУ.md
frontend/.dockerignore
frontend/.gitignore
frontend/.oxlintrc.json
frontend/Dockerfile
frontend/README.md
frontend/index.html
frontend/nginx.conf
frontend/package-lock.json
frontend/package.json
frontend/public/favicon.svg
frontend/public/icons.svg
frontend/public/licenses/Caveat-OFL.txt
frontend/public/licenses/Golos-Text-OFL.txt
frontend/src/App.css
frontend/src/App.jsx
frontend/src/Icons.jsx
frontend/src/api.js
frontend/src/api.test.js
frontend/src/assets/hero.png
frontend/src/assets/react.svg
frontend/src/assets/vite.svg
frontend/src/components/Common.jsx
frontend/src/components/DataInfo.jsx
frontend/src/components/RationaleDialog.jsx
frontend/src/components/SupplierGroup.jsx
frontend/src/format.js
frontend/src/format.test.js
frontend/src/hooks/useOrderEditor.js
frontend/src/index.css
frontend/src/main.jsx
frontend/src/orderState.js
frontend/src/orderState.test.js
frontend/src/orderUtils.js
frontend/src/orderUtils.test.js
frontend/src/pages/CalculatePage.jsx
frontend/src/pages/HistoryPage.jsx
frontend/src/pages/LoginPage.jsx
frontend/src/pages/OrderPage.jsx
frontend/src/pages/UsersPage.jsx
frontend/src/test/auth.ui.test.jsx
frontend/src/test/components.ui.test.jsx
frontend/src/test/editor.ui.test.jsx
frontend/src/test/fixtures.js
frontend/src/test/jobs.ui.test.jsx
frontend/src/test/setup.js
frontend/vite.config.js
frontend/vitest.config.js
ml_api/README.md
qa/browser_smoke.mjs
qa/check_linux_deploy.py
qa/results/2026-09-23.json
qa/smoke_service.py
relly-problem.md
scripts/BACKTEST.md
scripts/CLEANING.md
scripts/ML_PREPARATION.md
scripts/backtest_forecast.py
scripts/clean_monthly_data.py
scripts/prepare_ml_data.py
scripts/requirements-cleaning.txt
scripts/requirements-ml.txt
scripts/test_backtest_forecast.py
scripts/test_clean_monthly_data.py
scripts/test_prepare_ml_data.py
useful-agents.md
useful-apis.md
Ветки (4)

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

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

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