Перейти к содержанию

Обзор архитектуры

Архитектура (высокоуровневая)

graph TB
    subgraph clients["🌐 Каналы входа"]
        W["Виджет<br/>(Preact, WebSocket)"]
        TG["Telegram-бот<br/>(Go)"]
    end

    subgraph realtime["⚡ Real-time слой"]
        CS["Chat Service<br/>WebSocket, буферизация 5 сек"]
        NATS["NATS<br/>ai.process / ai.response"]
    end

    subgraph ai["🧠 AI Core"]
        AIS["AI Service"]
        RAG["RAG Pipeline<br/>Pinned + Hybrid Search + Re-ranking"]
        LLM["RouterAI<br/>GPT-4.1 · Claude · Gemini · YandexGPT"]
        AE["Action Engine<br/>15+ команд на оборудовании"]
        IC["Incident Manager<br/>Создание, SLA, кластеризация"]
    end

    subgraph data["💾 Данные"]
        PG[("PostgreSQL<br/>+ pgvector")]
        REDIS[("Redis Stack<br/>Semantic Cache")]
        MINIO[("MinIO<br/>Файлы")]
    end

    subgraph dashboard["📊 Дашборд"]
        DASH["Next.js<br/>Сводка · Обращения · Графики"]
        TRAIN["AI-тренер<br/>Очередь · KB Editor · Дебаггер"]
    end

    W --> CS
    TG --> CS
    CS --> NATS
    NATS --> AIS
    AIS --> RAG
    AIS --> AE
    AIS --> IC
    RAG --> PG
    RAG --> REDIS
    RAG --> LLM
    AE -->|"GraphQL, GIS,<br/>Mobile API"| EXT["Внешние<br/>системы"]
    DASH --> AIS
    TRAIN --> AIS
    AIS --> PG
    AIS --> MINIO

    style clients fill:#e0e7ff,stroke:#6366f1,stroke-width:2px
    style realtime fill:#fef3c7,stroke:#f59e0b,stroke-width:2px
    style ai fill:#f0fdf4,stroke:#22c55e,stroke-width:2px
    style data fill:#fce7f3,stroke:#ec4899,stroke-width:2px
    style dashboard fill:#ede9fe,stroke:#8b5cf6,stroke-width:2px

Сущности и их связи

erDiagram
    Contact ||--o{ Conversation : "создаёт"
    Conversation ||--o{ Message : "содержит"
    Conversation ||--o| Incident : "может создать"
    Incident }o--|| Cluster : "группируется в"
    Incident ||--o| Ticket : "может эскалироваться"
  • Contact — клиент через все каналы
  • Conversation — каждое обращение. Большинство закрываются AI автоматически (целевой показатель — см. раздел "Метрики успеха")
  • Incident — AI не справился. Маршрутизируется по типу
  • Ticket — формальный трекинг работы. Создаётся из инцидента при необходимости
  • Cluster — группа похожих инцидентов. Вычисляется на лету, не хранится

Стек технологий

Слой Технологии
Backend Go (chi), PostgreSQL + pgvector, Redis, NATS, MinIO
Frontend Next.js, React, TypeScript, Tailwind CSS, Zustand
AI OpenAI (GPT-4.1, Ada v2) — первый провайдер. Абстракция для Claude, Gemini, YandexGPT, self-hosted
Инфраструктура Docker, nginx, GitHub Actions CI/CD, Grafana + Prometheus + Loki

Миграция существующих ассетов

Ассет Текущий формат Куда в Mimir
System prompts (4 шт) Текст в Go, ~6-10K chars каждый system_prompts (4 записи: 2 scope × 2 conditions)
Tech status guidelines Текст, 2 чанка, ~20K chars kb_entries (is_pinned=true, entry_type=rule)
RAG-база жители JSON чанки, ~50K chars, ~100+ чанков kb_qa_pairs + kb_entries
RAG-база партнёры JSON чанки + txt, ~30K chars kb_entries (entry_type=fact)
Команды AI JSON в промпте, 15+ команд actions (Action Engine)