AI-ассистент менеджера по продажам. Десктопное приложение на Svelte 4 + Vite 5 + Electron, работает с двумя бэкендами: Sales Agent (подготовка к встрече) и DialogScribe (распознавание речи + LLM-аналитика).
Три экрана — подготовка к встрече, сопровождение звонка в реальном времени, итоги после встречи — каждый управляется своим AI-агентом.
┌─────────────────────────────────────────────────────┐
│ Electron Shell │
│ WASAPI Loopback (системный звук) + WASAPI Mic │
├─────────────────────────────────────────────────────┤
│ Svelte 4 + Vite 5 (SPA) │
│ │
│ Orchestrator / Router │
│ ├── Prep Agent → Sales Agent API (:8900) │
│ ├── Live Advisor → DialogScribe WS (:7860) │
│ └── Post-Meeting → DialogScribe API (:7860) │
├─────────────────────────────────────────────────────┤
│ Sales Agent API │ DialogScribe API │
│ (FastAPI, Python) │ (FastAPI, Python) │
│ ├── Mock CRM (JSON) │ ├── GigaAM ASR │
│ ├── OpenSearch (JSON) │ │ (LiteLLM proxy) │
│ ├── DuckDuckGo Search │ ├── Pyannote диариз. │
│ ├── СБАР (по ИНН) │ ├── LLM-аналитика │
│ └── GigaChat (LLM) │ └── SQLite + JWT auth │
└─────────────────────────────────────────────────────┘
/api/live-hints/ws)transcribe_file → параллельные LLM-вызовы → save_meetingPython FastAPI сервис для сбора карточек клиентов. Работает без Docker — использует JSON-файлы вместо реальных OpenSearch/CRM.
Репозиторий: s-alyona-a/sales-agent
| Эндпоинт | Назначение |
|---|---|
GET /health |
Проверка здоровья |
GET /api/meetings/today |
Встречи на сегодня (mock) |
POST /api/agent/collect-card |
Полный сбор с LLM-анализом |
POST /api/agent/collect-direct |
Быстрый сбор без LLM |
GET /api/cards?companyName=... |
Загрузка сохранённой карточки |
DELETE /api/cards?companyName=... |
Удаление карточки |
Vite проксирует /agent-api/* → localhost:8900.
FastAPI сервис распознавания речи + LLM-аналитика. ASR через GigaAM (LiteLLM proxy), диаризация через pyannote (GPU).
Репозиторий: Timik232/DialogScribe
| Эндпоинт | Компонент | Назначение |
|---|---|---|
GET /health |
AgentStatusBar |
Polling здоровья (каждые 30 сек) |
POST /api/auth/login |
api.js |
Авто-логин → JWT |
WS /api/live-hints/ws |
LiveAdvisor |
Аудио → транскрипт + подсказки |
POST /api/transcribe |
PostMeeting |
Загрузка аудио → транскрипт |
POST /api/summary |
PostMeeting |
Генерация резюме |
POST /api/insights |
PostMeeting |
Извлечение action items |
Vite проксирует /api/*, /health, /v1/* → localhost:7860.
# 1. Склонировать sales-agent рядом с copilot-sales
git clone https://github.com/s-alyona-a/sales-agent ../sales-agent
cd ../sales-agent
python -m venv venv
venv\Scripts\pip install -r requirements.txt
# Создать .env с GIGACHAT_API_KEY (опционально, для LLM-анализа)
# 2. Вернуться в copilot-sales
cd ../copilot-sales
npm install
# 3. Запуск (Vite + Electron одной командой)
npm run electron:dev
# Electron автозапускает sales-agent через venv
npm install
npm run dev
# → http://localhost:5173
# Sales Agent API запускать отдельно:
cd ../sales-agent
venv\Scripts\python api_server.py --debug
# Склонировать DialogScribe
git clone https://github.com/Timik232/DialogScribe ../DialogScribe
# Заполнить ключи в docker-compose.fullstack.yaml
docker compose -f docker-compose.fullstack.yaml up --build
# → http://localhost:5173 (nginx проксирует API)
npm run electron:build
# → release/
src/
├── main.js
├── App.svelte # Корневой shell + роутер видов
├── lib/
│ ├── api.js # DialogScribe API клиент (JWT, авто-логин, retry)
│ ├── agentApi.js # Sales Agent API клиент (сбор карточек, встречи)
│ └── caldav.js # CalDAV-интеграция для календаря
└── components/
├── Sidebar.svelte # Навигация: Сегодня / Подготовка / В эфире / Итоги
├── AgentStatusBar.svelte # Статусы агентов + health Sales Agent и DialogScribe
├── MeetingList.svelte # Список встреч (Mock / API / CalDAV) + досье
├── ClientDossier.svelte # Карточка клиента: CRM, OpenSearch, новости, продукты
├── ProductCard.svelte # Карточка продукта из каталога
├── MeetingPrep.svelte # Страница подготовки к встрече
├── LiveAdvisor.svelte # Транскрипт + подсказки в реальном времени
├── PostMeeting.svelte # Загрузка аудио → резюме, action items, коучинг
└── Toast.svelte # Уведомления
electron/
├── main.cjs # Electron main process, автозапуск Sales Agent
├── preload.cjs # Context bridge (IPC для аудио)
├── wasapi_loopback.cpp / .exe # Нативный захват системного звука (WASAPI)
└── wasapi_mic.cpp / .exe # Нативный захват микрофона (WASAPI)
| Слой | Технология |
|---|---|
| Фреймворк | Svelte 4 |
| Сборка | Vite 5 |
| Десктоп | Electron |
| Аудио | WASAPI Loopback + Mic (нативный C++) |
| Prep Agent бэкенд | Sales Agent (FastAPI + GigaChat) |
| ASR/LLM бэкенд | DialogScribe (FastAPI + GigaAM + LLM) |
| Стили | Scoped CSS, тёмная тема, без CSS-фреймворков |
| Шрифт | Inter (Google Fonts) |
| Состояние | Svelte stores + component props |