AAYMA
RU
Войти

Автозаказ ЕКТ

Сервис расчёта рекомендованных заказов поставщикам (IEK, Systeme Electric) по выгрузкам 1С с объяснением каждой строки, симулятором склада…

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

О проекте

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

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

Суть

Сервис расчёта рекомендованных заказов поставщикам (IEK, Systeme Electric) по выгрузкам 1С с объяснением каждой строки, симулятором склада, утверждением менеджером и выгрузкой Excel в 1С.

Как устроено

Выгрузки 1С (продажи, остатки, товары в пути, MOQ, сезонность) → прогноз на горизонт «срок поставки + период пересмотра» с сезонными индексами классической декомпозиции (центрированная 12-мес. скользящая), устойчивым ростом г/г и досчётом упущенного спроса в месяцы stockout. Разовые крупные заказы отсекаются робастным порогом max(Q3+3·IQR, 5·медиана, 2·P90); страховой запас, округление до MOQ, ABC, срочность по покрытию. AI-ассистент закупщика на OpenAI function calling отвечает только через инструменты над расчётом и готовит черновик письма; бэктест «Машина времени» на март–август 2026.

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

  • сезонная декомпозиция
  • восстановление упущенного спроса при stockout
  • робастные пороги IQR/MAD
  • страховой запас
  • MOQ-округление
  • ABC-классификация
  • бэктест
  • кривая сервис/запас
  • OpenAI function calling

Метрики

Бэктест мар–авг 2026: случаи «нет на складе» IEK 1648→760 (−54%) при запасе −5%; Systeme Electric 108→30 (−72%) при сервисе 95%

Особенности

Доказательство эффекта бэктестом на реальной истории компании, «Симулятор склада» (что будет с остатком по дням при любом N до утверждения) и «Кривая выбора» — цена каждого процента уровня сервиса в тенге для собственника; README-цифры генерируются из результатов автоматически.

Стек

Python · pandas · Streamlit · OpenAI SDK · pytest

Модели

OpenAI (function calling)


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

README

README.md

Автозаказ ЕКТ — заказ поставщикам за секунды, а не полдня в Excel

Проблема. Менеджер закупа «Электрокомплекта» вручную сводит в Excel продажи, остатки и товары в пути по 3 600 артикулам. Это полдня работы, поэтому заказ считают редко — одних товаров нет на складе, другие лежат лишними.

Решение. Сервис по выгрузкам 1С сам считает, сколько заказать каждого товара и у какого поставщика, объясняет каждую строку человеческим языком и отдаёт готовый Excel для 1С. Человек только проверяет и утверждает.

Результат на реальных данных компании (март–август 2026): случаев «товара нет на складе» — −54% у IEK (при этом запас −5%) и −72% у Systeme Electric.

Кейс: ТОО «Электрокомплект» (ekt.kz) · Трек: Логистика · Стек: Python · pandas · Streamlit · OpenAI · Тесты: 30 автотестов · Ключи для проверки не нужны

Главный экран — очередь решений менеджера закупа

Запуск за 1 минуту

./run.sh          # macOS / Linux  →  http://localhost:8501
run.bat           # Windows

Первая загрузка читает выгрузки 1С ~20 с. Питч-лендинг: http://localhost:8501/app/static/landing.html (или двойной щелчок по app/static/landing.html).

Навигация и критерии оценки

Критерий оценкиГде в README
Проблема и ценность2. Краткое описание · Результат на реальных данных
Функциональность прототипа3. Что реализовано · 4. Как работает · 8. Как проверить
Техническая реализация5. Технологии · 6. Архитектура
Практическая применимость12. Практическая применимость
Потенциал развития13. Потенциал развития
README и воспроизводимость7. Установка и запуск · 8. Как проверить · 9. Данные · 10. Ограничения

1. Название

Автозаказ ЕКТ — сервис рекомендованных заказов поставщикам для пополнения склада дистрибьютора.

2. Краткое описание

Какую проблему решает. Расчёт пополнения склада вручную в Excel занимает полдня, поэтому делается редко и «на глаз». Разовые крупные продажи одному клиенту выглядят как рост спроса и раздувают закупку. Итог — дефицит по одним позициям (клиент уходит к конкуренту) и излишки по другим (деньги заморожены на складе).

Для кого. Основной пользователь — менеджер отдела закупа. Собственник и финансист выбирают, сколько денег держать в запасе ради уровня сервиса («Кривая выбора»).

В чём ценность.

  • Заказ по всем 3 600 артикулам — за секунды, с обоснованием каждой строки: менеджер разбирает только очередь «Требует решения сейчас», а не весь ассортимент.
  • «Симулятор склада»: до утверждения видно, что будет с остатком по дням, если заказать больше или меньше.
  • Разовые крупные продажи не искажают закупку; месяцы, когда товара не было, досчитываются как упущенный спрос.
  • Эффект доказан на истории компании: меньше дефицитов при том же или меньшем запасе (см. результаты ниже).
  • Решение остаётся за человеком: правка с причиной, утверждение с ФИО, выгрузка в 1С; автоотправки нет.

Чем мы отличаемся от очевидного решения

Очевидное решение кейса — «прогноз продаж + таблица с количеством». Наше собственное преимущество:

Очевидный подходАвтозаказ ЕКТ
Прогноз = среднее или ML-модель, которой надо веритьКаждая строка объяснена человеческим языком; «Почему в очереди» — причина срочности
Разовая крупная продажа раздувает прогнозРазовые заказы находятся и исключаются, регулярный опт — нет
Продажи в дни без товара считаются спросомУпущенный спрос в месяцы дефицита досчитывается
Число «заказать N»Симулятор склада: видно, в какой день кончится товар при любом количестве — до утверждения
«Модель точная, поверьте»Проверка на истории клиента до покупки: −54% / −72% случаев «нет на складе»
Уровень сервиса — настройка в глубине менюКривая выбора: цена каждого процента сервиса в ₸ для собственника
Правки менеджера теряютсяАудит правок с причинами — основа для обучения системы
Интеграция с ERP на месяцыExcel из 1С → результат → Excel в 1С, пилот за день

Как перевести эффект в деньги на пилоте. В выгрузке нет цен продаж, поэтому эффект показан в штуках, случаях дефицита и запасе по себестоимости (₸, Systeme Electric). На пилоте упущенная выручка считается так: упущенный спрос (вкладка «Разбор артикула», шт) × цена продажи × маржа — по данным клиента.

Доказательство на истории — «как было» и «как было бы с сервисом», кривая выбора:

История одного товара Кривая выбора

Сценарий демо на 3 минуты — docs/DEMO.md. План питча к Demo Day — docs/PITCH.md.

3. Что реализовано

Требование ТЗКак закрытоПроверка
1. Базовая потребность с учётом всех источников: история продаж, остатки, товары в пути, категории, прогноз приростаПрогноз на горизонт «срок поставки + период пересмотра» + страховой запас − остаток − товары в пути, прибывающие до конца горизонта; категория задаёт сезонный профиль группы; прирост — параметр по поставщику (UI)tests/test_must_have.py::test_each_input_source_affects_calculation_or_is_supported
2. Сезонность и устойчивый ростСезонные индексы классической декомпозиции (отношение к центрированной 12-мес. скользящей средней). Собственный профиль артикула используется, если он повторяется по годам (корреляция профилей), иначе — профиль группы «поставщик × категория». Рост г/г учитывается только если он устойчив (одинаков по знаку в обоих полугодиях), с затуханиемtest_seasonal_forecast_has_summer_peak
3. Упущенный спрос в периоды stockoutПо помесячным остаткам 1С определяется доля месяца в наличии; месяцы дефицита досчитываются до ожидаемого уровня; базовый уровень считается только по месяцам, когда товар былtest_stockout_recovers_lost_demand_and_raises_level
4. Исключение разовых крупных заказов, включая крупные продажи одному клиентуДокумент с количеством выше робастного порога max(Q3 + 3·IQR, 5·медиана, 2·P90) по документам артикула урезается до «обычного» заказа (медиана), излишек исключается из регулярного спроса. При наличии поля клиента — дополнительно агрегат «клиент × месяц». Повторяющиеся крупные заказы (≥ 4 месяцев за год) считаются регулярным оптом и остаются. Для 2024 г. (нет документов) — ограничение месяца 3× медианыtest_big_oneoff_is_excluded_from_regular_level, вкладка «Разовые заказы»
5. Итоговый список по поставщикам с обоснованиемТаблица по поставщикам, у каждой строки текст: прогноз, сезонность, рост, страховой запас, остаток, в пути, кратность, упущенный спрос, исключённые заказыtest_order_output_has_reason_supplier_groups_and_moq_multiples, вкладка «Заказ поставщикам»
Опц.: приоритизация по риску дефицитаСрочность «Критично / Высокая / Плановая» по покрытию остатком срока поставки; шкала риска; сортировкаUI
Опц.: минимальная партия и условия поставщикаОкругление вверх до кратности/MOQ из файлов поставщиков; срок поставки — по поставщикуUI, тест 5
Симулятор склада (сверх ТЗ)Ползунок «заказать N шт» → остаток по дням до прихода следующего заказа: когда товар закончится, сколько дней без товара и сколько продаж потеряно, сколько пролежит лишнего — до нажатия «Утвердить»вкладка «Разбор артикула», tests/test_simulate.py
Опц.: визуализация трендовГрафик «факт / регулярный спрос / прогноз», месяцы без товара подсвеченывкладка «Разбор артикула»
Опц.: выгрузка заказаExcel по листам-поставщикам (код 1С, артикул, количество, обоснование) — для загрузки в 1Скнопка «Выгрузить заказ для 1С (Excel)»
Избыточные запасы (из «Проблема и ценность» ТЗ)Вкладка «Излишки»: запас сверх максимума политики (прогноз на горизонт + страховой запас), в шт и ₸ по себестоимостиUI
ABC-классификацияA/B/C по годовому регулярному спросу внутри поставщика (80/15/5%) — колонка в заказе и излишкахUI
Масштабирование на любую компанию«Данные и параметры» → «Загрузить свой файл»: один Excel с листами sales, stock_now, transit, items, stock_hist, stockouts (два последних — необязательно); кнопка «Скачать шаблон (пример)»tests/test_upload.py
Ограничение: без автоотправкиЗаказ только утверждается человеком (ФИО + время, файл в data/approved/); AI-ассистент готовит лишь черновик письмаUI
Ограничения: приватность, объяснимость, устойчивость к выбросамДанных о клиентах в выгрузке нет; расчёт детерминированный и объяснённый; робастные пороги (IQR, MAD) для выбросов и страхового запасакод engine/core.py

AI-ассистент закупщика (OpenAI, function calling): отвечает на вопросы («что критично по IEK?», «почему столько по этой позиции?») только через инструменты над результатами расчёта и готовит черновик письма-заказа поставщику. Без ключа работает детерминированный режим — сервис полностью проверяется без личных аккаунтов.

Результат на реальных данных ЕКТ

Бэктест «Машина времени»: с 01.03.2026 по 31.08.2026 заказы каждое 1-е число считает сервис (видит только прошлое), старт — с фактических остатков 1С. Сравнение с фактическими остатками 1С за те же месяцы. Метрика дефицита одинакова для обеих сторон: начальный остаток месяца = 0 при наличии спроса (артикул × месяц).

ПоставщикАктивных артикуловСлучаи «нет на складе» (артикул×месяц): было → с сервисомСредний запас
IEK18911648 → 760 (−54%) при сервисе 95% · 770 (−53%) при 90%−5% шт (95%) · −8% шт (90%)
Systeme Electric472108 → 30 (−72%) при сервисе 95% · 36 (−67%) при 90%+7% ₸ по себестоимости (95%) · +1% ₸ (90%)

Из сравнения исключены 133 артикулов «под заказ» (ни разу не были на складе на начало месяца — склад их держать не должен). Воспроизведение: python -m scripts.backtest 1.65 и python -m scripts.backtest 1.28 → data/results/*.json.

Неудовлетворённый спрос в штуках (для прозрачности; для «как было» виден только в месяцы с нулём на начало, поэтому занижен и несопоставим с симуляцией): IEK: было ≥16 209, с сервисом 29 149 шт; Systeme Electric: было ≥7 587, с сервисом 33 325 шт.

Точность прогноза на истории (python -m scripts.accuracy: отсечки 01.04–01.06.2026, горизонт 3 мес., только месяцы с товаром в наличии, WAPE — меньше лучше): IEK — 36.2% против 36.8% у «среднего за 12 мес.»; Systeme Electric — 32.2% против 30.3% у «среднего за 12 мес.». Помесячный спрос по артикулу сильно зашумлён, поэтому сезонность применяется только при подтверждённой повторяемости (параметры подобраны по этой проверке); основной эффект даёт политика заказа — см. таблицу выше.

Кривая выбора (вкладка «Машина времени», прогоны при сервисе 80/90/95/98/99%): есть уровни сервиса, где сервис лучше факта сразу по обоим показателям — IEK — при сервисе 80%: дефицитов −52% и запаса −11% шт; Systeme Electric — при сервисе 80%: дефицитов −59% и запаса −6% ₸.

4. Как работает решение (сценарий пользователя)

  1. Менеджер открывает сервис → видит KPI: позиции под угрозой дефицита, к заказу, исключённые всплески, восстановленный спрос.
  2. Кнопка «Данные и параметры»: источник данных (кейс ЕКТ или свой Excel), сроки поставки, период пересмотра, уровень сервиса, план прироста.
  3. Во вкладке «Заказ поставщикам» (по умолчанию — режим «Требует решения сейчас») фильтрует по поставщику, срочности и полю «Поиск по наименованию / коду / категории», правит «К заказу», использует кнопки «Отметить все» и «Снять все».
  4. Поле «Кто утверждает (ФИО)» и кнопка «Утвердить заказ» → файл заказа; кнопка «Выгрузить заказ для 1С (Excel)» → Excel по поставщикам.
  5. «Разбор артикула» — график и обоснование; «Машина времени» — эффект на истории; «AI-ассистент» — вопросы и черновик письма.

5. Технологии

  • Язык и данные: Python 3.11+, pandas, numpy, openpyxl / xlsxwriter (чтение выгрузок 1С и экспорт Excel).
  • Интерфейс: Streamlit (веб-приложение), Plotly (графики), собственные CSS/SVG (без эмодзи), статичный лендинг app/static/landing.html.
  • Методы расчёта: робастная статистика (IQR, MAD), классическая сезонная декомпозиция (центрированная 12-мес. средняя), страховой запас по уровню сервиса, политика периодического пересмотра заказа, бэктест-симуляция.
  • AI в продукте: OpenAI API (модель задаётся OPENAI_MODEL, по умолчанию gpt-5.4-mini), function calling над результатами расчёта; без ключа — детерминированный режим.
  • Качество: pytest (must-have ТЗ, граничные случаи, бэктест, загрузчики, интерфейс через Streamlit AppTest).
  • AI-агенты в разработке: Claude Code и OpenAI Codex (код, тесты, два раунда код-ревью, лендинг).

6. Архитектура проекта

data/raw/*.xlsx (выгрузки 1С)
   │  engine/loaders.py — приведение к единой схеме:
   │  sales(date, sku, qty, doc, warehouse[, client]) · stock_hist · stock_now · transit · items · monthly_hist
   ▼
engine/core.py  compute_orders(): разовые заказы → чистый спрос → сезонность → stockout → уровень/рост
                → прогноз на горизонт → страховой запас → потребность − остаток − в пути → кратность → срочность → обоснование
   ├── engine/backtest.py  «Машина времени» (симуляция политики заказов на истории)
   ├── engine/simulate.py  «Симулятор склада» (остаток по дням при заданном заказе)
   └── engine/agent.py     AI-ассистент (function calling над результатами, фолбэк без ключа)
app/app.py + app/ui.py  Streamlit-интерфейс: заказ, утверждение, экспорт, графики, ассистент
tests/                  pytest: must-have на синтетических данных (scripts/make_synthetic.py)

7. Установка и запуск

Требования: Python 3.11+ (проверено на 3.14), macOS / Linux / Windows.

git clone https://github.com/BAITC-Hacks/hack-4bb3095c-resource.git   # или по SSH: [email protected]:BAITC-Hacks/hack-4bb3095c-resource.git
cd hack-4bb3095c-resource
./run.sh                      # macOS/Linux: создаст .venv, поставит зависимости, запустит http://localhost:8501
# Windows: run.bat

Если что-то пошло не так:

  • Permission denied при ./run.sh (например, репозиторий скачан zip-архивом) → bash run.sh;
  • порт 8501 занят → PORT=8502 ./run.sh (откроется http://localhost:8502);
  • нет Python 3.11+ → установите с python.org; на Windows при установке отметьте «Add Python to PATH»;
  • остановить сервис — Ctrl+C в терминале.

Вручную (в т.ч. Windows):

python -m venv .venv
.venv/bin/pip install -r requirements.txt        # Windows: .venv\Scripts\pip install -r requirements.txt
.venv/bin/streamlit run app/app.py               # Windows: .venv\Scripts\streamlit run app/app.py

Первый запуск читает Excel-выгрузки (~15–20 с) и кэширует их в data/cache/.

Переменные окружения (необязательно)

Нужны только для AI-ассистента в режиме LLM. Скопируйте .env.example в .env:

ПеременнаяНазначение
OPENAI_API_KEYключ OpenAI API
OPENAI_MODELмодель, напр. gpt-5.4-mini

Без ключа ассистент отвечает детерминированно по тем же данным.

8. Как проверить решение

.venv/bin/python -m pytest -q                 # тесты: 5 must-have ТЗ, граничные случаи, бэктест, загрузчики реальных данных, ассистент, загрузка своих данных
.venv/bin/python -m scripts.backtest 1.65     # пересчёт «Машины времени» (~1–2 мин)
.venv/bin/python -m scripts.accuracy          # точность прогноза на истории

Windows: те же команды через .venv\Scripts\python.exe, например .venv\Scripts\python.exe -m pytest -q. Проверка вручную в UI: вкладка «Разбор артикула» → выберите любую позицию (напр. 030300014_): видно исключённые разовые документы, месяцы без товара, прогноз; вкладка «Разовые заказы» — все исключения с документами.

9. Данные и интеграции

  • data/raw/ — выгрузки 1С, предоставленные партнёром: продажи по документам (фактически с 01.2025), помесячные продажи и материальная ведомость — начальные остатки по месяцам (с 01.2024), товары в пути (IEK — по документам с датами поступления, SE — «в пути 24.09»), кратность/MOQ, рабочая таблица SE (категория, свободный остаток, себестоимость «СС реал»).
  • Данные о клиентах в выгрузках отсутствуют; код поддерживает необязательное обезличенное поле client.
  • Синтетические данные (scripts/make_synthetic.py) — только для тестов.
  • Внешние сервисы: OpenAI API — опционально, только для AI-ассистента.

Сторонние компоненты и заготовки (раскрытие по п. 5.4.4 положения)

ЧтоГде используетсяЛицензия / источник
pandas, numpy, openpyxl, xlsxwriterрасчёт, чтение выгрузок 1С, экспорт ExcelBSD-3 / MIT (open source)
Streamlit, Plotlyвеб-интерфейс, графикиApache-2.0 / MIT
openai (Python SDK), python-dotenv, pydanticAI-ассистент, настройкиApache-2.0 / BSD / MIT
pytestавтотестыMIT
Модель OpenAI gpt-5.4-mini (через API)AI-ассистент (необязательно; без ключа — офлайн-режим)OpenAI API, кредиты хакатона
Шрифт Inter (Google Fonts)интерфейс и лендингSIL Open Font License 1.1
Иконки Material Symbols (встроены в Streamlit)вкладки и кнопки интерфейсаApache-2.0
SVG-иконки и иллюстрации (склад, грузовик и др.)шапка, KPI, лендингнарисованы командой (в стиле Lucide, код не заимствован)
Данные ТОО «Электрокомплект» (data/raw/)расчёт и бэктестпредоставлены партнёром кейса для хакатона
Синтетические данные (scripts/make_synthetic.py)только тестысгенерированы командой

AI-инструменты разработки: Claude Code (Anthropic) и OpenAI Codex — написание кода, тестов, два раунда код-ревью, лендинг. Заранее подготовлено до 13:00: только AGENTS.md (правила для AI-агентов), autopush.sh (служебный автокоммит раз в 5 минут — для запуска решения не нужен) и памятки подготовки в docs/prep/; заготовка обёртки LLM не понадобилась и удалена. Вся функциональность кейса написана во время соревновательной части — см. историю коммитов. Скриншоты docs/img/ сняты с работающего приложения.

10. Ограничения

  • Периоды stockout определяются по материальной ведомости 1С (помесячные начальные остатки); явные периоды можно дополнительно передать листом stockouts (sku, month, avail) при загрузке своих данных.
  • Сроки поставки в данных не переданы — заданы в UI (по умолчанию IEK 40 дн., SE 30 дн. — оценка по датам документов «в пути»).
  • Текущий остаток IEK = начальный остаток сентября − продажи сентября (поступления сентября в выгрузке нет); у SE — «Свободный остаток».
  • Бэктест — месячный шаг; товар, пришедший до 15-го, доступен для продаж месяца; себестоимость есть только у SE.
  • Бэктест: объём неудовлетворённого спроса в штуках для «как было» и «с сервисом» несопоставим (для факта виден только в месяцы с нулём на начало, в симуляции — любой недостаток внутри месяца). Поэтому основная метрика — число случаев «нет на складе на начало месяца», одинаковое для обеих сторон; объём приведён в разделе результатов для прозрачности.
  • Склад в выгрузке один (Алматы); расчёт по нескольким складам поддерживается схемой (warehouse), но UI показывает общий.
  • Деплой: локальный запуск (./run.sh).

11. Ссылка на развёрнутую версию

Публичного развёртывания нет: данные партнёра не публикуются в открытом доступе. Решение запускается локально одной командой (./run.sh или run.bat) → http://localhost:8501; лендинг — http://localhost:8501/app/static/landing.html.

Развёртывание на сервере компании (чтобы сервисом пользовались несколько сотрудников по сети):

git clone https://github.com/BAITC-Hacks/hack-4bb3095c-resource.git && cd hack-4bb3095c-resource
python3 -m venv .venv && .venv/bin/pip install -r requirements.txt
cp .env.example .env            # необязательно: ключ OpenAI для AI-ассистента
.venv/bin/streamlit run app/app.py --server.address 0.0.0.0 --server.port 8501 --server.headless true

Сервис будет доступен по адресу http://<IP-сервера>:8501, лендинг — http://<IP-сервера>:8501/app/static/landing.html (раздаётся тем же сервером). Лендинг — один статичный файл app/static/landing.html: его можно выложить отдельно на любой статический хостинг (nginx, GitHub Pages) как есть; кнопка «Запустить демо» в нём ведёт на http://localhost:8501 — при размещении замените адрес на адрес сервера. Для постоянной работы команду запускают как службу (systemd / Планировщик заданий Windows); свои выгрузки 1С загружаются через «Данные и параметры» → «Загрузить свой файл».

12. Практическая применимость

Где и кем используется. Отдел закупа дистрибьютора электротехники (в кейсе — ТОО «Электрокомплект», поставщики IEK и Systeme Electric): еженедельный или ежемесячный цикл заказа поставщикам.

Какую задачу закрывает уже сейчас:

  • расчёт заказа по всем артикулам и поставщикам вместо ручного Excel;
  • очередь решений: что заказать срочно и почему (остатка не хватит до прихода поставки);
  • контроль излишков: сколько денег лежит в запасе сверх нужного (вкладка «Излишки», в ₸);
  • аудит: что рекомендовал сервис, что поменял человек и почему (файл утверждения).

Неделя менеджера закупа с сервисом:

КогдаДействиеВремя
Понедельник, утроВыгрузка из 1С → «Требует решения сейчас»: только критичные позиции, у каждой — причина10–15 мин вместо полдня в Excel
ПонедельникСпорные позиции — «Разбор артикула» и «Симулятор склада»: сколько заказать, чтобы не кончилосьпо 1 мин на позицию
ПонедельникПравки с причиной → «Утвердить заказ» → «Выгрузить заказ для 1С» → заказы поставщикам5 мин
СредаВопрос ассистенту: «что критично по SE?» — проверка без пересчёта таблиц1 мин
Раз в месяцСобственник смотрит «Излишки» (₸) и «Кривую выбора»: решает, сколько денег держать в запасе10 мин

выгрузка Excel из 1С → расчёт → Excel обратно в 1С. Любая другая компания загружает свои данные по шаблону («Данные и параметры» → «Загрузить свой файл»), интеграция не требуется.

13. Потенциал развития

Подробный план масштабирования по стратегии «кеглей» (как Facebook: Гарвард → университеты → все) — docs/SCALE.md: Электрокомплект → дистрибьюторы электротехники КЗ → соседние отрасли дистрибуции → Центральная Азия, плюс новые продукты для тех же клиентов (прогноз для поставщиков, финансирование закупки, биржа излишков, бенчмарки отрасли).

Во что проект может вырасти после хакатона:

  1. Все поставщики и склады компании — в схеме данных уже есть поставщик, склад и (обезличенный) клиент; следующий шаг — расчёт по каждому складу и сроки поставки по фактическим документам поступления.
  2. Прямая интеграция с 1С (выгрузка по расписанию и загрузка «Заказа поставщику») — ежедневный пересчёт без ручных файлов.
  3. Самообучение на правках менеджера: причины правок накапливаются и показывают, где модель систематически ошибается (сроки, акции, крупные клиенты).
  4. Условия поставщиков: минимальная сумма заказа, скидки за объём, консолидация машины/паллеты.
  5. Перераспределение излишков между складами и акции на залежавшийся товар.
  6. Другие отрасли с той же задачей: дистрибуция стройматериалов, автозапчастей, FMCG, аптечные сети — везде, где есть склад, поставщики и 1С/ERP.
  7. AI-агент закупщика: ежедневная сводка «что критично» и черновики писем поставщикам — с утверждением человеком.
Звёзды
⭐ 0
Форки
0
Язык
Python
Последний push
в прошлом месяце
Коммиты
85
Авторы
1
Файлы
62
Ветки
1

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

Resource 85

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

  • 2026-09-23 17:50docs: README — где лендинг на сервере и как выложить его отдельноResource
  • 2026-09-23 17:48docs: README — клон по HTTPS, частые проблемы запуска, развёртывание на сервере компанииResource
  • 2026-09-23 17:35docs: ссылка на план питча в READMEResource
  • 2026-09-23 17:22chore: убран неиспользуемый engine/llm.py, памятки подготовки перенесены в docs/prep, пояснён autopush.shResource
  • 2026-09-23 17:03docs: план питча к Demo Day (слайды, текст на 3 минуты, ответы на вопросы жюри)Resource
  • 2026-09-23 17:00docs: README — чем отличаемся от очевидного решения, как перевести эффект в деньги, неделя менеджера с сервисомResource
  • 2026-09-23 16:54docs: план масштабирования (стратегия «кеглей»: ЕКТ → дистрибьюторы КЗ → соседние отрасли → ЦА; продукты для поставщиков, финансирование, биржа излишков)Resource
  • 2026-09-23 16:14docs: упомянуты памятки подготовкиResource
Все коммиты (85)
  • 2026-09-23 16:13docs: полное раскрытие сторонних компонентов (п. 5.4.4): библиотеки и лицензии, модель OpenAI, шрифт Inter, иконки, данные, AI-инструменты, заготовкиResource
  • 2026-09-23 16:05docs: текст сдачи — симулятор и очередь решенийResource
  • 2026-09-23 16:05docs: симулятор склада в README и сценарии демоResource
  • 2026-09-23 16:04feat: «Симулятор склада» (остаток по дням до прихода следующего заказа) + тесты; fix по ревью: MOQ при ручной правке, аудит всех правок (в т.ч. обнулённых), защита от повторного утверждения, «нет даннResource
  • 2026-09-23 16:03auto: 2026-09-23 16:03:52Resource
  • 2026-09-23 16:03auto: 2026-09-23 16:03:06Resource
  • 2026-09-23 16:00ux: пустой заказ нельзя выгрузить/утвердить — подсказка вместо пустого файлаResource
  • 2026-09-23 15:58docs: README — зацепка за 10 секунд (проблема/решение/результат, скриншот, запуск), карта критериев оценки, разделы «Практическая применимость» и «Потенциал развития»Resource
  • 2026-09-23 15:58auto: 2026-09-23 15:58:49Resource
  • 2026-09-23 15:52docs: скриншоты интерфейса в README; ux: прочерк вместо None в «Причина правки»Resource
  • 2026-09-23 15:48auto: 2026-09-23 15:48:46Resource
  • 2026-09-23 15:48auto: 2026-09-23 15:48:02Resource
  • 2026-09-23 15:45docs: README строго по 11 разделам промпта организаторов (+Технологии, +Ссылка на развёрнутую версию, +Для кого)Resource
  • 2026-09-23 15:33auto: 2026-09-23 15:33:43Resource
  • 2026-09-23 15:32auto: 2026-09-23 15:32:59Resource
  • 2026-09-23 15:27ux: убран жаргон (горизонт, WAPE) из подписейResource
  • 2026-09-23 15:26docs: ссылка на лендинг и сценарий демо в READMEResource
  • 2026-09-23 15:23auto: 2026-09-23 15:23:40Resource
  • 2026-09-23 15:20ux: обоснование в разборе артикула — списком шаговResource
  • 2026-09-23 15:19ux: AI-ассистент как чат (история, пузыри, быстрые вопросы), язык ответов без технических полейResource
  • 2026-09-23 15:18auto: 2026-09-23 15:18:38Resource
  • 2026-09-23 15:16ux: форматы чисел и дат в таблицах излишков и разовых заказовResource
  • 2026-09-23 15:15ux: шапка до расчёта (скелет загрузки); docs: материальная ведомость = помесячные остатки 1С, используется для stockoutResource
  • 2026-09-23 15:14ux: порядок вкладок по пути пользователя, числа с разделителями, главное слева в таблице, единый стиль графиков, подсказка «3 шага»; лист stockouts в загрузке (вход ТЗ)Resource
  • 2026-09-23 15:13auto: 2026-09-23 15:13:35Resource
  • 2026-09-23 15:10ci: убран workflow — GitHub Actions недоступен в организации (задачи не стартуют); проверка — локально и чистым клономResource
  • 2026-09-23 15:08deps: numpy 2.2.6 для Python 3.11 (у 2.5.3 нет колёс под 3.11), 2.5.3 для 3.12+Resource
  • 2026-09-23 15:05ci: pytest на Python 3.11–3.13Resource
  • 2026-09-23 15:00ui: подпись ссылается на кнопку «Данные и параметры»Resource
  • 2026-09-23 14:57auto: 2026-09-23 14:57:56Resource
  • 2026-09-23 14:55ui: в «Истории товара» только примеры без необъяснимых падений остатка (перемещения/списания)Resource
  • 2026-09-23 14:53auto: 2026-09-23 14:53:32Resource
  • 2026-09-23 14:52auto: 2026-09-23 14:52:53Resource
  • 2026-09-23 14:48auto: 2026-09-23 14:48:30Resource
  • 2026-09-23 14:47auto: 2026-09-23 14:47:51Resource
  • 2026-09-23 14:43auto: 2026-09-23 14:43:27Resource
  • 2026-09-23 14:42auto: 2026-09-23 14:42:48Resource
  • 2026-09-23 14:40fix: не помечать «Критично» товары с прогнозом < 1 шт за горизонтResource
  • 2026-09-23 14:36docs: описание набора тестовResource
  • 2026-09-23 14:36docs: кривая выбора в READMEResource
  • 2026-09-23 14:36feat: «Кривая выбора» — цена каждого процента сервиса в ₸ по бэктестам 80–99%; текст для формы сдачиResource
  • 2026-09-23 14:33auto: 2026-09-23 14:33:24Resource
  • 2026-09-23 14:32auto: 2026-09-23 14:32:45Resource
  • 2026-09-23 14:29docs: формат чисел в READMEResource
  • 2026-09-23 14:29fix: второе ревью (последний месяц без следующей записи, выброс при 2 документах, пустой каталог, имена листов Excel, Windows-команды); README-цифры генерируются из data/resultsResource
  • 2026-09-23 14:27auto: 2026-09-23 14:27:43Resource
  • 2026-09-23 14:23auto: 2026-09-23 14:23:22Resource
  • 2026-09-23 14:22auto: 2026-09-23 14:22:40Resource
  • 2026-09-23 14:17auto: 2026-09-23 14:17:37Resource
  • 2026-09-23 14:13auto: 2026-09-23 14:13:19Resource
  • 2026-09-23 14:12auto: 2026-09-23 14:12:34Resource
  • 2026-09-23 14:08fix: итоги код-ревью (пустые продажи, пропуски остатков, малые выборки, сплошной дефицит, regex-поиск, экранирование, ФИО в файле утверждения, агент на всех позициях + обязательный инструмент), WindowResource
  • 2026-09-23 14:08auto: 2026-09-23 14:08:16Resource
  • 2026-09-23 14:04docs+ui: обновлённые результаты бэктеста, точность прогноза в UI и READMEResource
  • 2026-09-23 14:02auto: 2026-09-23 14:02:14Resource
  • 2026-09-23 14:01auto: 2026-09-23 14:01:32Resource
  • 2026-09-23 13:57auto: 2026-09-23 13:57:11Resource
  • 2026-09-23 13:56auto: 2026-09-23 13:56:29Resource
  • 2026-09-23 13:52feat: излишки (замороженный запас в ₸), ABC, загрузка своих данных по шаблону + тестResource
  • 2026-09-23 13:52auto: 2026-09-23 13:52:09Resource
  • 2026-09-23 13:51auto: 2026-09-23 13:51:26Resource
  • 2026-09-23 13:46ux: очередь решений, sparkline спроса, массовые действия, итоги в ₸, параметры в поповере, адаптив, фиксы шапки и графикаResource
  • 2026-09-23 13:37docs: README — методология, результаты бэктеста, запуск, проверка, ограниченияResource
  • 2026-09-23 13:37auto: 2026-09-23 13:37:06Resource
  • 2026-09-23 13:36fix(agent): код 1С vs артикул в системной инструкцииResource
  • 2026-09-23 13:35design: логистическая тема, SVG-иконки вместо эмодзи, KPI-карточки, риск-бар; фикс названий товаровResource
  • 2026-09-23 13:31auto: 2026-09-23 13:31:24Resource
  • 2026-09-23 13:26auto: 2026-09-23 13:26:21Resource
  • 2026-09-23 13:25feat: AI-агент закупщика (function calling + фолбэк)Resource
  • 2026-09-23 13:22auto: 2026-09-23 13:22:03Resource
  • 2026-09-23 13:20feat: движок расчёта заказов (сезонность, рост, stockout, разовые заказы, MOQ) + дашборд StreamlitResource
  • 2026-09-23 13:14tests: must-have checks on synthetic dataResource
  • 2026-09-23 13:12auto: 2026-09-23 13:12:01Resource
  • 2026-09-23 13:11auto: 2026-09-23 13:11:15Resource
  • 2026-09-23 11:07auto: 2026-09-23 11:07:02Resource
  • 2026-09-23 11:02auto: 2026-09-23 11:02:00Resource
  • 2026-09-23 07:35setup: gitignore + autopush scriptResource
Структура репозитория (62 файлов)
.env.example
.gitignore
.streamlit/config.toml
AGENTS.md
CLAUDE.md
README.md
app/app.py
app/static/landing.html
app/ui.py
autopush.sh
data/raw/iek_in_transit.xlsx
data/raw/iek_monthly_sales_qty.xlsx
data/raw/iek_monthly_stock.xlsx
data/raw/iek_moq.xlsx
data/raw/iek_sales_dynamics.xlsx
data/raw/iek_seasonality.xlsx
data/raw/se_in_transit.xlsx
data/raw/se_monthly_sales_qty.xlsx
data/raw/se_monthly_stock.xlsx
data/raw/se_moq.xlsx
data/raw/se_sales_dynamics.xlsx
data/raw/se_seasonality.xlsx
data/results/accuracy.json
data/results/backtest_0.84.json
data/results/backtest_1.28.json
data/results/backtest_1.65.json
data/results/backtest_2.05.json
data/results/backtest_2.33.json
data/results/replay.json
docs/DEMO.md
docs/PITCH.md
docs/SCALE.md
docs/SUBMISSION.md
docs/img/app.png
docs/img/frontier.png
docs/img/landing.png
docs/img/time_machine.png
docs/prep/GATES.md
docs/prep/HACKATHON_CONTEXT.md
engine/__init__.py
engine/agent.py
engine/backtest.py
engine/core.py
engine/loaders.py
engine/simulate.py
requirements.txt
run.bat
run.sh
scripts/__init__.py
scripts/accuracy.py
scripts/backtest.py
scripts/make_synthetic.py
scripts/update_readme.py
tests/__init__.py
tests/test_agent.py
tests/test_app.py
tests/test_backtest.py
tests/test_edge_cases.py
tests/test_loaders.py
tests/test_must_have.py
tests/test_simulate.py
tests/test_upload.py

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

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

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