Files
admin/.tasks/NEXT_SESSION.md

55 lines
8.1 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-23T12:52:00Z
session_id: books-incident-sched-spin-closed-2026-08-23
---
# Next session handoff
## Что сделано в этой сессии (всё закрыто)
### LWP (llm-web-proxy) — дашборд, 4 фикса (v0.1.13→v0.1.16, запушены, сервер перезапущен)
- **v0.1.13**: таймлайн «Запросы по времени» был фейковым (бары = `reqs/24` плоская константа → все одинаковые). `metrics.js` теперь бакетит реальные ts `req`-событий → `timeline {startMs,endMs,buckets}` (null при нуле); дашборд рисует гистограмму, нулевые бакеты тёмные, empty-state «нет запросов». +4 теста, 120/120.
- **v0.1.14**: метки над барами были «29791275м» (минуты с эпохи) → локальное HH:MM (`toLocaleTimeString`).
- **v0.1.15**: убран лишний суффикс «м».
- **v0.1.16**: высокий бар + метка вылезали за границу секции (бар 80px > контент 74px; метка top:-18px). Контейнер 90→110px, макс. бар 80→74px — бар и время внутри.
- Локальный репо: `C:/Users/vitya/projects/.common/lib/llm-web-proxy` (симлинк глобальной установки; бинарь `lwp`, сервер 127.0.0.1:8788, autostart vbs).
### books инцидент (спин ozonFbsPostingsSyncronization, ~75 req/сек) — ЗАКРЫТ
Полная цепочка (переписка в `books/.agents/inbox/`, отчёты `.admin` 10:22→11:35Z):
1. **Деплой #974/#975** (sched tenant=all, run #565): CORE_SHA-инъекция + slovo bind-директории `/opt/books/sched:/app/config:ro` + `--tasks /app/config/tasks.json` + `DOCKER_CONFIG`; bookva-overlay `DEPLOY_AT`. Live-sync #975 верифицирован на обоих тенантах (in-place правка → подхват ≤60с, RestartCount 0). #977 (bookva probe) тоже.
2. **Спин-инцидент**: корень = slovo-БД seller 1 (Bookva, 50542) держал **ключ Slovo** (артефакт tenant-split; оба ключа были d6227b). Фикс: `UPDATE books.sellers SET api_key=<ключ Bookva ddc24146…/f700f3> WHERE id_seller=1` (взят из bookva-db; хэш-верификация до/после).
3. **Флуд**: `docker restart books-task-runner` + `POST /tasks/ozon fbs postings syncronization/pause` (10:40Z). Мёртв, 0 ошибок с тех пор.
4. **Миграции расписаний** (`packages/tools/sched-schedules-create.js`): slovo 5+5, bookva 3+3, errors 0, dedupKey `agenda:*` (идемпотентно). Schedules несут `data {idSeller:2}` из agendaJobs. **Стуктура**: стора sched = mongo `agendaDb` (`sched_tasks`/`sched_schedules`); runtime-таски fileManaged:false по дизайну (RUNTIME_TASK_NAMES) — НЕ возвращать в tasks.json.
5. **Код-фикс `2a38fb5`** (break в outer catch) — собран (#566, реестр digest 83c263b9→8c3a4d9b) и задеплоен на ОБА task-runner (образ `4de2c54d`). ⚠️ slovo task-runner пересоздаётся только через **job-scheduler**-стек (`STACK_ID_SLOVO_TASK_RUNNER` пуст); bookva — через task-runner-стек. Первый деплой был преждевременным (до конца сборки) — повторный деплой исправил.
6. **Resume постинга** + смоук-ран: `succeeded {sellersProcessed: 2}`, спин-сигнатуры нет, Invalid Api-Key 0. Часовое расписание армировано (12:01Z).
7. **⚠️ ОТКАТ ключа (12:07Z)**: БД-фикс seller 1 был ошибкой — slovo-ключ у seller 1 (Bookva) в slovo-БД — **НАМЕРЕННАЯ заглушка** (анти-утечка: slovo-стек не должен ходить в Ozon под Bookva-кабинетом). Откатил `968302d1…` обратно (books подтвердил владелец). **НЕ «чинить» снова**: slovo-БД seller 1 (50542) = slovo-ключ (d6227b) — это контракт. Код-фикс break-on-error делает заглушку безопасной (фейл-фаст, не спин).
8. **Зеркальная заглушка (12:15Z)**: bookva-БД seller 2 (94191) = `ddc24146` (bookva-ключ) — заглушка, чтобы bookva не ходил в Ozon как Slovo. Полный контракт: каждый стек ходит только своими кредами (slovo=94191, bookva=50542); мисматч-пары в обеих БД — намеренные. bookva runtime-расписания postings/products — data:null (all-sellers) → будут фейлиться на seller 2 (401→break, ожидаемо); фикс: bookva schedules data {idSeller:1} (12:25Z). ПЕРЕВОД SLOVO В FILE-MANAGED СДЕЛАН 12:50Z (5 тасок из deploy/sched-tasks.json, стора почищена, файл в git — коммит 887bbae). Bookva-перевод ждёт файла с idSeller:1 от books.
## Открытые треки
| Трек | Статус | Entry-point |
|---|---|---|
| books #990/#991 (restore/durable-config, runtime-owned) | 🟡 на books-доске | их сторона; фоллоу-ап: перевод 5 runtime-тасок в file-managed ИЛИ документирование runtime-контракта |
| 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); дашборд-фиксы v0.1.13-15 не влияют на задачу |
| #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 контейнера. Доступ только через SSH-туннель на books-vds (`~/.ssh/id_ed25519_books_ops`). ⚠️ локальный порт 27017 занят docker-контейнером — туннели на другие порты (37017+).
- Schedules/migrations: `packages/tools/sched-schedules-create.{slovo,bookva}.cmd` (mongo agendaDb, tz slovo=Europe/Moscow / bookva=UTC).
## Не делать (guards)
- Не диспатчить сборки/деплои books без нового письма — все запрошенные выполнены.
- Не перезаписывать прод tasks.json сгенерированным — правки точечные, in-place (`sed > tmp && cat tmp > file`, не mv).
- Не трогать runtime-таски в сторе (fileManaged:false) без команды books.
- Не чистить legacy agendaJobs без отдельного запроса.
- Не архивировать handoff-файлы (sliding contract).
## Предложено юзеру (не сделано — жду ратификации)
- Wiki-ingest: краткий concept про sched runtime-таски + инцидент 2026-08-23 (в .admin/.wiki/concepts или shared wiki).
- Закрытие/нотка на #803 llm-web-proxy (дашборд-фиксы за сессию).