AAYMA
RU
Войти

AI-Dostar

Инструмент для закупщика, который превращает Excel-выгрузки IEK и Systeme Electric в рекомендации заказа поставщику с объяснением расчёта.

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

О проекте

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

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

Суть

Инструмент для закупщика, который превращает Excel-выгрузки IEK и Systeme Electric в рекомендации заказа поставщику с объяснением расчёта. Менеджер правит количества и утверждает заказ, затем экспортирует его в XLSX/CSV.

Как устроено

Адаптеры собирают 8 таблиц Parquet из Excel-выгрузок: продажи, остатки, MOQ, сезонность, товар в пути. Движок выделяет регулярный спрос: исключает разовые накладные, компенсирует спрос в месяцы дефицита, строит сезонный прогноз с трендом. Прогноз делает статистический метод либо модель градиентного бустинга. Заказ рассчитывается с учётом склада, поставок в пути, срока поставки, уровня сервиса и кратности упаковки. Ассистент на ChatGPT по строгой JSON-схеме только определяет намерение и фильтр, а числа в ответе формирует само приложение.

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

  • Gradient Boosting
  • seasonal forecast with trend
  • one-off detection
  • stockout demand compensation
  • safety stock / service level
  • MOQ rounding
  • JSON-schema intent parsing
  • temporal evaluation

Особенности

Работает на реальных данных партнёра (248 875 строк накладных, 3 667 товаров). Есть сравнение с расчётом менеджера SE и сценарии, где по очереди отключается каждый из пяти факторов спроса. LLM не пишет чисел, а только выбирает намерение и фильтр, поэтому ответы опираются на расчёт. Есть исполненный ML-ноутбук и отчёт о проверке системы.

Стек

Python · Streamlit · Parquet · Docker Compose · Jupyter · pytest

Модели

OpenAI ChatGPT (gpt-4o-*)


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

README

README.md

AI-Dostar — от истории продаж к обоснованному заказу

Помощник закупщика, который показывает, сколько заказать и почему.

Кейс «Электрокомплект» · HackAlem · IEK & Systeme Electric

Python Streamlit ML Export Docker Version

Запуск · Деплой · Возможности · ML · Демо · Проверки системы · Документация


Закупка начинается с понимания спроса

Большая продажа может оказаться разовым проектом. Низкие продажи — следствием пустого склада. Сезонный рост легко перепутать с постоянным, а уже заказанный товар — не учесть в новой закупке.

AI-Dostar превращает Excel-выгрузки в проверяемую рекомендацию: выделяет регулярный спрос, оценивает влияние дефицита, строит прогноз и рассчитывает заказ с учётом склада, поставок в пути и кратности упаковки. Менеджер видит факторы расчёта, вносит правки и утверждает итог.

Рекомендация → объяснение → решение менеджера → файл заказа. Отправка поставщику остаётся за человеком.

На реальных данных партнёра

Строк накладныхТоваров в каталогеПоставщиковСтрок расчёта менеджера SE
248 8753 6672497

Дата расчёта по умолчанию — последняя продажа в наборе, 22 сентября 2026 года. Это историческая выгрузка, не подключение к живому складу.

Шесть экранов, один процесс закупки

ЭкранЧто получает менеджер
ЗаказРекомендации по поставщику, фильтры, срочность, правка количества с причиной, утверждение и экспорт.
ТоварИсторию всего каталога, разовые продажи и дефицит на графике, прогноз, кратность и объяснение расчёта.
ПроверкиСемь сценариев: все факторы, отключение каждого из пяти факторов и дополнительный товар в пути.
Сравнение с менеджеромСредние фактические продажи и регулярный спрос за 12 полных месяцев рядом с расчётом SE.
Разовые заказыКонкретные накладные: исходный объём, типичное количество, исключённая часть и причина.
АссистентРекомендации по заказу, поиск обычными словами, новинки, угасающий спрос и кандидатов на замену товара.

В боковой панели настраиваются метод прогноза, сроки поставки, период пересмотра, уровень сервиса, рост категорий и факторы спроса. Новый расчёт запускается кнопкой «Рассчитать».

🤖 «Спросить ассистента» — над всеми вкладками

После расчёта первой на странице стоит панель «Спросить ассистента»: поле для вопроса своими словами, кнопка «Спросить» и готовые примеры-кнопки («Какие позиции IEK заказать в первую очередь и почему?», «Почему по трубе гибкой Ø50 такой большой заказ?», «Дай сводку по заказу Systeme Electric», «Что сделать с этим заказом?», «Какие товары выходят из ассортимента…»). ChatGPT понимает вопрос и выбирает намерение и фильтр по строгой JSON-схеме; ответ и все количества формирует приложение из текущего расчёта — модель не пишет чисел. Под ответом — источник и таблица строк заказа, на которых он основан. После правки количества или пересчёта старый ответ скрывается. Без ключа вопрос разбирается по правилам.

«Покажи критичные УЗО у IEK, где был дефицит» — ассистент превращает запрос в фильтр по рассчитанному заказу. Кандидаты «старая модель → новая» остаются гипотезами для проверки: похожее название не подтверждает замену. Методика ассистента.

Версии (docs/RELEASE.md): v1.1.0 — рабочая версия (запуск через Docker, панель «Спросить ассистента» над вкладками, ответы ассистента из данных расчёта, ML-ноутбук, наглядный ML-гайд и отчёт о проверке системы). v1.0.0 — первая готовая версия.

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

🐳 Docker — рекомендуемый способ

Нужны только Git и Docker (Docker Desktop на Windows/macOS или Docker Engine + Compose v2.24+ на Linux). Python ставить не нужно.

git clone https://github.com/BAITC-Hacks/hack-1404e13c-ai-dostar.git
cd hack-1404e13c-ai-dostar
docker compose up --build

Откройте localhost:8501 и нажмите «Рассчитать». Первая сборка занимает несколько минут: в образ ставятся зависимости, из datasets/ собираются таблицы и обучается ML-модель. Следующие запуски — docker compose up (сразу), остановка — Ctrl+C или docker compose down.

НужноКак
ChatGPT для ассистентаПоложить рядом .env по образцу .env.example (OPENAI_API_KEY=...) и запустить docker compose up. Ключ передаётся как переменная окружения и не попадает в образ. Без .env всё работает, ассистент — по правилам
Быстрее собрать без MLdocker compose build --build-arg TRAIN_ML=0 && docker compose up — статистический метод доступен, ML нет
Другой портВ docker-compose.yml заменить "8501:8501" на, например, "8080:8501"
Работа в фонеdocker compose up -d --build, логи — docker compose logs -f
Сбросить утвержденияdocker compose down -v (утверждения хранятся в томе approvals и переживают перезапуск)
Обновить после git pulldocker compose up --build

Нужно ~3 ГБ свободного места на диске для образа.

Без Docker · Python 3.12+

Команды выполняются из корня репозитория; OpenAI API-ключ для расчёта и интерфейса не требуется.

Windows · PowerShell

git clone https://github.com/BAITC-Hacks/hack-1404e13c-ai-dostar.git
cd hack-1404e13c-ai-dostar
python -m venv .venv
.venv\Scripts\python.exe -m pip install -r requirements.txt
.venv\Scripts\python.exe -m app.adapters.build --raw datasets
.venv\Scripts\python.exe -m streamlit run app/ui/app.py

Откройте localhost:8501 и нажмите «Рассчитать». Статистический метод доступен сразу после сборки данных.

Linux / macOS без Docker
git clone https://github.com/BAITC-Hacks/hack-1404e13c-ai-dostar.git
cd hack-1404e13c-ai-dostar
python3 -m venv .venv
.venv/bin/python -m pip install -r requirements.txt
.venv/bin/python -m app.adapters.build --raw datasets
.venv/bin/python -m streamlit run app/ui/app.py

Используйте Python 3.12 или новее. В последующих командах заменяйте .venv\Scripts\python.exe на .venv/bin/python.

Исходные книги лежат в datasets/IEK и datasets/Systeme electric. Сборка создаёт восемь таблиц Parquet в data/clean/. Рабочий интерфейс использует реальные данные; при отсутствии таблиц показывает инструкцию по сборке. Для собственных распакованных архивов можно указать --raw data/raw.

Деплой в интернет

Streamlit Community Cloud — ссылка для демонстрации

Понадобятся GitHub-аккаунт с доступом к этому репозиторию и Streamlit Community Cloud. Публикуйте ветку main (или тег рабочей версии v1.1.0).

1. Подготовьте стартовый файл. Облако устанавливает requirements.txt, но не выполняет команду сборки Excel автоматически. data/clean/ и data/models/ исключены из Git, поэтому одного запуска app/ui/app.py на чистом сервере недостаточно.

Создайте streamlit_app.py в корне репозитория со следующим содержимым. Это пример для добавления перед деплоем; готового файла в текущей версии нет.

import os
import runpy
import subprocess
import sys
from pathlib import Path

import streamlit as st

ROOT = Path(__file__).resolve().parent


@st.cache_resource(show_spinner="Подготовка данных для демонстрации…")
def prepare(build_ml: bool):
    subprocess.run(
        [sys.executable, "-m", "app.adapters.build", "--raw", "datasets"],
        cwd=ROOT, check=True,
    )
    if build_ml:
        subprocess.run(
            [sys.executable, "-m", "app.ml.train"], cwd=ROOT, check=True,
        )
    return True


prepare(os.environ.get("BUILD_ML", "0") == "1")
runpy.run_path(str(ROOT / "app/ui/app.py"), run_name="__main__")

Подготовка кешируется между сессиями и повторными запусками страницы в одном процессе. После перезапуска сервера данные собираются заново. При обновлении Excel в datasets/ перезагрузите приложение через Reboot, чтобы очистить кеш подготовки.

Проверьте запуск локально и отправьте новый файл в ветку деплоя:

.venv\Scripts\python.exe -m streamlit run streamlit_app.py
# После проверки остановите сервер сочетанием Ctrl+C.
git add streamlit_app.py
git commit -m "deploy: add Streamlit Cloud entrypoint"
git push origin main

2. Создайте приложение. В Community Cloud нажмите Create app, подключите GitHub и заполните:

ПолеЗначение
RepositoryBAITC-Hacks/hack-1404e13c-ai-dostar или ваш fork
Branchmain
Main file pathstreamlit_app.py
Advanced settings → Python version3.12
App URLСвободное имя, например ai-dostar-demo

При необходимости предоставьте Streamlit доступ к репозиторию организации. После Deploy сервис выдаст HTTPS-ссылку вида https://<выбранное-имя>.streamlit.app. Подробности полей — в официальной инструкции Streamlit.

3. Настройте ИИ и ML. Для первого запуска достаточно статистического метода без API-ключа. В Advanced settings → Secrets можно задать:

COPILOT_ENABLED = "0"
BUILD_ML = "0"

Чтобы включить ИИ, замените настройки на следующие и подставьте свой ключ непосредственно в панели облака:

OPENAI_API_KEY = "ваш-ключ"
OPENAI_MODEL = "gpt-4o-mini"
COPILOT_ENABLED = "1"
BUILD_ML = "0"

Параметры задаются на верхнем уровне TOML, без секции [openai]: приложение читает переменные окружения, а Streamlit экспортирует в них корневые значения Secrets. Не добавляйте ключ в стартовый файл или Git. См. управление секретами Streamlit.

Для ML установите BUILD_ML = "1" и перезагрузите приложение. Стартовый файл обучит модель в том же окружении и на тех же таблицах, где она будет использоваться. Обучение увеличивает время старта и потребление ресурсов; после перезапуска процесса оно повторяется. Если облако завершает процесс из-за нехватки памяти, верните BUILD_ML = "0" и используйте статистический метод либо сервер с большими ресурсами. При BUILD_ML = "0" выбирайте статистику: наличие актуальной ML-модели не гарантируется.

4. Проверьте опубликованную версию. Откройте ссылку, нажмите «Рассчитать», проверьте вкладки «Товар» и «Ассистент», затем утверждение и скачивание тестового заказа. Ошибки установки, чтения Excel и обучения смотрите в логах приложения. Изменения опубликованной ветки подхватываются облаком; после обновления данных делайте Reboot.

Данные и сохранение заказов на сервере

Текущая версия рассчитана на совместное демо: авторизации и разделения заказов по пользователям нет, файл data/state/approvals.json общий для посетителей одного экземпляра приложения. Выбирайте доступ к приложению с учётом того, кому можно видеть выгрузки и менять утверждения.

Не используйте локальный диск Community Cloud как единственное хранилище утверждений: сохраняйте экспортированные заказы отдельно. Для постоянной работы нужны контроль доступа и устойчивое хранилище состояния. На собственном сервере сохраняйте data/state/ на постоянном диске и запускайте один экземпляр приложения, пока состояние хранится в JSON.

Два метода прогноза

Статистический · по умолчаниюML · включается отдельно
ОсноваРегулярный спрос, сезонность и устойчивый трендОбщий градиентный бустинг для товаров IEK и SE
ПризнакиБаза по полным месяцам и сезонная историяЛаги, скользящие средние, календарь, характеристики товара и статистический прогноз
ЗапускСразу после подготовки данныхПосле локального обучения
Разбор результатаФакторы и семь сценариев во вкладке «Проверки»Месячные прогнозы и отчёт временной проверки

Обучить ML-модель

Наглядный разбор: как модель учится на CPU, графики, узлы деревьев и Gym · Jupyter notebook · готовая HTML-страница.

.venv\Scripts\python.exe -m app.ml.train

В Docker модель обучается автоматически при сборке образа (TRAIN_ML=1 по умолчанию). Выберите «Метод прогноза → ML — обученный бустинг», затем «Рассчитать». Обучение — отдельный шаг; оно не требуется для статистического режима.

Артефакты сохраняются локально в data/models/. После изменения данных или версии scikit-learn модель нужно переобучить. Для горизонта дальше третьего месяца используется явно отмеченный статистический прогноз. Семь сценариев отключения факторов относятся к статистическому методу.

Измеренный результат

В сохранённом эксперименте модель обучена по август 2026 года: 86 094 примера, 2 523 товара. По отчёту эксперимента, средняя нормированная абсолютная ошибка на 20 507 проверочных примерах снизилась:

Статистический методMLСнижение ошибки
0,93890,784916,41%

Это снижение ошибки, а не процент точности. Метрика нормирует ошибку на предыдущий средний объём каждого товара. Проверочные горизонты частично пересекаются; результат не является независимым внешним испытанием. По объёмно-взвешенной метрике WAPE группа IEK / штуки ухудшилась: 33,72% → 35,93%. Поэтому улучшение не заявляется для каждого товара. Процедура и ограничения — в методике ML.

Как получается заказ

flowchart LR
    A["Excel партнёра"] --> B["Адаптеры · 8 таблиц"]
    B --> C["Разовые продажи и дефицит"]
    C --> D{"Метод прогноза"}
    D --> E["Сезонность и тренд"]
    D --> F["Обученный бустинг"]
    E --> G["Запас · склад · в пути · кратность"]
    F --> G
    G --> H["Проверка менеджера"]
    H --> I["Утверждённый XLSX / CSV"]
Горизонт = срок поставки + период пересмотра
Потребность = прогноз на горизонт + страховой запас
Заказ = max(0, потребность − свободный остаток − поставки в пределах горизонта)
Итоговая рекомендация округляется вверх до кратности поставщика.
Алгоритмы и параметры
  • Разовые продажи: строка выше median + 5 × 1.4826 × MAD (при MAD = 0 — выше 10 × median) и больше 30% месячного объёма. Сопоставимый опт в трёх разных месяцах сохраняется. Разовая строка уменьшается до типичного объёма; сам факт продажи остаётся в истории. Для единичной продажи предусмотрен отдельный порог по категории.
  • Дефицит: оценка потерянного спроса опирается минимум на два полных месяца с положительным начальным остатком. Учитываются сезонность и наблюдавшаяся часть месяца.
  • Статистика: сезонный профиль SKU смешивается с профилями группы и компании; устойчивый тренд ограничен диапазоном 0.8–1.25, рост категории задаётся отдельно.
  • Страховой запас: z × σ_daily × √lead_time; робастная оценка разброса — IQR / 1.349, с резервной оценкой при нулевом IQR.
  • ML: HistGradientBoostingRegressor; целевые значения — наблюдавшиеся продажи за вычетом разового избытка в месяцах с положительным начальным остатком. Восстановленный спрос не выдаётся за известную целевую величину. Исторический страховой запас не является доверительным интервалом ML.

Подробности: спрос · статистический прогноз · ML.

Покажите ценность за три минуты

Пример из данныхЧто демонстрирует
Петля LOOP · IEK 130200305_Из продажи 210 000 шт. исключается разовый избыток 209 990 шт., сохраняется типичный объём 10 шт.
Установочная коробка · SE 030200192_Повторяющиеся крупные продажи 36–90 тыс. сохраняются как регулярный опт.
Труба Ø50 · IEK 130300792_В статистическом сценарии рекомендация 16 350 м; без компенсации дефицита — 14 500 м, без сезонности — 9 250 м.
Дополнительные 100 м в путиДля той же трубы рекомендация снижается 16 350 → 16 250 м.

Числа приведены для контрольного статистического расчёта на 22.09.2026 с параметрами по умолчанию; при смене метода или параметров результат изменится. Последовательность экранов и тайминг — в сценарии демонстрации.

Решение остаётся у менеджера

  1. Проверить рекомендации и предупреждения по данным.
  2. Изменить количество при необходимости — с обязательной причиной. Нулевое количество сохраняется как исключение из заказа.
  3. Утвердить весь заказ выбранного поставщика, включая скрытые фильтрами строки.
  4. Скачать XLSX или CSV с кодом 1С, артикулом, количеством, складом и обоснованием.

Экспорт включает только утверждённые положительные строки и перечитывает состояние при скачивании. Изменённый расчёт требует нового утверждения. Причина менеджера попадает в файл; значения, похожие на Excel-формулы, экранируются.

При оценочных остатках требуется отметка о сверке со складом. Отдельные проблемы входных данных требуют пояснения по строке либо исключения позиции. Приложение не отправляет заказы автоматически.

ИИ-объяснения без самостоятельного изменения чисел

Copilot объясняет готовый расчёт и делает сводку по итоговым количествам менеджера. Он не прогнозирует спрос и не утверждает заказ: модель выбирает идентификаторы фактов, а приложение формирует предложения из проверенного каталога. В «Спросить ассистента» модель только понимает вопрос и выбирает данные, ответ собирает приложение. Произвольный текст модели с числами не показывается нигде. Без ключа, при ошибке API или неполных данных используется шаблон.

Для включения скопируйте .env.example в .env и заполните OPENAI_API_KEY (в Docker файл подхватывается docker compose up автоматически). Настройка OPENAI_MODEL задаёт текстовую модель; текущий вариант по умолчанию в коде — gpt-4o-mini. COPILOT_ENABLED=0 включает постоянный шаблонный режим. Ключи не коммитятся.

Проверка и воспроизводимость

После подготовки данных:

.venv\Scripts\python.exe -m pytest -q
НаборЧто проверяется
test_adapters.py, test_demand.pyКонтракты таблиц, разовые продажи, регулярный опт и восстановление спроса.
test_acceptance.pyВлияние склада и поставок, сезонность, кратность, некорректные данные и устойчивость заказа.
test_ml.pyПризнаки, временные границы, артефакт модели и интеграция ML.
test_copilot.pyПроверенные факты, ответы неверного формата и резервные объяснения без платных вызовов.
test_assistant.pyПоиск по заказу, рекомендации и признаки жизненного цикла ассортимента.
test_product.py, test_ui.py, test_ui_real.pyПравки, обязательная причина, утверждение, отзыв, экспорт и восстановление в новой сессии.

Проверки на реальных данных требуют data/clean; без него часть тестов пропускается. Тесты утверждений используют изолированные временные файлы. Результаты обучения — в ml-evaluation.json; история проверок команды — в team-memory.md.

Если что-то не запускается
СитуацияЧто сделать
docker compose ругается на env_file / requiredОбновить Docker Compose до v2.24+ (Docker Desktop последней версии) или создать пустой .env.
Docker: no space left on deviceОсвободить ~3 ГБ; в Docker Desktop → Troubleshoot → Clean / Purge data (удаляет все образы).
Порт 8501 занятОстановить другой Streamlit или сменить порт в docker-compose.yml.
Нет подготовленных данных (без Docker)Запустить python -m app.adapters.build --raw datasets через Python из .venv.
ML-модель отсутствует или устарелаВыполнить python -m app.ml.train либо выбрать статистический метод.
ИИ показывает шаблонПроверить .env и COPILOT_ENABLED; расчёт заказа работает независимо от API.
Утверждение недоступноПроверить причины правок, предупреждения по строкам и отметку сверки остатков.
Ошибка доступа к временной папке pytest на WindowsДобавить --basetemp=.pytest_cache/local-run-1, выбрав новую папку для прогона.
После git pull осталось старое поведениеПерезапустить Streamlit; при изменении зависимостей повторить установку requirements.txt.

Дополнительный браузерный прогон: scripts/ui_browser_smoke.py. Требует отдельно установленного Playwright и Microsoft Edge; инструкции есть в файле.

Границы текущего MVP

ОграничениеКак оно отражено в продукте
Остаток IEK оценочный, поступления неизвестныПредупреждение, флаг проверки и подтверждение сверки со складом.
Нет точных периодов отсутствия товараВосстановленный спрос обозначается как оценка.
Отчёт SE расходится с накладнымиНакладные задают уровень спроса; расхождение описано в методике.
Реальные сроки поставки не подтвержденыМенеджер задаёт сроки в параметрах.
Короткая история и неодинаковое качество ML по группамПоказаны метрики и ограничения, статистический метод остаётся доступным.
Утверждения хранятся в локальном JSONСессии одного процесса защищены блокировкой; несколько серверных реплик требуют общего хранилища.

Экономия денег и снижение дефицита не измерены в промышленной эксплуатации. Следующие шаги — получить фактические остатки, подтвердить сроки поставки и проверить прогноз на новых месяцах. План развития.

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

app/
├── adapters/          Excel → таблицы единого контракта
├── engine/            Разовые продажи, спрос, прогноз и пополнение
├── ml/                Обучение и применение бустинга
├── ui/                Streamlit и сохранение утверждений
├── copilot.py         Объяснения на проверенных фактах
├── assistant.py       Поиск и рекомендации по заказу
├── export.py          XLSX / CSV
├── pipeline.py        Единый запуск расчёта
└── schema.py          Контракты и параметры
datasets/              Исходные данные партнёра (Excel + CSV-копии)
docs/                  Методики, демо, проверки и память команды
notebooks/             Разбор ML-модели (ipynb + HTML)
scripts/               Проверка системы, браузерный прогон, xlsx → csv
tests/                 Модульные и интеграционные проверки
Dockerfile             Образ: зависимости, сборка данных, обучение ML
docker-compose.yml     Запуск: docker compose up --build

data/clean/, data/models/, data/state/ и .env — локальные данные и настройки, исключённые из Git. CSV-копии в datasets/*_CSV вспомогательные: pipeline читает исходные Excel.

Зона командыОтветственность
Человек 1 · СпросРазовые продажи, месячный ряд и оценка спроса при дефиците.
Человек 2 · РасчётКонтракты, прогноз, пополнение, обоснования и приёмка.
Человек 3 · ПродуктИнтерфейс, утверждение, экспорт и демонстрация.
ДокументЧто внутри
docs/RELEASE.mdЗаметки к версиям v1.1.0 (рабочая) и v1.0.0: что входит, как запущено и проверено
docs/system-verification.mdПолная проверка на реальных данных: Excel → таблицы → оба метода прогноза → утверждение → CSV/XLSX, браузер (desktop и mobile), notebook; доказательства в docs/verification/
docs/ml-visual-guide.mdКак обучается бустинг на CPU: кривая обучения, важность признаков, дерево, остатки, примеры прогнозов (docs/assets/ml/)
notebooks/01_demand_model_walkthrough.ipynbПошаговый разбор ML-модели; HTML-версия открывается без Python. Зависимости: pip install -r requirements-notebooks.txt, запуск: python scripts/run_ml_notebook.py
docs/methodology-demand.md · forecast · ml · assistantМетодики: разовые продажи и дефицит, прогноз и заказ, ML, ассистент и жизненный цикл
docs/demo.mdСценарий показа на 3 минуты
docs/architecture.md · docs/tasks.md · docs/team-memory.md · docs/completion-plan.mdАрхитектура MVP, распределение задач, память команды, план развития

Полная проверка системы одной командой: python scripts/verify_real_system.py (пересобирает таблицы, переобучает ML, сверяет прогнозы, утверждение и экспорт в изолированном хранилище).


AI-Dostar · От истории продаж — к обоснованному заказу.

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

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

adilzhankad 17ValiCoder 14Bekesh Dastan 12

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

  • 2026-09-23 17:57Record passing final Docker test suiteValiCoder
  • 2026-09-23 17:57release: рабочая версия AI-Dostar v1.1.0adilzhankad
  • 2026-09-23 17:57Merge main Docker work and document verified containerValiCoder
  • 2026-09-23 17:55Merge latest assistant layout from main into Docker branchValiCoder
  • 2026-09-23 17:54docker: run the app with docker compose up --buildadilzhankad
  • 2026-09-23 17:54docs: explain internet deployment with Streamlit Community CloudBekesh Dastan
  • 2026-09-23 17:51Merge main fixes and build tested Linux Docker imageValiCoder
  • 2026-09-23 17:44merge: ml/demand-forecast into main; assistant panel on top; READMEadilzhankad
Все коммиты (43)
  • 2026-09-23 17:33fix: ground assistant answers and invalidate stale order resultsBekesh Dastan
  • 2026-09-23 17:29Merge latest assistant and prove integrated real-data systemValiCoder
  • 2026-09-23 17:25release: готовая версия AI-Dostar v1.0.0adilzhankad
  • 2026-09-23 17:24Merge main updates and verify real-data pipelines, ML and UIValiCoder
  • 2026-09-23 17:15assistant: free-form «Спросить ассистента» with grounded answers; guard LLM pair verdictsadilzhankad
  • 2026-09-23 17:11docs(ml): add executed demand notebook and CPU training visual guideValiCoder
  • 2026-09-23 17:09docs: showcase AI-Dostar with visual README and ML resultsBekesh Dastan
  • 2026-09-23 17:01assistant: natural-language order search, assortment lifecycle, recommendationsadilzhankad
  • 2026-09-23 16:49ml: train demand forecaster with temporal evaluation and UI integrationValiCoder
  • 2026-09-23 16:30calc: flag invalid inputs, pack and one-off source in rationale (tasks 2.2, 2.3)adilzhankad
  • 2026-09-23 16:23fix: resolve ordering workflow and copilot review findingsBekesh Dastan
  • 2026-09-23 16:14ui: complete real-data purchasing workflow and integration testsValiCoder
  • 2026-09-23 15:58data: fix misnamed IEK workbooks in datasets; docs point to working real-data buildadilzhankad
  • 2026-09-23 15:57docs: record UI integration review and verified defectsBekesh Dastan
  • 2026-09-23 15:56docs: record review of copilot and acceptance changesBekesh Dastan
  • 2026-09-23 15:52docs: update team handoff with completed UIValiCoder
  • 2026-09-23 15:48ui: build purchasing workflow and demoValiCoder
  • 2026-09-23 15:42calc: copilot explanations, must-have acceptance tests, progress notesadilzhankad
  • 2026-09-23 15:40docs: detail demand implementation and team handoffBekesh Dastan
  • 2026-09-23 15:33demand: document one-off and stockout methodology (task 1.5)Bekesh Dastan
  • 2026-09-23 15:31demand: expose typical quantities in one-off report (task 1.4)Bekesh Dastan
  • 2026-09-23 15:29demand: verify one-offs and stockout estimates (task 1.3)Bekesh Dastan
  • 2026-09-23 15:25demand: compensate monthly stockout demand (task 1.2)Bekesh Dastan
  • 2026-09-23 15:24added datasets and converted to csvValiCoder
  • 2026-09-23 15:22calc: one-off acceptance test now passes; update progressadilzhankad
  • 2026-09-23 15:21calc: seasonal forecast with sustained trend (task 2.1)adilzhankad
  • 2026-09-23 15:20demand: detect one-off invoice linesBekesh Dastan
  • 2026-09-23 15:13Merge branch 'main' of https://github.com/BAITC-Hacks/hack-1404e13c-ai-dostarValiCoder
  • 2026-09-23 15:13Dataset reformatted from xlsx to csvValiCoder
  • 2026-09-23 15:09Record project progress in team memoryadilzhankad
  • 2026-09-23 15:08calc: engine skeleton with working stubs (task 2.0)adilzhankad
  • 2026-09-23 15:02Add team task split and record decisions in team memoryadilzhankad
  • 2026-09-23 14:54Add data contract and IEK/SE adaptersadilzhankad
  • 2026-09-23 14:38Use Git-backed Markdown for team memoryadilzhankad
  • 2026-09-23 14:17Set up shared Codex team memoryadilzhankad
Структура репозитория (115 файлов)
.codex/config.toml
.dockerignore
.env.example
.gitignore
AGENTS.md
Dockerfile
README.md
app/__init__.py
app/adapters/__init__.py
app/adapters/build.py
app/adapters/common.py
app/adapters/iek.py
app/adapters/se.py
app/assistant.py
app/copilot.py
app/engine/__init__.py
app/engine/demand.py
app/engine/explain.py
app/engine/forecast.py
app/engine/lifecycle.py
app/engine/oneoffs.py
app/engine/replenish.py
app/export.py
app/ml/__init__.py
app/ml/model.py
app/ml/train.py
app/mock.py
app/pipeline.py
app/schema.py
app/ui/app.py
app/ui/state.py
app/ui/tab_assistant.py
datasets/IEK/MOQ  ИЭК.xlsx
datasets/IEK/Динамика продаж_2025-2026.xlsx
datasets/IEK/Ежемесячные остатки продукции за последние 2 года  ИЭК.xlsx
datasets/IEK/Ежемесячные продажи в количественном выражении за последние 2 года.xlsx
datasets/IEK/Путь ИЭК 22.09.2026.xlsx
datasets/IEK/Сезонность ИЭК.xlsx
datasets/IEK_CSV/MOQ  ИЭК.csv
datasets/IEK_CSV/Динамика продаж_2025-2026.csv
datasets/IEK_CSV/Ежемесячные остатки продукции за последние 2 года  ИЭК.csv
datasets/IEK_CSV/Ежемесячные продажи в количественном выражении за последние 2 года.csv
datasets/IEK_CSV/Путь ИЭК 22.09.2026.csv
datasets/IEK_CSV/Сезонность ИЭК.csv
datasets/Systeme electric/MOQ SystemElectric.xlsx
datasets/Systeme electric/Динамика продаж_Syseme Electric_2025-2026.xlsx
datasets/Systeme electric/Ежемесячные остатки SystemElectric 2024-2026.xlsx
datasets/Systeme electric/Ежемесячные продажи в кол-м выражении SystemElectric 2024-2026.xlsx
datasets/Systeme electric/Сезонность SystemElectric 2024-2026.xlsx
datasets/Systeme electric/Товар в пути_SystemElectric на 22.09.2026.xlsx
datasets/Systeme electric_CSV/MOQ SystemElectric.csv
datasets/Systeme electric_CSV/Динамика продаж_Syseme Electric_2025-2026.csv
datasets/Systeme electric_CSV/Ежемесячные остатки SystemElectric 2024-2026.csv
datasets/Systeme electric_CSV/Ежемесячные продажи в кол-м выражении SystemElectric 2024-2026__Лист1.csv
datasets/Systeme electric_CSV/Ежемесячные продажи в кол-м выражении SystemElectric 2024-2026__Лист_1.csv
datasets/Systeme electric_CSV/Сезонность SystemElectric 2024-2026.csv
datasets/Systeme electric_CSV/Товар в пути_SystemElectric на 22.09.2026__TDSheet.csv
datasets/Systeme electric_CSV/Товар в пути_SystemElectric на 22.09.2026__Лист1.csv
docker-compose.yml
docs/RELEASE.md
docs/architecture.md
docs/assets/ml/diagnostics.json
docs/assets/ml/feature_importance.csv
docs/assets/ml/feature_importance.png
docs/assets/ml/forecast_examples.png
docs/assets/ml/holdout_predictions.csv
docs/assets/ml/learning_curve.csv
docs/assets/ml/learning_curve.png
docs/assets/ml/production_tree.png
docs/assets/ml/production_tree_nodes.csv
docs/assets/ml/residuals.png
docs/assets/ml/run-summary.md
docs/assets/readme-hero.svg
docs/completion-plan.md
docs/demo.md
docs/methodology-assistant.md
docs/methodology-demand.md
docs/methodology-forecast.md
docs/methodology-ml.md
docs/ml-evaluation.json
docs/ml-visual-guide.md
docs/system-verification.md
docs/tasks.md
docs/team-memory.md
docs/verification/browser-ml.txt
docs/verification/browser-statistical.txt
docs/verification/ml-assistant-desktop.png
docs/verification/ml-order-desktop.png
docs/verification/ml-order-mobile.png
docs/verification/pytest.txt
docs/verification/pytest.xml
docs/verification/real-system.json
docs/verification/real-system.txt
docs/verification/source-sha256.json
docs/verification/statistical-order-desktop.png
docs/verification/test-summary.json
notebooks/01_demand_model_walkthrough.html
notebooks/01_demand_model_walkthrough.ipynb
notebooks/01_demand_model_walkthrough.py
requirements-notebooks.txt
requirements.txt
scripts/excel_to_csv.py
scripts/run_ml_notebook.py
scripts/ui_browser_smoke.py
scripts/verify_real_system.py
tests/conftest.py
tests/test_acceptance.py
tests/test_adapters.py
tests/test_assistant.py
tests/test_copilot.py
tests/test_demand.py
tests/test_ml.py
tests/test_product.py
tests/test_ui.py
tests/test_ui_real.py
Ветки (2)

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

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

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