🏗️ ИИ Декларант — Архитектура

🔍 Общая схема работы

ИИ Декларант — система автоматической классификации товаров по ТН ВЭД ЕАЭС. Работает в 5 этапов: загрузка → скрапинг → обогащение → классификация → валидация.

📄 CSV/Загрузка
SKU товаров
🌐 Kaspi Scraping
Название, описание, спеки
🔎 Web Enrichment
Gemini + Google Search
🧠 Pre-Analysis
Определение групп ТН ВЭД
📚 RAG Search
777K+ чанков
⚡ Stage 1
Кандидаты (4 знака)
🎯 Stage 2
Финальный код (10 зн.)
✅ Результат
Код + обоснование

⚙️ Pipeline классификации (подробно)

1
Загрузка товаров
CSV-файл с SKU загружается в таблицу declarant_products. Или используется встроенный набор товаров. Каждый товар получает статус new.
2
Kaspi Scraping WEB
Для каждого SKU через Scrape.do API парсится страница Kaspi.kz. Извлекается: полное название, описание, характеристики (JSON), категория. Данные сохраняются в declarant_products. Статус → scraped.
3
Web Enrichment AI GOOGLE SEARCH
Gemini с Google Search grounding ищет дополнительную техническую информацию о товаре: материал, функция, ТТХ, производитель, страна. Результат сохраняется в tnved_evidence.
4
Pre-Analysis AI
LLM анализирует товар и определяет 2-3 кандидатных группы ТН ВЭД (2-значные коды). Это сужает область поиска для RAG и Stage 1. Результат: {"material":"...", "function":"...", "candidate_groups":[84,85,90]}
5
RAG Search DATABASE
Гибридный поиск (keyword + vector) по базе из 777K+ чанков. Источники: решения НСИ, Goodscollection, классификатор ТН ВЭД, пояснения, решения ЕЭК, КГД. Топ-12 релевантных чанков передаются в промпт.
6
Stage 1 — Кандидаты AI
LLM на основе товара + RAG + примечаний к группам + правил разграничения выдаёт 3-5 кандидатов (4-значные позиции) с confidence и обоснованием по ОПИ 1-6. Если confidence < 70% — подключается более мощная модель (Pro).
7
Stage 2 — Финальный код AI KEDEN API
Для кандидатов из Stage 1 загружается дерево подсубпозиций из Keden API (ИТТ ЕАЭС) + пояснения из RAG. LLM выбирает точный 10-значный код с полным обоснованием по ОПИ. Валидация: если код не существует в справочнике — автоматический retry с подсказкой доступных кодов.
8
Результат DATABASE
10-значный код ТН ВЭД, confidence (0-100%), подробное обоснование. Если confidence ≥ 60% → статус done, иначе → review (требует ручной проверки). Затраты логируются в usage_log.

📚 База знаний (RAG)

Все источники разбиты на чанки по ~1000 символов с overlap, хранятся в MariaDB с FULLTEXT-индексом и OpenAI-эмбеддингами (text-embedding-3-large, 3072 dims). Гибридный поиск: keyword MATCH + vector cosine similarity + RRF merge.

Загрузка статистики...

🗄️ Источники данных

ИсточникТипОписаниеОбновление
НСИ ЕАЭСAPIПредварительные решения по классификации (nsi.eaeunion.org)Snapshot
GoodscollectionODataРеестр товаров прошедших таможню (90K+ записей)Snapshot
ТН ВЭД 2026Excel/JSON13 279 кодов (10-зн.) + ставки пошлин из TWSЕжегодно
Пояснения к ТН ВЭДPDF+OCR217 PDF — пояснения по группам 01-97Snapshot
Решения ЕЭКPDF+OCR9 161 PDF + OCR документов ЕЭКSnapshot
Решения о классификацииJSON+PDF246 решений ЕЭК по спорной классификацииSnapshot
Нетарифные меры (ЕЭК №30)PDF+OCR67 PDF — запреты, квоты, лицензированиеSnapshot
Юр. база adilet.zan.kzPDF+OCRТаможенный, налоговый кодексы, законыSnapshot
Техрегламенты ЕАЭСJSON47 ТР ТС / ТР ЕАЭСSnapshot
Keden API (КГД)RESTДерево ИТТ ЕАЭС в реальном времениLive
Kaspi.kzScrapingХарактеристики товаров через Scrape.doPer request
Google SearchGroundingДополнительная техинфо через GeminiPer request

🗃️ Схема базы данных

declarant_products
sku VARCHAR(50) PK
product, category, brand
kaspi_name, kaspi_description
kaspi_specs LONGTEXT
tnved_code VARCHAR(20)
tnved_confidence INT
tnved_reason LONGTEXT
tnved_evidence LONGTEXT
status, cost_usd, batch_id
rag_chunks
id INT PK
source_type VARCHAR(50)
source_doc VARCHAR(500)
chunk_text MEDIUMTEXT
embedding LONGBLOB (3072d)
embedding_model VARCHAR(100)
FULLTEXT INDEX on chunk_text
usage_log
id INT PK
product_sku BIGINT
sku_text VARCHAR(255)
model VARCHAR(255)
tokens_input, tokens_output
cost_usd DECIMAL(10,7)
request_source VARCHAR(50)
showcase_goodscollection
id INT PK
code VARCHAR(20)
product_name TEXT
country, manufacturer
90 521 записей
eaeu_conformity_cache
doc_id VARCHAR(255) PK
doc_status, tr_codes
commodity_codes TEXT
model_price_catalog
model VARCHAR(255) PK
input_per_million DECIMAL
output_per_million DECIMAL

🛠️ Технологический стек

КомпонентТехнологияДетали
СерверNode.js + ExpressПорт 5001, OFFLINE_ONLY=true
БДMariaDBshowcase_db, utf8mb4
AI МоделиGoogle Geminigemini-3-flash-preview (основная), gemini-3-pro-preview (fallback)
ЭмбеддингиOpenAItext-embedding-3-large, 3072 dims, ~197K чанков
RAGHybrid SearchFULLTEXT keyword + vector cosine + RRF merge
ScrapingScrape.doПрокси для парсинга Kaspi.kz
ИТТ APIKeden (КГД)Дерево ТН ВЭД + ставки в реальном времени
OCRPython (pdf2image + pytesseract)Для PDF → текст
OSUbuntu 22.04Node.js v25, systemd

🎯 Бенчмарк

Загрузка...

📋 Статусы товаров

СтатусОписаниеСледующий шаг
newТовар загружен, нет данных Kaspi→ Scraping
scrapingИдёт парсинг Kaspi.kzЖдать
scrapedДанные Kaspi получены→ Classify
classifyingИдёт классификация (AI pipeline)Ждать
doneКод подобран, confidence ≥ 60%Готово ✅
reviewКод подобран, confidence < 60%Ручная проверка
errorОшибка на любом этапеПовторить
error_scrapeОшибка при парсинге KaspiПовторить scraping
batch_pendingВ очереди батч-обработкиЖдать