Scheduler seller-pinning выкачен на slovo+bookva (16 джоб, idSeller/ch per-tenant), task-runner добавлен в auto-deploy, wiki ingested. Открытые треки: slovo-overlay deploy не активен (legacy bundled compose), docs-commit триггерит лишний redeploy, bookva compose без DEPLOY_AT. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
6.3 KiB
6.3 KiB
_last_updated_, session_id
| _last_updated_ | session_id |
|---|---|
| 2026-05-26T22:00:00+03:00 | 2026-05-26-tenant-scheduler-seller-pinning |
Next session handoff
Recent commits
victor/books d1054bd— wiki(ingest): tenant-scheduler-seller-pinning + task-runner auto-deployvictor/books 81e0f29— ci(deploy): task-runner добавлен в auto-deploy matrix (+ secret PORTAINER_STACK_ID_BOOKVA_TASK_RUNNER=48)victor/books 519d8dc— feat(tenant-split): tasks.json per-tenant defaults + Group C idSeller filter (job-scheduler 1.6.0, task-runner 0.4.0, tasks 0.1.0)victor/slovo-overlay f8b7bc5— scheduler tasks.json template (slovo=2) + mount-path fix /app→/usr/src/appvictor/bookva-overlay c49afd7— scheduler tasks.json template (bookva=1)
Что сделано / LIVE сейчас
Scheduler seller-pinning выкачен на оба tenant'а, verified в живых контейнерах:
- 16 джоб запинены: slovo
idSeller=2/salesChannels=[2], bookvaidSeller=1/[1]. Zero cross-tenant leakage (проверено node-скриптом в обоих job-scheduler контейнерах). - Group C code-патчи (idSeller-фильтр в 4 handler'ах) + удалены 3 latent-бага: hardcoded
idSeller:1(loadSellersPrices),salesChannels:[1](load-products-to-ozon), cross-seller хардкод (withdrawProductsFromSale). 13/13 тестов green. - Все 4 контейнера (
books-job-scheduler,books-task-runner,bookva-scheduler,bookva-task-runner) наmaster-519d8dc+, healthy. - task-runner теперь в auto-deploy pipeline — будущие code-changes раскатываются без ручных шагов. Деталь: slovo tr бандлен в job-scheduler стек, bookva tr = отдельный Portainer-стек 48.
- Wiki: concept [tenant-scheduler-seller-pinning] + source ingested в books/.wiki.
bookva volume tasks.json залит (md5-verified), backup на VDS /tmp/bookva-tasks-live-backup-20260526-212259.json.
Открытые треки
| Трек | Готовность | Entry-point |
|---|---|---|
| slovo-overlay deploy НЕ активен ⚪ | slovo сейчас работает на legacy bundled compose (books-job-scheduler стек = mongo+proxy+task-runner+scheduler в одном, bind-mount только default.json). slovo-overlay deploy/*.compose.yml (named volumes, mount-path fix) — подготовлены, но не задеплоены. Миграция = отдельная таска (parity audit с bookva). |
slovo-overlay/deploy/ |
| docs-commit → лишний redeploy ⚪ | .wiki/-only push триггерит build→skip→deploy.yml workflow_run→полный redeploy (idempotent, но шумно). Можно добавить .wiki/+docs/ в skip-pattern detect-changes в build.yml, либо guard в deploy workflow_run. |
books/.gitea/workflows/build.yml |
| bookva compose без DEPLOY_AT ⚪ | bookva-overlay compose используют ${CORE_SHA} → recreate только при смене digest (не force). slovo использует __TAG__+__DEPLOY_AT__. Для re-deploy того же тега bookva не пересоздаётся. Норма для нашего flow (новый код = новый digest), но асимметрия. |
bookva-overlay/deploy/*.compose.yml |
books-api-shutdown (из прошлой сессии) |
soak с bookva LIVE — проверить всё ещё ли books-api нужен для slovo fallback. | TBD |
bookva-ozon-credentials-audit ⚪ (user-deferred) |
bookva ozonSeller.clientId = slovo's (cp-a). Финансовый риск. User: «сам подумаю». | TBD |
bookva-mongo-cleanup ⚪ (user-deferred) |
2817 agendaJobs из cp-a. User: «не трогай не стирай». | TBD |
Спроси user'а
- slovo→slovo-overlay миграция — мигрировать slovo на slovo-overlay deploy (named volumes, как bookva) или оставить legacy bundled compose? Сейчас работает, но parity нарушен (mount-path fix в репо не применён к live).
- docs-redeploy guard — фиксить пайплайн чтобы
.wiki/-коммиты не триггерили redeploy? - withdrawProductsFromSale — была cross-seller логика (snять seller2 если seller1 снял тот же offer_id). Я её удалил (single-seller). Если бизнес-смысл cross-coordination всё ещё нужен между Ozon-аккаунтами — пересмотреть.
Не делать (preemptive guards)
- Не stop
bookva-*/books-*контейнеры (db,mongo,es,minio,api,web,scheduler,task-runner,ntfy) — production на bookseller.kzntsv.site + slovo URL. - Не push без grant в next session — auto-push был session-only (этот session был grant'нут).
- task-runner для bookva — теперь авто-деплоится (стек 48). НЕ нужно руками. Но если меняешь bookva-task-runner стек руками — помни что pipeline его перезапишет.
- bookva-mongo agendaJobs 2817 docs — user explicit «не трогай не стирай».
- Не trust деплой «успех» без smoke — bookva compose без DEPLOY_AT может не пересоздать контейнер при том же digest; проверяй APP_VERSION/uptime после деплоя.
Memory updates за сессию
- idSeller == idSalesChannel маппинг (канон): bookva=1, slovo=2. User-fixed, без проверки БД.
- Deploy-механика: slovo job-scheduler чит tasks.json из image built-in (bind только default.json), bookva — из named volume (shadow'ит image).
deploy.ymlauto-deploy покрывает api/web/task-runner/job-scheduler (task-runner добавлен 2026-05-26). slovo tr бандлен в scheduler-стек, bookva tr отдельный стек 48.- books CI build path-filter:
tasks.jsonтриггерит web+scheduler ребилд;packages/tasksилиpackages/task-runner→ task-runner ребилд. - Креды:
pass books-vds/full-env(SSH keyid_ed25519_books_ops, Portainer URL+key),pass gitea/admin-token(Gitea API).