AAYMA
RU
Войти

ChipAI

Чат-консультант по живому каталогу ekt.kz: поиск товаров, карточки с остатками и сертификатами, подбор аналогов, база знаний на трёх языках, разбор…

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

О проекте

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

Задача кейса: AI-консультант по каталогу ekt.kz: товары, аналоги, цены, остатки, корзина

Суть

Чат-консультант по живому каталогу ekt.kz: поиск товаров, карточки с остатками и сертификатами, подбор аналогов, база знаний на трёх языках, разбор спецификаций (PDF/DOCX/XLSX/изображения с OCR) и корзина с подтверждением.

Как устроено

AgentService v3 разделён на модули router, state, tool_executor и composer. Модель через Function Calling вызывает 5 инструментов чтения: search_products, get_product_detail, find_analogs, query_knowledge_base и check_city_stock. Факты о товаре сервер собирает из ответов HTTPS API ekt.kz (Basic Auth, TTL-кэш). Поиск лексический с нормализацией электрических параметров, embeddings для гибридного режима опциональны; индексы хранятся в SQLite. Спецификации разбираются PyMuPDF, python-docx, openpyxl и Tesseract и сопоставляются с каталогом. Корзина меняется только по одноразовому токену предложения после явного согласия; без OPENAI_API_KEY работают программные правила.

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

  • OpenAI Function Calling
  • лексический + гибридный поиск
  • RAG по 53 материалам RU/KK/EN
  • Tesseract OCR
  • разбор спецификаций
  • одноразовые токены подтверждения корзины
  • 72 eval-сценария

Особенности

Загрузка спецификации даёт полную или частичную смету по каталогу. Контекст диалога понимает «подешевле», «а в Алматы?», «второй вариант». Корзина защищена токеном, привязанным к сессии, товару, количеству и цене. Цены и наличие никогда не берутся из текста модели. В README ошибочно написано «кейс №1»; по сути это кейс 10.

Стек

Python · FastAPI · Uvicorn · Pydantic · TypeScript · Vite · Tailwind CSS 4 · React 19 · SQLite · Tesseract · PyMuPDF · Docker Compose · nginx

Модели

OpenAI gpt-4o-mini


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

README

README.md

NEXIS / ChipAI — ИИ-консультант для ekt.kz

HackAlem AI 2026 · команда NEXIS · кейс №1 ТОО «Электрокомплект»

Чат для подбора электротехнической продукции: от вопроса о товаре или загруженной спецификации до списка закупки, подтверждённого покупателем.

Репозиторий · Архитектура · API-контракт · Реализация v3

1. Какую проблему решает проект

Частному покупателю или закупщику компании нужны характеристики, сертификаты, остатки по складам, аналоги и условия покупки. Обычно эти вопросы требуют обращения к менеджеру и замедляют выбор товара.

ChipAI объединяет консультацию и подготовку списка закупки в одном окне. Покупатель получает данные каталога и объяснение рекомендаций, а менеджер может сосредоточиться на сложных запросах. Снижение времени консультации и нагрузки на менеджеров — цель проекта; эти бизнес-показатели пока не измерялись.

Текущий результат: работающий frontend и backend с живым каталогом ekt.kz, обработкой документов и сохраняемой демонстрационной корзиной. Передача заказа в реальную корзину ekt.kz требует отдельного API партнёра.

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

ВозможностьЧто получает пользователь
Поиск товараПоиск по ID, артикулу, штрихкоду, названию и электрическим параметрам; нормализация обозначений вроде 3х2,5 / 3×2.5; постоянный поисковый индекс
Карточка товараЦена, артикул, характеристики, остатки по складам, время проверки, ссылка на товар и сертификат, если он есть в API
Контроль качества данныхНеизвестные значения остаются неизвестными; противоречия характеристик показываются предупреждением
АналогиПодбор по известным техническим параметрам, проверка наличия и краткое объяснение совпадений
База знанийУсловия покупки, технические объяснения и вопросы для уточнения подбора; 53 материала на RU/KK/EN со ссылками и статусами проверки
Продолжение диалогаУточнения «нужно пять», «а в Алматы?», «подешевле», «второй вариант»; контекст кандидатов, параметров, количества, города и бюджета
Спецификации и изображенияPDF, TXT, DOCX, XLSX, XLS, JPEG, PNG, WEBP; найденные и неизвестные строки, количество и полная либо частичная смета
Подтверждаемая корзинаДобавление, изменение количества и удаление только после отдельного согласия; проверка цены, остатка и кратности
Сохранение результатаКорзина в SQLite, ссылка на её актуальное состояние; CSV-экспорт через API
ИнтерфейсЧат, карточки, статусы выполненных действий, выбор количества, маскот ChipAI и панель корзины
ЯзыкиРусские, казахские и английские ответы, подписи характеристик, ошибки, сметы и подтверждения; исходные названия товаров сохраняются

Быстрые вопросы отправляются в backend. Ошибки API не подменяются синтетическими ответами. Фоновая витрина интерфейса иллюстративная и подписана; её цены и товары не используются в консультации.

3. Как работает решение

  1. Пользователь открывает чат и вводит вопрос, артикул или прикрепляет спецификацию.
  2. Frontend получает анонимную серверную сессию и отправляет запрос в FastAPI.
  3. Агент определяет сценарий: поиск, уточнение параметров, наличие в городе, аналог или условия покупки. Файлы проходят серверный разбор.
  4. Backend запрашивает каталог и возвращает ответ, структурированные карточки, источники и статусы выполненных действий.
  5. Для выбранного товара и количества сервер создаёт предложение. Пользователь видит название, цену, количество и предупреждения.
  6. Только после явного подтверждения сервер повторно проверяет данные и меняет корзину. Токен предложения одноразовый и связан с сессией, товаром, количеством и ценой.
  7. Пользователь открывает актуальную сохранённую корзину по ссылке.

Загрузка файла и просмотр товара сами по себе не меняют корзину. Если часть строк не распознана, смета явно обозначается как неполная. Превышение остатка, повторное подтверждение или изменившаяся цена отклоняются.

4. Технологии и AI

КомпонентТехнологии
BackendPython, FastAPI, Uvicorn, Pydantic
FrontendTypeScript, Vite 8, HTML/CSS, Tailwind CSS 4; React 19 используется для маскота ChipAI
AI-инструментыOpenAI Python SDK, Function Calling; модель по умолчанию в конфигурации — gpt-4o-mini
КаталогHTTPS API ekt.kz с Basic Auth, клиент на Requests, кеш с TTL
Хранение и поискSQLite: корзины, сессии, индекс знаний и отдельный индекс каталога; лексический и необязательный гибридный поиск
ДокументыPyMuPDF, python-docx, openpyxl, xlrd
OCRTesseract, pytesseract, Pillow; языки rus, kaz и eng включены в Docker
ЗапускDocker Compose, nginx; общий Python launcher для локальной разработки
ПроверкиPython unittest, FastAPI TestClient, Node.js test runner, TypeScript typecheck

Как устроен агент

В проекте один AgentService. В версии v3 маршрутизация запроса, контекст выбора, исполнение инструментов и сборка ответа разделены на небольшие модули. Агент различает вопросы об устройстве товара, условиях магазина и выборе конкретной позиции; может обрабатывать несколько намерений в одном запросе.

Модели доступны пять инструментов чтения: search_products, get_product_detail, find_analogs, query_knowledge_base и check_city_stock. Фактический ответ о товаре собирается сервером из полученных данных. Изменение корзины выполняется отдельным сервисом после проверки согласия.

Поиск товаров использует точные идентификаторы, лексическое ранжирование и фильтры электрических параметров. База знаний содержит 53 материала и 159 языковых фрагментов на русском, казахском и английском. Индекс SQLite хранит версии, хеши содержания, источники и статусы проверки. Лексический поиск работает без ключа модели; необязательные embeddings добавляют поиск по смыслу и объединение результатов. Отдельный сервер векторной базы не нужен.

Без OPENAI_API_KEY работают программные правила, лексический поиск знаний и тот же живой каталог. При настроенном ключе подключается модель; OPENAI_MODEL позволяет изменить её имя. Поддержка embeddings включается отдельно. В текущей проверенной конфигурации ключ отсутствовал: реальные вызовы модели и платные embeddings не выполнялись. Неподтверждённый модельный текст не используется как источник цен и наличия; пояснения собираются из найденных материалов.

Ответ содержит язык, request_id, источники, уточняющий вопрос при необходимости и диагностику режима/времени обработки. Статусы reasoning_steps показывают действия инструментов, а не внутренние рассуждения модели. Подробнее: корпус и происхождение материалов, реализация v3.

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

flowchart TD
    UI["Браузер: чат и корзина"] -->|"HTTP /api, через nginx в Docker"| API["FastAPI"]
    API --> Agent["AgentService: сценарии и контекст"]
    Agent --> Catalog["EktClient: поиск и кеш"]
    Catalog --> CatalogDB["SQLite: индекс каталога"]
    Catalog -->|"HTTPS GET + Basic Auth"| EKT["Каталог ekt.kz"]
    Agent --> KB["SQLite: 53 материала RU/KK/EN"]
    KB -->|"Необязательные embeddings"| LLM["OpenAI API"]
    Agent -->|"Необязательный Function Calling"| LLM["OpenAI API"]
    API --> Cart["CartService: предложение и подтверждение"]
    Agent --> Cart
    Cart --> DB["SQLite"]
    API --> Parser["Разбор спецификации"]
    Parser --> Catalog
    Parser --> OCR["Tesseract OCR"]
Файл или каталогНазначение
frontend/src/main.ts, frontend/src/chat/Чат, API-клиент, карточки, загрузка и подтверждения
backend/main.pyHTTP API, валидация, CORS, лимиты и обработка ошибок
backend/agent_service.py, backend/agent/Оркестрация, маршрутизация, состояние, инструменты и сборка ответа
backend/dialogue_context.pyОграниченный контекст выбора в RAM, без полной истории
backend/localization.pyЯзыки RU/KK/EN для API, корзины, сметы и ошибок
backend/ekt_client.pyДанные ekt.kz, кеш, поиск и аналоги
backend/cart_service.pySQLite, предложения, подтверждения и ссылки корзины
backend/spec_parser.pyИзвлечение текста, OCR и сопоставление строк
backend/knowledge_base.py, backend/retrieval/Индексы знаний и каталога, поиск и метаданные источников
database/knowledge/articles.jsonРедактируемый корпус из 53 материалов на трёх языках
backend/scripts/index_knowledge.py, backend/scripts/import_catalog.pyИндексация знаний и возобновляемый импорт каталога
backend/evals/72 локальных сценария разработки и регрессий
backend/tests/, frontend/tests/Автоматические проверки
compose.yamlОбщий запуск двух контейнеров и постоянного хранилища

API v3 сохраняет /api/session, /api/agent/chat, /api/agent/upload-spec, /api/cart/offer, /api/cart/add, /api/cart/change-offer, /api/cart/change и /api/cart. Добавлены языковые поля и диагностика источников; схемы, ошибки и остальные маршруты описаны в контракте и Swagger.

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

Вариант A — Docker, включая OCR

Нужны Git, Docker с Compose и доступ в интернет. На Windows используется Docker Desktop в режиме Linux containers. Все дальнейшие команды выполняются из корня проекта.

1. Получите код:

git clone https://github.com/BAITC-Hacks/hack-80299a21-nexis.git
cd hack-80299a21-nexis

2. Создайте .env из шаблона, сохранив уже настроенный файл.

PowerShell:

if (!(Test-Path -LiteralPath .env)) { Copy-Item .env.example .env }

Linux/macOS:

test -f .env || cp .env.example .env

3. Заполните настройки в .env:

ПеременнаяЗначение
EKT_API_BASEhttps://ekt.kz/api — уже указано в шаблоне
EKT_API_USER, EKT_API_PASSУчётные данные API, предоставленные организаторами или партнёром; обязательны для живого каталога
OPENAI_API_KEYНеобязательно: оставьте пустым для запуска по правилам
OPENAI_MODELgpt-4o-mini по умолчанию; используется при включённой модели
EKT_CATALOG_PAGES4 по умолчанию; начальная выборка страниц при пустом постоянном индексе
NEXIS_EMBEDDINGS_ENABLEDfalse по умолчанию; true разрешает поиск с готовыми embeddings и запросы векторизации вопросов
NEXIS_EMBEDDING_MODELtext-embedding-3-small по умолчанию; должна совпадать с моделью построенного индекса
NEXIS_PUBLIC_URLНеобязательно для Docker: публичный адрес frontend при размещении; локально используется http://localhost:5173

Секреты остаются в .env на backend. Этот файл исключён из Git; во frontend их передавать не нужно. Полный список настроек находится в .env.example.

4. Соберите и запустите приложение:

docker compose up --build -d
docker compose ps
АдресНазначение
http://localhost:5173Приложение с чатом
http://localhost:8000/docsSwagger API
http://localhost:5173/api/healthСостояние сервиса и конфигурация возможностей

Первый запуск загружает образы и зависимости. Backend должен перейти в состояние healthy. Health показывает конфигурацию; успешный доступ к каталогу проверяется запросом товара.

5. Логи и остановка:

docker compose logs --tail=100 backend frontend
docker compose down

Обычная остановка сохраняет SQLite в именованном Docker volume. Порты 5173 и 8000 должны быть свободны. Если каталог недоступен, проверьте настройки API и сообщение об ошибке в чате. Подробнее: Docker и OCR.

Вариант B — локальная разработка без Docker

Проверенное окружение: Windows, Python 3.14 и Node.js 24 с npm. Получите репозиторий и заполните .env по шагам выше.

Первый запуск устанавливает зависимости и запускает оба сервера:

python backend/scripts/dev.py --install

Повторный запуск:

python backend/scripts/dev.py

Приложение доступно на localhost:5173, API — на localhost:8000. Для других портов:

python backend/scripts/dev.py --api-port 8002 --ui-port 5174

Launcher согласует API-адрес и CORS; остановка — Ctrl+C. Для фото и сканов в нативном режиме отдельно установите Tesseract с языками rus/eng/kaz и при необходимости задайте TESSERACT_CMD. Текстовые PDF, Word, Excel и TXT не требуют OCR.

Индексы знаний и каталога

Корпус входит в репозиторий и backend-образ. Его лексический индекс создаётся автоматически при первом обращении; подготовить его явно без сетевых запросов можно так:

docker compose run --rm --no-deps backend python backend/scripts/index_knowledge.py

Для расширения каталога выполните ограниченный импорт. Повтор команды продолжает с сохранённой страницы; --restart начинает новое обновление:

docker compose run --rm --no-deps backend python backend/scripts/import_catalog.py --max-pages 100

Нужны учётные данные ekt.kz. Импорт выполняет GET-запросы, а не записывает товары партнёру. В текущих локальном и Docker-прогонах загружены 11 страниц / 220 товаров, следующая страница — 12; это не полный каталог. В Docker индекс сохраняется на постоянном volume. Эти SQLite-данные не входят в Git или образ: новая установка формирует собственный индекс. Статус и охват доступны в /api/health.

Embeddings необязательны. При наличии OPENAI_API_KEY следующий явный запуск делает платные запросы для изменённых фрагментов:

docker compose run --rm --no-deps backend python backend/scripts/index_knowledge.py --embeddings

После построения укажите NEXIS_EMBEDDINGS_ENABLED=true в .env и пересоздайте backend через docker compose up -d backend. Без ключа, готовых векторов или при ошибке используется лексический поиск; фактический режим и причина перехода возвращаются в метаданных. Для нативного режима используйте те же скрипты через Python из .venv. Подробности — в инструкции корпуса.

7. Как проверить решение жюри

Сценарий на 5–7 минут

Начните с пустой демонстрационной корзины. Каталог живой: цены и остатки могут измениться, поэтому сравнивайте ответ с текущей карточкой, а не с фиксированными числами в примере.

ШагДействиеОжидаемый результат
1Откройте приложение → ChipAI → быстрый вопрос «Товар 515291»Реальная карточка, характеристики и остатки. Если сохраняется расхождение тока 160/250 А в API, оно показано предупреждением
2Напишите «А в Алматы?»Ответ про склады города для выбранного товара; корзина не меняется
3Нажмите «Проверить и добавить» у доступного товараОтдельное окно с товаром, количеством, свежей ценой и предупреждениями
4Нажмите «Отмена»Корзина остаётся пустой
5Повторите выбор и нажмите «Да, подтверждаю»Товар появляется в серверной корзине; количество не превышает остаток
6Откройте корзину, измените количество и подтвердите действиеНовое количество записывается после согласия; ссылка открывает актуальное состояние
7Перезагрузите страницуКорзина восстанавливается из серверного хранилища
8Загрузите docs/sample_specification.pdf или docs/sample_specification.txtАртикул 200300285_ найден с количеством 2; неизвестная строка показана отдельно; смета неполная, корзина не меняется
9Спросите «Какие условия оплаты и доставки?»Содержательный ответ со ссылками на источники
10Переключите язык на KZ и повторите вопрос об условияхКазахский ответ без ошибки несовместимого кода языка
11Переключите язык на EN и спросите «What is the difference between an RCD and an RCBO?»Английское объяснение из базы знаний со ссылками на источники

Если товар 515291 недоступен, выберите другую доступную карточку для шагов с корзиной. Конфликт характеристик требует уточнения у менеджера; этот сценарий проверяет локальную демо-корзину и не оформляет покупку.

Текстовое подтверждение. Откройте приложение в приватном окне браузера с новой сессией. До выбора города отправьте «Артикул 030300435_, нужно 2 шт». Этот артикул использовался в браузерной приёмке. Если текущий остаток достаточен и нет предупреждений, агент предложит добавление. Ответьте «Да, добавь»: добавятся 2 штуки. Повторное «Да, добавь» без нового предложения не должно добавить их ещё раз. При изменении данных каталога используйте другой доступный товар без противоречий.

Отсутствующий товар и аналоги. Запросите позицию с нулевым текущим остатком. Агент проверяет технически подходящие альтернативы и объясняет совпадения. Если в доступной выборке подходящих вариантов нет, он сообщает об этом.

Уточнения v3. После нескольких найденных карточек выберите «второй вариант», затем спросите его характеристики или наличие в городе. Для широкого запроса «Нужен автомат» ожидается уточнение необходимых параметров. Объясняющий вопрос «Чем УЗО отличается от дифавтомата?» должен обращаться к базе знаний, а не подменяться случайной карточкой.

Автоматические проверки

Backend в Docker, без запросов к живому каталогу:

docker compose run --rm --no-deps backend python -m unittest discover -s backend/tests -p "test_*.py" -v

Локальный набор оценки агента на 72 сценариях: 24 задачи на трёх языках. Сеть, реальная LLM и embeddings в этом запуске отключены; каталог и хранилища изолированы:

docker compose run --rm --no-deps backend python -m backend.evals.run

Это набор разработки и регрессий, а не независимая оценка реальной модели или задержки живого API. Условия запуска и состав — в backend/evals/README.md.

Настоящий OCR на сгенерированном тестовом изображении:

docker compose run --rm --no-deps backend python backend/scripts/doctor.py --require-ocr --ocr-smoke

Живой API и изолированная временная демо-корзина; требуются действующие EKT credentials:

docker compose run --rm --no-deps backend python backend/scripts/smoke_live.py

Frontend, при установленном Node.js 24:

cd frontend
npm ci
npm run typecheck
npm test
npm run build
cd ..

Подтверждённая приёмка v3, 23 сентября 2026:

ПроверкаРезультат
Backend160 тестов прошли на Windows и Linux в Docker
Frontend44 теста прошли, включая ссылки корзины при смене языка; TypeScript и production-сборка успешны
Диалоги72 сценария × 2 запуска = 144 успешных прогона, по 48 на RU/KK/EN
Поиск знаний30/30 Top-1 и Recall@5, по 10 вопросов на язык
OCR в DockerРеальное распознавание тестового изображения прошло; установлены rus/kaz/eng

Диалоги и retrieval проверены на наборах разработки и регрессий; это не независимая оценка реальной LLM. В браузере проверены ответы базы знаний и источники на RU/KK/EN, живая карточка 515291 и уточнение характеристик, отмена и подтверждённое добавление 2 штук, PDF с одной найденной и одной неизвестной строкой, восстановление корзины после перезапуска контейнера и её HTML-страница на казахском. Подробности текущей приёмки — в журнале v3; результаты предыдущей версии сохранены в историческом аудите.

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

  • Каталог партнёра: HTTPS GET https://ekt.kz/api/products, пагинация ?page=2 и карточка https://ekt.kz/api/products/detail?id=515291. Авторизация Basic Auth выполняется только backend.
  • Данные товара: ID, артикул, название, цена, количество, склады, свойства, изображения, ссылки и документы, если они присутствуют в ответе API.
  • Свежесть: страницы кешируются на 300 секунд, детали — на 30 секунд по умолчанию. Перед добавлением или изменением положительного количества цена и остаток проверяются заново.
  • База знаний: 53 редакционных материала на RU/KK/EN со ссылками на ekt.kz, ABB и Schneider Electric; 159 фрагментов текущего индекса. Источник, версия, дата и статус проверки возвращаются вместе с результатом. Условия, требующие менеджера, и редакционные инженерные памятки выделены отдельными статусами; дата проверки не означает бессрочную гарантию. Происхождение корпуса.
  • OpenAI: необязательная внешняя интеграция для выбора инструментов. При её включении ограниченная история и результаты инструментов передаются модели; загруженные документы ей не отправляются.
  • Хранение: отдельные SQLite сохраняют корзины, индекс каталога и индекс знаний. Краткий контекст выбора хранится в RAM до 30 минут, максимум для 1024 сессий: выбранный товар, кандидаты, параметры, количество, город, бюджет, язык и ожидаемое уточнение. После перезапуска этот контекст теряется.
  • Демонстрационные данные: синтетический транспорт используется в автотестах. Примеры PDF/TXT содержат один реальный артикул и одну намеренно неизвестную строку. Приложение не сохраняет загруженные файлы; временный multipart-файл закрывается после обработки.

Решение не запрашивает платёжные реквизиты. История чата не сохраняется в БД. Ссылки корзины имеют временный токен чтения.

9. Ограничения текущей версии

  1. Корзина демонстрационная. API партнёра предоставляет только чтение каталога. Товар не резервируется, заказ и оплата на ekt.kz не создаются. Нужны официальный API корзины и привязка к покупателю.
  2. Каталог покрыт частично. Возобновляемый CLI умеет пройти все страницы, но текущий импорт — 220 товаров, не полный магазин. Только успешное достижение пустой страницы завершает снимок. Поиск использует постоянный индекс и уже загруженные страницы; при пустом индексе загружается выборка EKT_CATALOG_PAGES; прямой запрос ID доступен за её пределами. Индекс не служит источником актуальных цен и остатков.
  3. Аналоги зависят от качества данных. Проверяются поддерживаемые семейства и известные параметры. Нельзя гарантировать подходящий аналог при неполных характеристиках или вне выборки.
  4. OCR распознаёт читаемую маркировку. Определение точной модели по внешнему виду без текста не реализовано. Двоичный Word .doc нужно преобразовать в .docx.
  5. Есть ограничения файлов: до 15 МиБ на файл, до 250 товарных строк; дополнительные ограничения страниц, архивов и изображений описаны в API-контракте.
  6. Количество целочисленное. Дробный метраж кабеля требует расширения контракта единиц измерения.
  7. Качество языков требует дальнейшей проверки. RU/KK/EN поддерживаются в ответах и сервисных сценариях. Казахский корпус требует вычитки носителем языка. Названия, бренды и значения свойств из API сохраняются как данные поставщика; это не обещание перевода каждой исходной строки.
  8. Нет CRM и авторизации покупателя сайта. Вместо фиктивной заявки возвращаются официальные контакты. Есть анонимные сессии, но нет истории для авторизованных покупателей.
  9. Прототип ещё требует эксплуатационной проверки. Реальная модель OpenAI, embeddings, нагрузка и SLA не проверены. 72 офлайн-сценария — набор разработки. Контекст диалога, оперативный кеш и лимитер локальны процессу; несколько воркеров требуют общего состояния. Потоковой выдачи ответа нет.
  10. Проверка устройств неполная. Адаптивная вёрстка сохранена и desktop осмотрен; отдельная приёмка на настоящем телефоне остаётся в плане.

Следующие улучшения и внешние зависимости перечислены в плане развития агента и журнале реализации v3.

10. Deployed-версия и полезные ссылки

Публичная deployed-ссылка для текущей версии в репозитории не указана. Проверенная версия запускается локально: http://localhost:5173. Этот адрес доступен на компьютере, где запущен проект.

Для публичного размещения понадобятся HTTPS, публичный домен, настройки NEXIS_PUBLIC_URL/CORS и постоянное хранилище. Локальный Compose публикует порты только на 127.0.0.1; размещение на самом ekt.kz пока не выполнено.

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

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

Tolegen Manassov 35Brook 5

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

  • 2026-09-23 17:49fix: integrate verified comparison routing and final acceptance reportTolegen Manassov
  • 2026-09-23 17:49docs: record v3 Docker browser and multilingual acceptance resultsTolegen Manassov
  • 2026-09-23 17:49fix(agent): compare explicitly identified products with verified detailsTolegen Manassov
  • 2026-09-23 17:42fix: preserve selected language in cart navigationTolegen Manassov
  • 2026-09-23 17:42fix(frontend): synchronize saved cart link languageTolegen Manassov
  • 2026-09-23 17:36feat: integrate multilingual frontend and product comparisonTolegen Manassov
  • 2026-09-23 17:36feat: integrate agent v3 and multilingual knowledge backendTolegen Manassov
  • 2026-09-23 17:35feat(backend): add multilingual grounded agent, persistent RAG and catalog indexTolegen Manassov
Все коммиты (40)
  • 2026-09-23 17:35docs(api): define multilingual agent, retrieval and comparison contractTolegen Manassov
  • 2026-09-23 17:33feat(frontend): render localized product comparison tablesTolegen Manassov
  • 2026-09-23 17:31Merge remote-tracking branch 'origin/frontend-ui-dev' into frontend-ui-devTolegen Manassov
  • 2026-09-23 17:24fix(frontend): preserve unit provenance and unknown packagingTolegen Manassov
  • 2026-09-23 17:21feat(frontend): support multilingual agent and cited knowledge responsesTolegen Manassov
  • 2026-09-23 17:20fix(frontend): center chat language switcher and add gg.mdBrook
  • 2026-09-23 17:07docs: publish agent and RAG improvement roadmapTolegen Manassov
  • 2026-09-23 17:07docs: plan agent architecture, multilingual RAG and quality improvementsTolegen Manassov
  • 2026-09-23 16:57docs: publish jury README in mainTolegen Manassov
  • 2026-09-23 16:56docs: prepare complete Russian README for hackathon juryTolegen Manassov
  • 2026-09-23 16:49merge: integrate live ChipAI frontend with guarded backend v2.1Tolegen Manassov
  • 2026-09-23 16:46feat(backend): complete dialogue context, guarded cart edits and integrated runtimeTolegen Manassov
  • 2026-09-23 16:44fix(frontend): align product quantity with pending chat offerTolegen Manassov
  • 2026-09-23 16:37fix(frontend): call browser fetch without an instance receiverTolegen Manassov
  • 2026-09-23 16:35fix(frontend): integrate live chat, uploads and confirmed server cartTolegen Manassov
  • 2026-09-23 16:21feat(frontend): polish ChipAI chat UI and language switcherBrook
  • 2026-09-23 16:07docs: record frontend and backend compatibility auditTolegen Manassov
  • 2026-09-23 16:00feat(backend): complete guarded cart, catalog tools and document acceptance flowsTolegen Manassov
  • 2026-09-23 15:49Add interactive ChipAI mascot and cart demoBrook
  • 2026-09-23 15:35fix(backend): validate catalog data, cart confirmation and specification uploadsTolegen Manassov
  • 2026-09-23 14:43feat: integrate backend AI agent, ekt.kz live client, RAG knowledge base, and PDF parser into mainTolegen Manassov
  • 2026-09-23 14:40feat(frontend): add responsive chat interface with reasoning timeline, cart badge, and quick promptsTolegen Manassov
  • 2026-09-23 14:40Build ekt.kz AI chat widgetBrook
  • 2026-09-23 14:31feat(multimodal): add live PDF specification parser, sample estimate doc, and official jury-compliant READMETolegen Manassov
  • 2026-09-23 14:29Build ekt.kz AI chat widgetBrook
  • 2026-09-23 14:17feat(backend): implement RAG knowledge base, B2B VAT flows, manager escalation, and partner integration docsTolegen Manassov
  • 2026-09-23 13:57chore(agents): synchronize multi-agent topology and codex prompts to frontend branchTolegen Manassov
  • 2026-09-23 13:57feat(agents): deploy multi-agent architecture for Gemini (Antigravity 2.0) and OpenAI CodexTolegen Manassov
  • 2026-09-23 13:38feat(frontend): add responsive chat interface with reasoning timeline, cart badge, and quick promptsTolegen Manassov
  • 2026-09-23 13:38feat(backend): implement live ekt.kz api client, agent tool calling pipeline, and guardrail test suiteTolegen Manassov
  • 2026-09-23 13:29docs: add official case specification and api endpoints for ekt.kzTolegen Manassov
  • 2026-09-23 13:20chore: initialize hackathon workspace with codex config, fastapi skeleton and contractsTolegen Manassov
Структура репозитория (120 файлов)
.agents/agents/README.md
.agents/agents/backend_engineer/agent.md
.agents/agents/ekt_consultant/agent.md
.agents/agents/frontend_engineer/agent.md
.agents/agents/qa_lead/agent.md
.agents/agents/system_architect/agent.md
.agents/protocols/backend-to-frontend.md
.agents/protocols/contract-sync.md
.agents/protocols/jury-verification.md
.agents/rules/guardrails.md
.codex/config.json
.codex/instructions.md
.codex/prompts/backend-ai.prompt.md
.codex/prompts/frontend-ui.prompt.md
.codex/prompts/qa-audit.prompt.md
.dockerignore
.env.example
.gitignore
AGENTS.md
CODEX.md
GEMINI.md
README.md
backend/Dockerfile
backend/README.md
backend/agent/__init__.py
backend/agent/composer.py
backend/agent/contracts.py
backend/agent/router.py
backend/agent/state.py
backend/agent/tool_executor.py
backend/agent_service.py
backend/cart_service.py
backend/dialogue_context.py
backend/ekt_client.py
backend/evals/README.md
backend/evals/__init__.py
backend/evals/cases.py
backend/evals/retrieval-report.json
backend/evals/retrieval.py
backend/evals/run.py
backend/knowledge_base.py
backend/localization.py
backend/main.py
backend/requirements-lock.txt
backend/requirements.txt
backend/retrieval/__init__.py
backend/retrieval/catalog_index.py
backend/retrieval/store.py
backend/scripts/create_sample_spec.py
backend/scripts/dev.py
backend/scripts/doctor.py
backend/scripts/import_catalog.py
backend/scripts/index_knowledge.py
backend/scripts/smoke_live.py
backend/settings.py
backend/spec_parser.py
backend/tests/support.py
backend/tests/test_agent_api.py
backend/tests/test_agent_v3.py
backend/tests/test_cart_changes.py
backend/tests/test_catalog.py
backend/tests/test_catalog_index_v3.py
backend/tests/test_dialogue.py
backend/tests/test_guardrails.py
backend/tests/test_localization_v3.py
backend/tests/test_retrieval_v3.py
backend/tests/test_spec_delimiters.py
backend/tests/test_tools.py
backend/tests/test_uploads.py
compose.yaml
database/knowledge/README.md
database/knowledge/articles.json
docs/agent-rag-roadmap.md
docs/agent-v3-eval-report.json
docs/agent-v3-implementation.md
docs/api-contract.md
docs/architecture.md
docs/docker-setup.md
docs/ekt-integration-guide.md
docs/faq-knowledge-base.md
docs/frontend-backend-audit.md
docs/improvement-plan.md
docs/integration-plan.md
docs/sample_specification.pdf
docs/sample_specification.txt
docs/solution-architecture.md
docs/task-spec.md
frontend/.dockerignore
frontend/.gitignore
frontend/Dockerfile
frontend/README.md
frontend/index.html
frontend/nginx.conf
frontend/package-lock.json
frontend/package.json
frontend/src/chat/api.ts
frontend/src/chat/cart-links.ts
frontend/src/chat/comparison.ts
frontend/src/chat/dom.ts
frontend/src/chat/i18n.ts
frontend/src/chat/localization.ts
frontend/src/chat/products.ts
frontend/src/chat/reasoning.ts
frontend/src/chat/response.ts
frontend/src/chat/storefront.ts
frontend/src/chat/types.ts
frontend/src/components/ChipMascot.css
frontend/src/components/ChipMascot.tsx
frontend/src/gg.md
frontend/src/index.css
frontend/src/main.ts
frontend/src/mountChipMascot.tsx
frontend/src/styles/chat.css
frontend/tests/api.test.mjs
frontend/tests/cart-links.test.mjs
frontend/tests/comparison.test.mjs
frontend/tests/localization.test.mjs
frontend/tests/products.test.mjs
frontend/tsconfig.json
frontend/vite.config.ts
Ветки (3)

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

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

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