Files
admin/.tasks/NEXT_SESSION.md

6.8 KiB
Raw Blame History

_last_updated_, session_id
_last_updated_ session_id
2026-08-23T14:00:00Z 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.jsonmailSettings.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: ручной прогон отчёта OzonemailSent: 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 (дашборд-фиксы за прошлую сессию) — нота/закрытие на усмотрение юзера.