Шаг 5 из 7

Шаг 5. Первый запуск

Запустим всё локально. После этого шага у вас на машине будет работающий AI-продавец, с которым можно поговорить через WebSocket или Telegram.

1. Проверьте, что Docker-сервисы поднялись

docker compose ps

Должны быть две строки healthy — Postgres и Redis. Если нет — поднимите:

docker compose up -d postgres redis

2. Запустите сервер

Из корня проекта:

poetry run uvicorn app.api.main:app --reload --port 8070

В логах вы увидите примерно это:

INFO  Initializing database...
INFO  Loading niches and chat mappings from DB...
INFO  Static MD bulk-load: wrote _core=42, etl-ua=8
INFO  Building sales agent...
INFO  Enabled channels: web (/ws/{user_id}), telegram (/webhook/telegram)
INFO  Heartbeat loop scheduled
INFO  Digest loop scheduled
INFO  Application startup complete.
INFO  Uvicorn running on http://0.0.0.0:8070

Если видите этот вывод — агент работает.

3. Проверьте healthcheck

В новом терминале (старый не закрывайте):

curl http://localhost:8070/health

Ответ:

{"status":"ok"}

4. Поговорите с агентом

Через WebSocket (web-канал)

Самый быстрый способ — через утилиту websocat:

# macOS
brew install websocat

# Подключение
websocat ws://localhost:8070/ws/test-user-1

После подключения отправьте:

{"text": "Привет"}

Anna ответит за 2–4 секунды.

Альтернатива без websocat

Можно использовать piesocket.com/websocket-tester — браузерный WS-клиент. URL: ws://localhost:8070/ws/test-user-1.

Через Telegram

Если в .env заполнен TELEGRAM_BOT_TOKEN — найдите бота по username (тот, что выдал BotFather) и напишите /start.

Anna представится, начнёт диалог со стадии 1 (знакомство) и будет вести по воронке.

5. Загрузите тестовый каталог

Чтобы Anna могла отвечать на вопросы про конкретные товары — нужно залить каталог в RAG. В репо есть демо-каталог:

poetry run python scripts/ingest_catalog.py scripts/demo_catalog.json

Должен вывести:

Loaded 5 products from scripts/demo_catalog.json
Ingested 5 products into pgvector ✓

Теперь спросите у Anna "сколько стоит ваш товар" — она достанет из каталога и назовёт цену.

6. Прогоните воронку

Чтобы убедиться, что все 7 стадий работают, проведите тестовый диалог:

  1. "Привет" → стадия 1, знакомство
  2. "Я ищу решение для бизнеса" → стадия 2, квалификация
  3. "А что вы предлагаете?" → стадия 3, ценностное предложение
  4. "А под мою задачу подойдёт?" → стадия 4, выявление потребностей
  5. "Сколько стоит?" → стадия 5, презентация (вызов RAG)
  6. "Дорого" → стадия 6, работа с возражениями
  7. "Хорошо, беру" → стадия 7, закрытие

В логах сервера видно переключение стадий:

INFO  Stage analyzer -> 5 (solution_presentation)
INFO  Stage analyzer -> 6 (objection_handling)
INFO  Stage analyzer -> 7 (close)

7. Посмотрите данные в БД

Подключитесь к Postgres и посмотрите, что записалось:

docker compose exec postgres psql -U sales -d sales_agent -c "SELECT id, current_stage, name, phone FROM leads ORDER BY id DESC LIMIT 5;"

А также:

# Все сообщения
docker compose exec postgres psql -U sales -d sales_agent -c "SELECT direction, channel, LEFT(text, 60) FROM message_log ORDER BY id DESC LIMIT 10;"

# История переходов стадий
docker compose exec postgres psql -U sales -d sales_agent -c "SELECT from_stage, to_stage, timestamp FROM lead_stage_events ORDER BY id DESC LIMIT 10;"
Поздравляем

Если вы дочитали досюда и всё работает — у вас на машине крутится production-grade AI-продавец. Дальше — обучаем его под вашу нишу.

Если что-то не так