Files
calls24_v2_ideas/ARCHITECTURE.md
T

7.8 KiB
Raw Blame History

🏗️ Архитектура calls24

Система: от звонка до звонка

┌─────────────────────────────────────────────────────────────────────┐
│                        КЛИЕНТ (бизнес)                              │
│   Звонки операторов (WAV/MP3)  →  SIP-линии  →  CRM (Bitrix24)     │
└────────┬──────────────────────────────┬──────────────────┬──────────┘
         │                              │                  │
         ▼                              ▼                  ▼
┌─────────────────────┐  ┌────────────────────┐  ┌──────────────────┐
│  calls24-аналитика   │  │  SIP-коннектор     │  │  calls24-робот   │
│  (FastAPI + LLM)    │  │  (WebSIP Proxy)    │  │  (Yandex Realtime│
│                     │  │                    │  │   WebSocket)      │
│  • STT (распозн.)  │  │  SIP ←→ WebSocket  │  │                  │
│  • LLM-анализ      │  │  RTP ↔ Media       │  │  • STT→LLM→TTS   │
│  • Паттерны продаж  │  │  (аудио микшир.)   │  │  (задержка <1с)  │
│  • Рекомендации    │  │                    │  │  • Brand Voice   │
└────────┬────────────┘  └────────┬───────────┘  └────────┬─────────┘
         │                        │                        │
         ▼                        │                        │
┌─────────────────────────────────────────────────────────────────────┐
│                    calls24-ядро (FastAPI)                           │
│                                                                     │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐  ┌──────────────────┐   │
│  │ PostgreSQL│  │  Qdrant  │  │   Redis  │  │  Yandex AI API  │   │
│  │(звонки,  │  │(векторы  │  │(очереди, │  │ (speech-realtime│   │
│  │ скрипты) │  │ звонков) │  │ кэш)     │  │  -250923)       │   │
│  └──────────┘  └──────────┘  └──────────┘  └──────────────────┘   │
│                                                                     │
│  ┌──────────────────────────────────────────────────────────────┐  │
│  │                 Замкнутый цикл обучения                       │  │
│  │                                                              │  │
│  │  Робот звонит → Запись звонка → Анализ → Улучшение скрипта   │  │
│  └──────────────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────────────┘

Компоненты

1. calls24-аналитика (voice-analyzer)

voice-analyzer/
├── main.py           # FastAPI (порт 8460)
├── stt.py            # Yandex STT (locazli) / Yandex Speech
├── analyzer.py       # LLM-анализ звонков (Qwen35B / Yandex GPT)
├── pattern.py        # Выявление паттернов продаж
├── report.py         # Генерация отчёта (HTML/PDF)
└── .env              # API ключи

Функции:

  • Приём аудиофайлов (WAV/MP3, до 100МБ)
  • Распознавание речи (Yandex STT / Whisper)
  • Анализ текста: скрипт, тайминги, возражения, конверсия
  • Сравнение операторов: кто лучше, почему
  • Генерация отчёта: «что нужно исправить»
  • Экспорт паттернов для генерации скрипта

2. calls24-робот (voice-bot)

voice-bot/
├── main.py           # FastAPI (порт 8461)
├── sip_proxy.py      # WebSIP Proxy (SIP ←→ WebSocket)
├── realtime.py       # Yandex Realtime WebSocket client
├── script.py         # Управление скриптом (state machine)
├── memory.py         # Память контекста разговора (Redis)
└── .env

Функции:

  • Приём входящих / исходящие звонки
  • Yandex Realtime API (STT→LLM→TTS в реальном времени)
  • State Machine: приветствие → qualification → предложение → возражения → закрытие
  • Контекстная память (текущий клиент, история, CRM-данные)
  • Запись звонков для последующего анализа

3. calls24-ядро (core)

core/
├── api.py            # Общий API (REST + WebSocket)
├── models.py         # Pydantic модели (Call, Script, Pattern)
├── db.py             # PostgreSQL / Qdrant
├── scheduler.py      # Расписание звонков, напоминания
├── billing.py        # Оплата за лид/бронь
├── integrations.py   # Bitrix24, AmoCRM, 1С
└── auth.py           # Авторизация клиентов

Базы данных

PostgreSQL

calls (id, customer_id, type, recording_url, status, created_at)
call_transcripts (call_id, role, text, start_time, end_time)
call_analysis (call_id, score, script_issues, objections, conversion)
scripts (id, name, version, state_machine_json, created_at)
patterns (id, script_id, type, text, win_rate, context)
customers (id, name, company, industry, phone, created_at)
leads (id, customer_id, call_id, status, revenue, created_at)

Qdrant (векторный поиск)

collection: call_embeddings
  - call_id: string
  - embedding: float[768]  (text-embedding-3-large)
  - payload: {customer_id, type, score, script_issues}

collection: script_patterns
  - pattern_id: string
  - embedding: float[768]
  - payload: {type, text, win_rate, context}

Поток данных

Анализ звонка

Аудиофайл → STT → Текст → LLM-анализ → Паттерны → Отчёт
   ↓                                           ↓
 запись в PG                          скрипт для робота

Звонки робота

SIP-линия → WebSIP → WebSocket → Yandex Realtime
                                    ↓
                            STT → LLM → TTS → Аудио
                                    ↓
                          Context Memory (Redis)
                                    ↓
                         Запись → Анализ → Улучшение