Files
admin/.tasks/NEXT_SESSION.md
vitya b430bce111 tasks(NEXT_SESSION): refresh after bookva-tenant-cutover-prep 4/7 progress
Forward-looking: MW slot needed для stateful-split-volume-copy + Step 2/4,
books-api shutdown decision (24-48ч soak ends ~2026-05-27/28), Step 6
timing question. Memory updates: Gitea reserved GITEA_* prefix, token
creation requires basic auth, Portainer PUT atomic compose+env, embed-api
auth matches books-api 1:1.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-26 10:09:05 +03:00

6.8 KiB
Raw Blame History

_last_updated_, session_id
_last_updated_ session_id
2026-05-26T17:00:00+03:00 2026-05-26-bookva-tenant-cutover-prep-4of7

Next session handoff

Recent commits

  • .admin ce8bf8a6 — tasks(bookva-tenant-cutover-prep): 🟡 progress 4/7 — Steps 1+3-partial+5+7 (this commit; close-of-session update)
  • .admin 4f1a4cf4 — tasks(bookva-tenant-cutover-prep): create — 7-step VDS prep (start of session, was already there from prior morning user-driven create)
  • victor/books 75ea320 — feat(deploy): web.compose.yml embed-api env switch (pushed; Portainer stack 24 PUT'нут atomic, container live, smoke green)
  • victor/books 2f7b539 — fix(ci): rename secrets.GITEA_TOKEN → BOOKVA_OVERLAY_TOKEN (Gitea reserved prefix)
  • victor/bookva-overlay 5b173de — config-templates align to prod shape + design v3 hostname (api/scheduler templates rewritten, task-runner template NEW, README hostname table → bookseller.kzntsv.site)

Open треки

Трек Готовность Entry-point
bookva-tenant-cutover-prep 🟡 4/7 done — Maintenance-window items pending .tasks/bookva-tenant-cutover-prep.md § Remaining
stateful-split-volume-copy not started; lean playbook готов; блокирует Step 2 + Step 4 в bookva-tenant-cutover-prep .tasks/stateful-split-volume-copy.md
infra-inventory ready, books VDS factsheet ещё свежее (бы. 12 Portainer stacks now после migration) .tasks/infra-inventory.md
books-bookva-user-whitelist-gathering ready, long-lead gathering (email-based) .tasks/books-bookva-user-whitelist-gathering.md
books-vds-bookva-bootstrap 🔵 blocked on tenant-split Phase 4 .tasks/books-vds-bookva-bootstrap.md
books-dns-cutover-bookva 🔵 blocked on books-vds-bookva-bootstrap .tasks/books-dns-cutover-bookva.md
books-stateful-split-execution 🔵 blocked on dev-prep + per-tenant-backup-and-observability в victor/books .tasks/STATUS.md

Спроси user'а

  • Maintenance window slot для stateful-split-volume-copy + Step 2/4 в bookva-tenant-cutover-prep. 1-2h на books VDS — docker stop books-db + cp -a (MariaDB+Mongo) + Portainer stacks create + login-gate SQL. Когда удобно?
  • books-api shutdown micro-task — 24-48ч soak с embed-api на books-web уже идёт. Когда соответствующий 24-48ч окно истечёт (≈2026-05-27 вечер2026-05-28), создавать books-api-shutdown micro-task или просто docker stop books-api && rm через Portainer ad-hoc?
  • Step 6 PWA redirect timing. Per spec — 1-2 нед до cutover. После maintenance window mwхочешь сразу выставить, чтобы users id=1 готовиться к redirect, или дождаться актуальной cutover date?
  • iis-migration descoped items (carried over from prev session) — нет tracker tasks для 14 plan-to-migrate hostnames, source IIS decommission, LE renewal 2026-07-22, cleanup, wiki concept updates. Создать или оставить в Closure note? (Prev session user отверг 3-way split.)

Не делать (preemptive guards)

  • Не trigger compose up bookva-* stacks — это scope of separate bookva-tenant-cutover task, не текущей prep. Stack acceptance — только "созданы + ID записан", не "запущены".
  • Не stop books-api пока 24-48ч soak с embed-api не closed. Стек продолжает работать как fallback (любой external caller на https://books.kzntsv.site всё ещё идёт через books-api напрямую).
  • Не trigger Bookva deploy через deploy.yml workflow до создания Portainer bookva stacks + записи их IDs в Gitea secrets. Workflow gracefully skip'ает (deploy.yml line 187), но shorter rollout path = avoid лишний run.
  • Не touch templates через volume edit прямоbookva-overlay/config-templates/ теперь авторитетный source. Любой edit конфига = commit + push + re-populate volume.
  • Не редактировать bind-mount config файлы на VDS (/opt/books/<svc>/config/default.json) напрямую без cp <file>.bak-<date> — bind-mounted, change live для приложения.
  • Не trust https://elasticsearch.kzntsv.site/ без basicAuth — endpoint behind traefik middleware. Pwd живёт в /opt/books/api/config/default.json (не в pass).

Memory updates за сессию

  • Учить — Gitea secrets reserved prefix. Repo secrets с именем начинающимся на GITEA_* (или GITHUB_*) returns 400 "invalid variable or secret name". Workaround: переименовать secret + соответствующий secrets.X reference в workflow. Env var name внутри shell-script может оставаться любым (мы оставили GITEA_TOKEN в shell, а secret назвали BOOKVA_OVERLAY_TOKEN).
  • Учить — Gitea token creation требует basic auth. POST /api/v1/users/{name}/tokens returns "auth required" даже с admin token — endpoint специально требует username+password basic auth. Workaround: user генерит PAT через UI (Settings → Applications → Tokens). Admin token недостаточен.
  • Учить — Portainer PUT /api/stacks/ atomic. Может одним вызовом обновить stackFileContent + Env, container recreates на diff. Pattern: GET текущий стек → modify → PUT с {stackFileContent, env, pullImage:true, prune:false}. Использовали для Step 7 embed-api switch.
  • Учить — embed-api auth gate в books-web matches books-api exactly. /api/healthz=200 (public), любой protected endpoint без token = 401 "No token provided", с invalid token = 401 "Invalid JWT token". Identical behavior — embed = port-of-books-api, не parallel impl.
  • Pass entry added: gitea/victor-books-ci-bookva-overlay — PAT scope=read:repository для clone bookva-overlay в CI. Value захардкожен в Gitea secret BOOKVA_OVERLAY_TOKEN в victor/books, pass = backup.
  • Reference: bookva-tenant-cutover-prep § Decisions log — full session trace для 4 closed steps.
  • Reference: ../.wiki/concepts/portainer-stack-management-books-vds — books VDS Portainer endpoint 1 = primary, 12 stacks managed (legacy SSH-compose for elasticsearch/mongo/minio/books-db/traefik/portainer ушли — books-vds-stacks-to-portainer task closed 2026-05-25). При проверках books-job-scheduler-mongoconfig/-mongodb volumes остаются именами от legacy migration; новые bookva-* следуют new convention.