docs(support-bot): спека своего ИИ-бота в чате Jivo + протокол обсуждения

Дизайн согласован владельцем 02.07.2026: свой бот через Jivo Bot API,
YandexGPT Lite, база знаний = docs/help/ в репо, кнопка «Показать»
(экскурсии), скорость 2-5 сек, v1 только общие вопросы.
Словарь: +jivo/дживо/gigachat.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Дмитрий
2026-07-02 18:15:18 +03:00
parent 3db1f5924d
commit 4c9ecfbfd5
3 changed files with 211 additions and 0 deletions
+3
View File
@@ -2289,3 +2289,6 @@ noeviction
Сбере
синхрона
golive
jivo
дживо
gigachat
@@ -0,0 +1,142 @@
# Спека: свой ИИ-бот техподдержки в чате JivoSite («Консультант»)
**Дата:** 02.07.2026
**Статус:** дизайн согласован владельцем (куски 1–4 приняты в диалоге 02.07.2026)
**Протокол обсуждения:** `ПРОТОКОЛ-ии-дживосайт.md` (корень репо) — решения 1–8, открытые вопросы О-2/О-3
**Связанные материалы:** `вебмастер-исходники-perplexity/Б3-ии-техподдержка.md` (архитектурное руководство RAG-поддержки), спека G7-A (`2026-06-19-g7a-client-support-design.md`), спека G7-B (`2026-06-19-g7b-impersonation-door-design.md`), мониторинг внешних сервисов (`2026-07-02-external-services-monitoring-design.md`)
---
## 1. Цель
Клиент портала пишет в чат (виджет JivoSite в личном кабинете) — наш собственный ИИ-бот
консультирует его по работе портала за 2–5 секунд и, где уместно, прикладывает кнопку
«Показать на портале», запускающую экскурсию с подсветкой полей. Не готовый «ИИ-оператор»
Jivo (12 990 ₽/мес, не видит наших данных и не умеет экскурсий), а свой бот через **Jivo Bot API**:
окошко чата — Jivo, мозги — наш сервер.
**Ключевые решения владельца** (протокол, решения 1–8):
свой бот · внутри чата Jivo (Bot API) · v1 отвечает только на общие вопросы · сканирование
сайта Jivo не используем · ответ + кнопка «Показать» (экскурсии) · база знаний = клиентская
инструкция в репо, обновляется с каждой фичей · скорость 2–5 сек — жёсткое требование ·
мозг — YandexGPT Lite.
## 2. Архитектура (v1)
```
Клиент → виджет Jivo (уже встроен, JivoWidget.vue)
→ серверы Jivo → POST https://liderra.ru/api/webhook/jivo/<секрет> [CLIENT_MESSAGE]
→ JivoBotController (ack ≤3 сек) → ProcessJivoMessageJob (очередь, приоритетная)
→ KnowledgeSearch (pgvector, top 35 фрагментов docs/help/)
→ YandexGptClient (Lite, строгий системный промпт)
→ BOT_MESSAGE обратно в Jivo (текст + при наличии — ссылка-экскурсия)
→ журнал bot_dialogs
Fallback: нет ответа за ~10 сек / стоп-тема / просьба «человека» → INVITE_AGENT (живой оператор).
Jivo сам зовёт оператора, если BOT_MESSAGE не пришёл за 15 сек — двойная страховка.
```
Компоненты:
| Компонент | Назначение |
|---|---|
| `JivoBotController` | Приём webhook от Jivo: секрет в URL + валидация payload; мгновенный ack; постановка job |
| `ProcessJivoMessageJob` | Оркестратор ответа: поиск → LLM → отправка → журнал. Таймаут-бюджет ~10 сек |
| `KnowledgeSearch` | Семантический поиск по `knowledge_chunks` (pgvector, cosine), top-N фрагментов |
| `YandexGptClient` | Вызов YandexGPT Lite (Yandex Cloud Foundation Models API), таймаут 8 сек |
| `RebuildKnowledgeBaseJob` | Ночная джоба: перечитать `docs/help/*.md`, порезать на фрагменты, обновить эмбеддинги. + artisan-команда для ручного запуска |
| `JivoBotLivenessProbe`-расширение | Метрики бота на плитке «Внешние сервисы»: жив, p95 времени ответа, % эскалаций |
## 3. База знаний
- **Источник — `docs/help/*.md`**: статьи простым языком по темам (что такое проект, тарифы
и списания, пополнение, смена источника, почему проект остановился, уведомления…).
Пишет Claude, вычитывает владелец. Эти же статьи — будущий раздел «Справка» для людей.
- **Frontmatter статьи**: `title`, `tour` (имя экскурсии из каталога, опционально), `topics`.
- **Индексация**: ночная `RebuildKnowledgeBaseJob` — режет статьи на фрагменты (~500 токенов),
считает эмбеддинги (Yandex Embeddings API), пишет в `knowledge_chunks`. Изменилась статья —
ночью бот знает новое; срочно — ручная команда.
- **Правило против устаревания** (норматив): **фича не готова, пока не обновлена клиентская
инструкция** — добавить в CLAUDE.md через плагин claude-md-management при реализации.
- **Чего в базе нет никогда**: данных клиентов, внутренней кухни (поставщик, секреты, админ-процессы),
всего, что нельзя показать любому клиенту.
## 4. Ответ и «Показать на портале» (экскурсии)
- Ответ = текст (только по найденным фрагментам) + если у статьи-источника задана `tour`
ссылка-кнопка `https://liderra.ru/?tour=<имя>`.
- **Каталог экскурсий** в портале: реестр сценариев (имя → шаги: экран, селектор элемента,
текст подсказки). Переиспользует механизм WelcomeTour. Первый набор 5–7: `create-project`,
`top-up-balance`, `change-source`, `tariffs`, `notifications`
- Обработчик `?tour=`: клиент вошёл → открыть нужный экран, запустить шаги; не вошёл →
сначала логин, после входа — экскурсия.
- ИИ **не сочиняет шаги** — только выбирает готовую экскурсию из каталога (через frontmatter статьи).
## 5. Безопасность и 152-ФЗ
- Webhook: секрет в URL (по образцу приёма лидов поставщика) + проверка структуры/подписи
payload Jivo; посторонние запросы — 403 без утечки деталей.
- **Изоляция v1**: у бота нет доступа к данным клиентов вообще — job работает через соединение,
видящее только `knowledge_chunks` и `bot_dialogs`. Prompt-injection «покажи чужой баланс»
упирается в отсутствие данных физически.
- Системный промпт: отвечать ТОЛЬКО по контексту; не знаешь — скажи честно и предложи
человека; стоп-темы (личные деньги/данные, обещания скидок, юр-советы) → всегда эскалация.
- Тракт данных целиком в РФ: Jivo (заявляет хранение в РФ) → наш сервер (Yandex Cloud) →
YandexGPT (Yandex Cloud). В политику конфиденциальности добавить упоминание Jivo.
- Журнал `bot_dialogs` — новая таблица (не tenant-scoped в v1: диалоги анонимны до этапа
личных ответов): `id, jivo_chat_id, direction, message, matched_chunks, latency_ms,
escalated, created_at`. Запись в `db/schema.sql` + CHANGELOG по правилам.
## 6. Скорость (жёсткая планка владельца)
- Цель: ответ клиенту 2–5 сек. Бюджет: ack ≤1 c → очередь ≤1 c → поиск ≤0.3 c → LLM ≤3 c →
отправка ≤0.5 c.
- Тест производительности: p95 полного цикла (mock LLM с реальными задержками) ≤5 с;
live-smoke при приёмке.
- Не успели за ~10 с → сами шлём INVITE_AGENT; Jivo добивает страховкой на 15 с.
## 7. Эскалация на человека
- Триггеры: просьба клиента («человека», «оператора»), стоп-тема, низкая уверенность
(пустой/слабый поиск), таймаут.
- INVITE_AGENT → диалог у живого оператора (владелец, приложение Jivo на телефоне).
- Существующий канал G7-A (форма «Помощь» + почта) остаётся без изменений — запасной путь.
## 8. Мониторинг
- Плитка «Внешние сервисы» (выкачена 02.07.2026): статус бота, p95 latency,
доля эскалаций, диалогов/день. Красный при недоступности YandexGPT или росте таймаутов.
- Алерты — по образцу email edge-trigger внешних сервисов.
## 9. Деньги
- Jivo корпоративный (Bot API): ~3 142 ₽/мес за оператора. Подключение бота — письмом
в info@jivosite.com (адрес endpoint + токен) — О-2 протокола.
- YandexGPT Lite + эмбеддинги: при сотнях диалогов/мес — порядка 100–300 ₽/мес.
- Итого ~3.5 тыс. ₽/мес против 12 990 ₽/мес за готовый ИИ-оператор Jivo (который без экскурсий).
## 10. Этапы
1. **Разведка (без кода):** включить бесплатный чат Jivo (JIVO_WIDGET_ID — О-3, разрешение
владельца), владелец отвечает сам; копим реальные вопросы. Параллельно — статьи `docs/help/`.
2. **Бот-консультант (ядро v1):** webhook + job + поиск + YandexGPT + эскалация + журнал +
тесты скорости. TDD, worktree, не прод.
3. **Экскурсии:** каталог + `?tour=` + кнопка в ответах + 5–7 сценариев.
4. **Позже, отдельным решением владельца:** личные ответы через машинный ключ G7-B (`lpimp_`),
отдельная спека (сцепка «кто в чате = какой клиент», tenant-изоляция, RLS).
## 11. Вне рамок v1
- Личные данные в ответах (этап 4, отдельная спека).
- Каналы Telegram/WhatsApp через Jivo (возможны позже — Bot API канал-агностичен).
- Автоматический показ UI без клика (решение владельца: сначала кнопка).
- Собственное чат-окошко вместо Jivo (отклонено владельцем 02.07.2026 в пользу Jivo).
## 12. Критерии приёмки v1 (этапы 2–3)
- Живой вопрос «что такое проект?» в чате портала → осмысленный ответ по инструкции
≤5 сек + рабочая кнопка «Показать» → экскурсия подсвечивает форму создания проекта.
- Вопрос «какой у меня баланс?» → вежливая передача живому оператору (INVITE_AGENT приходит).
- Вопрос не из инструкции («какая погода») → честное «не знаю, позвать человека?».
- Обновление статьи + ночная джоба → бот отвечает по-новому.
- Pest: контроллер (секрет/403), job (бюджет времени, эскалации, журнал), поиск (релевантность
на фикстурах), клиент YandexGPT (таймаут/ретрай); Vitest: обработчик `?tour=`, каталог экскурсий.
@@ -0,0 +1,66 @@
# ПРОТОКОЛ — ИИ-бот техподдержки в чате ДживоСайт
**Заведён:** 02.07.2026 по указанию владельца. Здесь фиксируется всё, что обсуждаем и решаем
по теме «свой ИИ-бот, который консультирует клиентов портала». Обновляется по ходу обсуждений.
---
## 1. Что решено (по состоянию на 02.07.2026)
| № | Решение | Кто/когда |
|---|---|---|
| 1 | Делаем **своего бота**, а не готовый «ИИ-оператор» Jivo (12 990 ₽/мес). Готовый умеет консультировать только по загруженной базе знаний и не видит данных клиента; свой — полностью наш и растёт вместе с порталом. | Владелец, 02.07.2026 |
| 2 | Бот живёт **внутри чата Jivo** (механизм Bot API): окошко чата — Jivo, мозги — наш сервер. Клиент пишет в чат → Jivo пересылает нам → наш бот отвечает. | Владелец, 02.07.2026 |
| 3 | Первая версия отвечает на **общие вопросы** (как работает портал, тарифы, как создать проект…). Личные («какой у меня баланс») — вторым этапом; пока такие вопросы бот передаёт живому человеку. | Владелец, 02.07.2026 |
| 4 | **Сканирование сайта роботом Jivo не используем** — базу знаний собираем только из своих проверенных материалов. | Владелец, 02.07.2026 |
| 5 | Бот не только отвечает словами, но и **показывает на портале**: к ответу прикладывается кнопка «Показать» — клик открывает нужную форму и запускает экскурсию с подсветкой полей (механизм экскурсий в портале уже есть — WelcomeTour). Вариант «бот сам двигает экран без клика» — возможное развитие потом. | Владелец, 02.07.2026 |
| 6 | **Обучение бота**: база знаний = клиентская инструкция, которая живёт в проекте рядом с кодом. Правило: сделали новую функцию — обновили инструкцию (обязанность Claude при каждой фиче). Бот перечитывает инструкцию автоматически (ночная джоба) — не отстаёт от портала. | Согласовано, 02.07.2026 |
| 7 | **Скорость — жёсткое требование владельца**: никаких «думает 30–40 секунд». Целевой ответ — 2–5 секунд. Чат Jivo и сам обрывает бота на 15 секундах (передаёт человеку) — строим быстрого по определению. | Владелец, 02.07.2026 |
| 8 | **Мозг бота — YandexGPT Lite** (Яндекс Облако): ответ ~1–3 сек, данные в РФ, один счёт с нашим облаком, копейки за ответ. | Владелец, 02.07.2026 |
## 2. Открытые вопросы (не закрыты, ждут решения владельца)
| № | Вопрос | Варианты / заметки |
|---|---|---|
| О-1 | ~~Какой ИИ-«мозг»~~ | **ЗАКРЫТ 02.07.2026** → решение 8: YandexGPT Lite. |
| О-2 | Тариф Jivo | Bot API официально доступен на корпоративном тарифе (~3 142 ₽/мес за оператора). Подтвердить готовность платить, когда дойдём до подключения. Подключение своего бота — по письму в поддержку Jivo (info@jivosite.com), автоматической кнопки нет. |
| О-3 | Когда включаем бесплатный чат Jivo (без бота, для разведки вопросов) | Код в портале готов, нужен только ключ виджета (JIVO_WIDGET_ID). Включение на боевом — только с разрешения владельца. |
## 3. Что уже есть в портале (задел, ничего строить заново не надо)
- **Виджет Jivo встроен** в личный кабинет (компонент JivoWidget, июнь 2026, G7-A). Спит, пока не задан ключ.
- **Раздел «Помощь»**: форма заявки в поддержку + почта (support_requests) — останется запасным каналом.
- **Машинный ключ ИИ** (`lpimp_…`, дверь G7-B): готовый безопасный способ для ИИ смотреть данные конкретного клиента — пригодится на этапе 2 (личные ответы).
- **Механизм экскурсий** (WelcomeTour): подсветка элементов с пояснениями — переиспользуем для кнопки «Показать».
- **Плитка «Внешние сервисы»** в админке уже следит, жив ли Jivo (проба JivoLivenessProbe).
- **Руководство по постройке** своего ИИ-агента поддержки: `вебмастер-исходники-perplexity/Б3-ии-техподдержка.md` (архитектура: база знаний + поиск + ответ, борьба с выдумками, эскалация, метрики).
## 4. Главные факты про Jivo (исследование 02.07.2026)
- **Чат-платформа**: виджет на сайте, каналы Telegram/VK/WhatsApp/почта, приложение оператора на телефоне. Бесплатно до 2 операторов (без автоприглашений и WhatsApp); профессиональный ~1 342 ₽/мес, корпоративный ~3 142 ₽/мес за оператора.
- **Готовый «ИИ-оператор» Jivo**: 12 990 ₽/мес, 2 000 диалогов, проба 7 дней. База знаний: файлы (до 5×30 МБ), вопрос-ответ пары (до 50), текст «о компании». Отвечает только по базе, личных данных клиента не видит, при незнании передаёт человеку. Модель — российская (у «ИИ-ассистента» официально GigaChat), данные в РФ.
- **Bot API (наш путь)**: Jivo шлёт сообщение клиента на наш адрес → у нас 3 сек на «принял» и ~15 сек на ответ, иначе диалог уходит живому оператору. Ответ бота: текст или «позови человека». Доступен на корпоративном тарифе, подключение по письму.
- **152-ФЗ**: Jivo заявляет хранение данных в РФ. В нашу политику конфиденциальности при включении чата добавить упоминание Jivo.
## 5. Целевая картинка (как это будет работать)
1. Клиент в личном кабинете нажимает кнопку чата (Jivo) и пишет: «а что такое проект?»
2. Jivo мгновенно пересылает вопрос нашему серверу.
3. Наш бот находит нужный кусок в клиентской инструкции и за 2–5 секунд отвечает: «Проект — это… Создаётся для…» + кнопка **«Показать на портале»**.
4. Клик по кнопке → портал открывает форму создания проекта и по шагам подсвечивает поля: «здесь название… здесь источник… здесь лимит».
5. Если бот не знает ответа или клиент просит человека — диалог передаётся владельцу (в приложение оператора Jivo на телефон).
6. Каждый диалог сохраняется у нас — по ним пополняем инструкцию и видим, чего клиентам не хватает.
## 6. Следующие шаги
- [x] Закрыть О-1 (мозг бота) — YandexGPT Lite (решение 8).
- [x] Согласовать дизайн целиком (куски 1–4 приняты владельцем 02.07.2026) → спека
`docs/superpowers/specs/2026-07-02-jivo-ai-support-bot-design.md`.
- [ ] Ревью спеки владельцем + коммит протокола и спеки.
- [ ] План реализации по шагам (writing-plans) → стройка по TDD в worktree, НЕ на проде.
- [ ] Отдельно решить О-3 — включать ли бесплатный чат уже сейчас для разведки вопросов.
- [ ] О-2 — подтвердить корпоративный тариф Jivo перед подключением бота.
---
*Журнал обновлений: 02.07.2026 — протокол заведён, зафиксированы решения 1–7, исследование Jivo, открытые вопросы О-1…О-3. Позже в тот же день: решение 8 (YandexGPT Lite), дизайн согласован кусками 1–4, спека записана.*