Кейс: маршрутизация и автоответ на ~200 000 тикетов саппорта в сутки со спайком до 20 000 за 10 минут при инцидентах, p95 ≤ 500 мс на sync-пути, асинхронная генерация ответа, ручная проверка рискованных категорий, корректная деградация. Репозиторий — дизайн решения плюс минимальный PoC, показывающий horizontal ветви пайплайна и логирование решений.
Требования: Python 3.10+. Работает офлайн, никаких весов не скачивает, никуда не ходит по сети.
make install
make demo
make test
make install создаёт локальный .venv в папке проекта. make demo
прогоняет data/tickets_sample.jsonl через полный pipeline, печатает
человекочитаемый отчёт и пишет poc/out/decisions.jsonl. make test
запускает smoke- и injection-тесты.
Ожидаемый результат демо (16 тикетов): auto=1, suggest=4, human=11.
Auto достаётся password_reset из allowlist. injection, sensitive PII,
legal_threat, health — все в human. Один инцидент-кластер из трёх
payment_failed-тикетов детектируется и подключается к inc_payment_failed_001.
Флаг LLM_MOCK_DOWN=1 симулирует падение LLM: make demo переключает
черновики в template-mode, поле llm_available=false пишется в лог.
{"ticket_id":"t_001","timestamp":"2026-08-04T19:03:25Z","channel":"chat",
"predicted_category":"order_cancel","score":0.3364,
"risk":{"pii_types":[],"denylist":[],"injection":false},
"retrieved_ids":["kb_001","kb_009","kb_003"],
"decision":"suggest","reasons":["conf>=0.32"],"incident_id":null,
"llm_used":true,"llm_available":true,
"model_version":"clf_v0.1_tfidf_knn","prompt_version":"prompt_v0.1_mock",
"threshold_version":"th_v1"}Схема — как в poc/log.py. По записи восстанавливается версия модели,
промпта и порогов на момент решения; retrieved_ids ведут к конкретным
статьям KB.
| PoC | Целевое решение |
|---|---|
| TF-IDF char-ngram + nearest neighbor по KB | Калиброванная LogReg на разметке (~2k tickets), пороги через precision@coverage |
| Detекция injection на 7 regex | Regex + отдельный ML-детектор на adversarial eval-set после первых недель прода |
| Мок-LLM с шаблонным черновиком | Внешний provider (mid-tier) или on-prem инференс, structured JSON output |
| Retrieval: pandas + sklearn на 13 статьях | pgvector hnsw на KB + resolved-корпусе, nightly rebuild, e5-base эмбеддер |
| Incident cluster на скользящем окне и пороге 0.42 | Стриминговый cluster-detector на потоке эмбеддингов с центроидами |
| Один decision log в JSONL | Append-only PG-таблица с триггером-запретом на UPDATE/DELETE, 12 мес retention |
docs/architecture.md— sync и async пути, storage, очередь, fallback- матрица, sequence-диаграмма, обоснование pipeline вместо агента.docs/ml.md— правила, baseline, retrieval, LLM-границы, разметка, метрики, evals, regression gate.docs/monitoring.md— SLIs, алерты, benchmark-набор, токен-экономика, бюджетная деградация.docs/risks-and-ops.md— highload, приватность, prompt injection, аудит, что за скоупом.docs/product.md— value propositions, бэклог, план раскатки, три сценария эффекта, дизайн проверки гипотез.AI_USAGE.md,WORKLOG.md,SELF_REVIEW.md— процесс и рефлексия.