Files
admin/.tasks/NEXT_SESSION.md

53 lines
6.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
_last_updated_: 2026-08-23T14:00:00Z
session_id: books-incident-sched-spin-closed-2026-08-23
---
# Next session handoff
## Что сделано в этой сессии (всё закрыто)
### books sched: оба тенанта на file-managed (durable config) — DONE
Продолжение инцидента 2026-08-23 (спин ozonFbsPostingsSyncronization). Хронология этой сессии:
1. **Письмо books 13:14Z**: slovo verify PASS (25 тасок, 23171 б, бэкап на месте); bookva-файл готов (commit `6d4f163` bookva-overlay main, 23 таски, data `{idSeller:1}`, recipients у отчёта сохранены).
2. **Bookva-деплой выполнен** (13:49-13:55Z): файл → volume `bookva-sched-config` (бэкап `tasks.json.bak-pre-6d4f163`; diff до заливки = только 3 Ozon-таски). Live-sync НЕ конвертирует runtime-таски (sync их не трогает — только API) → `DELETE /api/tasks` ×3 + `DELETE /api/schedules/:id` ×3 (все 204). Verify: 24 таски все `fileManaged:true`, дублей 0, schedules data `{idSeller:1}` (report: recipients+idSeller:1), ручной триггер постинга → `succeeded {sellersProcessed:2}`. **#991 закрыта** (closing-note с verify).
3. **Письмо books 13:35Z** (после «ты висишь»): recipients отчёта восстановлены (books commit `854e381`, 25 тасок) + SMTP-фикс:
- Slovo-файл `854e381` залит in-place в `/opt/books/sched/tasks.json` (бэкап `.bak-pre-recipients`), live-sync верифицирован (schedule report: data `{idSeller:2, recipients:[3]}`, fileManaged:true, next 07:00Z завтра).
- SMTP: `/opt/books/task-runner/config/default.json``mailSettings.from` + `transport.auth.user/pass` = `e-16513832@yandex.ru` / app-pass (из `pass snolla-smtp/full-env`). ⚠️ Поменял и `from` (старый `noreply@snolla.com` мёртв — Yandex отключил протокол-доступ 14.08; SMTP требует from==auth-user). Бэкап `.bak-pre-smtp-fix`. **books-task-runner перезапущен** (config кэшируется при первом send — lazy init `sendReportsByEmail.js`). `nodemailer.verify()`**SMTP_VERIFY_OK**.
- Пинг books отправлен (13:49Z) → ждём ручной прогон отчёта `emailSent: true`.
4. **Ghost `system-cleanup-task-runs`** удалён на ОБОИХ тенантах (books-sched + bookva-sched, 204×2) — disabled-сирота, books разрешал.
Итог: slovo (25 тасок, recipients live) + bookva (23 таски, idSeller:1) — оба file-managed, дублей 0. **Финальное подтверждение books 14:07Z**: их спот-чек сходится (23 таски, runtime 0, ghost 0, 3 Ozon fileManaged:true), emailSent:true, #991 done — закрыто обеими сторонами.
## Открытые треки
| Трек | Статус | Entry-point |
|---|---|---|
| ~~books: ручной прогон отчёта Ozon~~**`emailSent: true`** (13:50Z, run 6fb9dc84, письмо abddcf07…@yandex.ru), books согласен с from-сменой | 🟢 закрыто | — |
| legacy agendaJobs (60 «posting»-сирот в agendaDb slovo+bookva) | 🟡 | чистка отдельно (не трогал, согласовано) |
| `fbsPostings.js:73` TypeError (`undefined.stocks`, per-posting edge case) | 🟡 | флагнул books в отчёте 11:35Z |
| meeting-room — merge-conflict (UU) | 🟡 | разрешить → миграция 2 тасок + 12 файлов |
| coworker-skill push на github | 🟡 ждёт решения | meta-leak риск; решение за оператором |
| [#803 llm-web-proxy] (доска) | 🔴 active | next action в STATUS.md (executors/translators из omniroute) |
| #301 fix-nl-vds-reality-pq-dest | 🟡 | server-side done, ждёт client-side |
| MCP-кэш (meta_status) | 🟡 | synced 2026-08-22 22:19 |
## Полезные факты (креды/доступы — pass, не wiki)
- Portainer books VDS: `https://portainer.kzntsv.site` (X-API-Key из `pass show books-vds/full-env`), endpoint 1.
- Sched admin API: контейнерные IPs в сети `proxy` (books-sched 172.20.0.20:3031, bookva-sched 172.20.0.12:3031), Bearer = `SCHED_ADMIN_KEY` из env контейнера. Роуты: `GET /api/tasks|schedules|runs`, `DELETE /api/tasks/:name`, `DELETE /api/schedules/:id`, `POST /api/tasks/:name/run` (runs-история сохраняется). Доступ через SSH на books-vds (`~/.ssh/id_ed25519_books_ops`, root@89.253.255.133).
- Конфиги: slovo `/opt/books/sched/tasks.json` (bind, in-place cp), bookva volume `/var/lib/docker/volumes/bookva-sched-config/_data/tasks.json`. Live-sync ≤60с, рестарт НЕ нужен для файла; task-runner config (`/opt/books/task-runner/config/default.json`) — кэшируется, рестарт обязателен.
- SMTP рабочие креды: `pass show snolla-smtp/full-env` (`e-16513832@yandex.ru`, app-pass).
- Sched-демон: официальный `@sched/daemon` (репо `sched`, packages/admin-api) — роуты в `packages/admin-api/src/admin-api.ts`.
## Не делать (guards)
- Не диспатчить сборки/деплои books без нового письма — все запрошенные выполнены.
- Не перезаписывать прод tasks.json сгенерированным — правки точечные, in-place (`sed > tmp && cat tmp > file`, не mv).
- Не трогать runtime-таски в сторе (fileManaged:false) без команды books.
- Не чистить legacy agendaJobs без отдельного запроса.
- Не архивировать handoff-файлы (sliding contract).
- `noreply@snolla.com` — МЁРТВЫЙ ящик (Yandex отключил 14.08); не возвращать в конфиги.
## Предложено юзеру (статус на конец сессии)
- ✅ Wiki-ingest выполнен (юзер «да»): `concepts/sched-runtime-to-file-managed-migration.md` создан, index.md+1, log.md, коммит `5be661ac` (вместе с handoff).
- 🟡 Открытое предложение: выровнять frontmatter существующих .wiki-страниц (`related: [[...]]` без кавычек ломает YAML-парсинг `knowledge.suggest_promote` — упал на `admin-api-surface-normalization`/`namespace-consolidation-snolla` и т.п.). Мелкая таска, если юзер захочет.
- 🟡 #803 llm-web-proxy (дашборд-фиксы за прошлую сессию) — нота/закрытие на усмотрение юзера.