diff --git a/docs/superpowers/2026-07-14-HANDOFF-PROD-DEPLOY-own-chat.md b/docs/superpowers/2026-07-14-HANDOFF-PROD-DEPLOY-own-chat.md new file mode 100644 index 00000000..32d5bf90 --- /dev/null +++ b/docs/superpowers/2026-07-14-HANDOFF-PROD-DEPLOY-own-chat.md @@ -0,0 +1,90 @@ +# СНИМОК: свой чат + ИИ-бот + разборы ВЫКАЧЕНЫ НА БОЕВОЙ (14.07.2026) + +> Заменяет `docs/superpowers/2026-07-13-HANDOFF-own-chat-STATE.md` (там всё то же, но +> со статусом «НЕ на проде»). Мозг бота, правила и три замка — оттуда, они не менялись. + +## 🟢 Статус: ВЫКАЧЕНО НА БОЕВОЙ liderra.ru, работает + +Выкат 14.07.2026 ~11:00 МСК. Владелец дал команду «фиксируй всё… потом прод всё сразу». +Ветка кода `worktree-jivo-bot-core` (HEAD `cb5b2284`), документы `feat/sales-finder`. + +## Что теперь живёт на боевом + +| Что | Проверено живьём | +|---|---| +| 🔴 Фикс склейки конкурентов (ноль в ссылке на справочник больше не признак совпадения) | код на сервере | +| Полный откат склейки (возвращает и источники, и проект) | миграция `2026_07_14_090000` применена | +| Проект на паузе не пишет «Собирает заявки» (серое «Остановлен вами») | тесты + кадры | +| «Канбан»: сумма в шапке колонки (был прочерк) | тесты + кадры | +| Из «Отчётов» убраны машинные слова («retry-failed для owner») | тесты | +| Окошко чата + ИИ-бот на лендинге (гостям) | ✅ открывается само, бот отвечает | +| Окошко чата в кабинете (личные ответы клиента) | ⏳ **вживую не проверено** — нужен вход клиентом | +| Страница «Как это работает» + 20 разборов, 127 кадров | ✅ 20 тем, кадры открываются, 0 ошибок | +| Ссылки бота на разборы | ✅ 3 из 3 (проект / баланс / канбан) | + +## Как это устроено на боевом (важное) + +- **Миграции (5 шт.)** применены ролью `crm_migrator`. + 🔴 **Пароли в `/home/ubuntu/liderra-secrets.txt` — СТАРЫЕ** (от базы, которая была на VM + до переезда в облако 26.06). Настоящие — в **Yandex Lockbox**: + - секрет `e6qeooj45vqtn2fju58r` (`connection-a59ccntnhhik6s16918i`) = пароль **crm_migrator**; + - секрет `e6q8h11b0ltps6f6ofrl` (`connection-a592v3cg35tu6kjfgh0j`) = **crm_supplier_worker**. + Ключ `postgresql_password`. Секрет привязан к пользователю по **connection id** + (`yc managed-postgresql user list --cluster-id c9q2cvtjpq3hgq6l0r96`). + 🔑 Кэш настроек на бою **игнорирует переменные окружения** → перед миграцией + `config:clear`, миграция через `sudo -u www-data env DB_USERNAME=crm_migrator DB_PASSWORD=…`, + после — `sudo -u www-data php artisan config:cache` (квирк 107). +- **GRANT'ы** на новые таблицы `knowledge_chunks` / `bot_dialogs` выданы `crm_app_user` вручную + (роли `crm_readonly` в облачном кластере НЕТ). +- **Воркер очереди бота** — новый systemd-юнит `liderra-queue-bot.service` + (`--queue=bot --tries=1 --timeout=30`). Supervisor на сервере не установлен. +- **`.env` прода** дополнен: `BOT_LLM=aitunnel`, `BOT_AITUNNEL_MODEL=claude-haiku-4.5`, + `BOT_TOURS_ENABLED=true`, `BOT_LIMITER_STORE=redis`, `SUPPORT_EMAIL=support@liderra.ru`, + `LANDING_URL=https://liderra.ru`. `AITUNNEL_API_KEY` там уже был. +- **Страница разборов отдаётся ПОРТАЛОМ** по адресу `/kak-eto-rabotaet` (маршрут в `web.php`): + на бою nginx отдаёт лендинг только по `/`, всё остальное уходит в портал → **nginx не трогали**. +- 🔴 **CSP боевого режет ВСТРОЕННЫЕ скрипты** (`script-src 'self'`, без `unsafe-inline`): + страница разборов сначала грузилась ПУСТОЙ. Скрипт вынесен в `/guides/page.js`. + Защиту не ослабляли. Виджет чата — внешний файл, поэтому работал сразу. +- **Лендинг**: боевой `index.html` = наш прототип + счётчик посетителей (соседняя сессия). + Чат и пункт меню «Как это работает» **дописаны в боевой файл**, ничего не затёрто. + +## Защита денег (счётчики чата) + +| Кто | Лимит | +|---|---| +| Гость, первый час разговора | 60 вопросов | +| Гость, дальше | 30 вопросов в час | +| Вошедший клиент | 60 в час | +| Один разговор целиком | 150 вопросов | +| Один адрес в интернете | 60 в час | +| **Весь чат за сутки** | **1500 ответов (~660 ₽)** → чат гаснет + письмо владельцу | + +Пауза между сообщениями 2 с. Счётчики — **в Redis** (файловый кэш считает не атомарно: +300 прибавок → досчиталось 77). + +## Откат + +- Код: `/home/ubuntu/pre-bot-deploy-20260714-104633-code.tar.gz` (89 МБ), `.env`: + `/home/ubuntu/pre-bot-deploy-env.bak`. +- Лендинг: `/var/www/liderra/landing/index.html.bak-prechat-*`. +- Погасить чат: убрать строку `