docs(pilot): выкат пакетного сбора (шаг 2) + монитор свежести YC-бэкапа 09.07

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Дмитрий
2026-07-09 11:05:15 +03:00
parent 8e2d749c97
commit a2a22b34a2
+37
View File
@@ -16,6 +16,43 @@
---
## 🆕 ОБНОВЛЕНИЕ 09.07.2026 — пакетный сбор источников (шаг 2) на боевом + монитор свежести бэкапа
**Фича «пакетный сбор + честная очередь» выкачена на `lk.liderra.ru`.** Кнопка «Собрать
источники (N)» в подвале «Конкурентного поля», бюджет-гейт с резервом активных лид-проектов,
распорядитель `AutopodborStudyScheduler` (одна дорожка + round-robin между тенантами), крон
`autopodbor:study-tick` (everyMinute). Спека/план/handoff:
`docs/superpowers/{specs,plans}/2026-07-08-autopodbor-step2-batch-*` +
`docs/superpowers/2026-07-09-HANDOFF-autopodbor-step2-batch-STATE.md`.
- **🔑 Боевой — СКЛЕЙКА, единой «боевой ветки» НЕТ.** Фронт собран из
`gitea/deploy/tariff-range-fix-20260708` (тариф+колонки+мобильный+Метрика; исходник
`pricingTiers.ts` только тут, в `main` НЕТ), бэкенд = `gitea/main` (пауза/сторож). Прод
`app/` без `.git` (rsync-оверлеи). Чтобы не потереть чужое — собрал **интеграцию-надмножество**
`deploy/autopodbor-batch-integrated`: от прод-фронта → cherry-pick свежих бэк-фиксов из `main`
→ cherry-pick фичи; доказал `git diff` vs прод-фронт = **только 2 файла фичи**; катил
**хирургически** (`rsync --files-from`, 12 бэк-файлов + замена `public/build` бандл `app-BJ6waEiX.js`),
НЕ всю папку. Файлы поставщика/тарифа не тронуты (md5 сверены до и после).
- **Миграции на ЖИВОЙ Managed** `c9q2cvtjpq3hgq6l0r96` (config закэширован → env-override artisan
не работает): DDL напрямую `psql` как **crm_migrator** (владелец таблиц; пароль crm_migrator
из Lockbox — ID секрета в памяти сессии, `sslmode=require`), одной транзакцией +
ручной `INSERT INTO migrations`. `batch_id` (ADD COLUMN nullable + 2 индекса) + RLS-политика
`autopodbor_runs_supplier_read` (SELECT для `crm_supplier_worker`).
- **Проверено:** сайт 200, маршрут `POST api/autopodbor/study/batch`, ручной тик EXIT 0 (RLS
читается), логи чисты, 0 failed jobs. **Откат:** `/tmp/app-backup-20260709-batch.tgz` +
`public/build.bak-batch-20260709` + обратные миграции.
**Монитор свежести облачного бэкапа (заменил фальшивый локальный дамп).** Выяснилось: ночной
`liderra-backup.sh` **отключён намеренно 06.07** (дампил мёртвую копию 127.0.0.1; логический
дамп живого кластера невозможен из-за FORCE RLS). Живую базу защищают штатные YC-автобэкапы
(ежедневно ~22:15 UTC, 7 дней + PITR) — проверил напрямую, свежие. Поставлен
`/usr/local/bin/liderra-backup-monitor.sh` + крон `/etc/cron.d/liderra-backup-monitor` (04:00 UTC):
раз в день через `yc` смотрит возраст последней копии, шлёт письмо на `kdv1@bk.ru`, только если
> 27ч. `yc` на VM = `/home/ubuntu/yandex-cloud/bin/yc` (не в PATH, авторизован). `prod-deploy-validator`
П4 «свежесть бэкапа» для managed-схемы — ложная тревога (видит лишь мёртвый локальный дамп).
---
## 🆕 ОБНОВЛЕНИЕ 07.07.2026 (вечер) — сторож поставщиковых тревог понимает режим (потоп писем на ops@ убран)
**Контекст:** после дневного переезда в пакетном (batch) режиме `FailoverProjectChannel` слал по