7/7+minio+cutover done в одну сессию. bookva tenant LIVE на bookseller.kzntsv.site (10 stacks active, login-gate, ES reindexed 920k docs). Auto-deploy tenant=all активирован. 3 wiki concepts ingested (gitea-reserved-secret-prefix, mongo-wt- format-major-version-incompat, portainer-per-stack-depends-on-pitfall). Open треки: books-api-shutdown (~2026-05-27/28), bookva-ozon-mcp-image-build, optional bookva-minio HTTPS DNS. bookva-tenant-cutover task не понадобилась — de-facto cutover произошёл сегодня. Auto-push grant был session-only — следующая session требует нового grant. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
7.6 KiB
7.6 KiB
_last_updated_, session_id
| _last_updated_ | session_id |
|---|---|
| 2026-05-26T23:30:00+03:00 | 2026-05-26-bookva-tenant-cutover-prep-LIVE |
Next session handoff
Recent commits
.wiki b2528fb— wiki(concepts): ingest 3 generic ops-gotchas from bookva tenant-split (manual write, MCP commitFile bug)victor/books c434230— deploy.yml: auto-deploy default tenant=slovo → all (symmetric rollout active)victor/bookva-overlay 2862279— traefik labels: entrypoints=https + certresolver=letsEncrypt (books-VDS instance naming)victor/bookva-overlay 5474b10— elasticsearch.compose.yml: add reindex.remote.whitelist=elasticsearch:9200victor/bookva-overlay b324e12— add bookva-minio + external port-bind для bookva-dbvictor/bookva-overlay 8bffd68— *.compose.yml: drop depends_on (per-stack model)victor/bookva-overlay 2b20a3e— api.compose.yml: remove traefik (internal-only per design v3)victor/bookva-overlay 93c2ea2— mongo.compose.yml: pin mongo:4.2 (WT format compat)victor/bookva-overlay 23eb374— db.compose.yml: pin mariadb:10.6 (cp -a parity)victor/bookva-overlay 264373d— .env.example: design v3 hostnamesvictor/bookva-overlay 5b173de— config-templates align to prod shape + design v3 hostnamevictor/books 75ea320— feat(deploy): web.compose.yml embed-api env switchvictor/books 2f7b539— fix(ci): rename secrets.GITEA_TOKEN → BOOKVA_OVERLAY_TOKEN.admin × 5— task progress, closure, NEXT_SESSION refreshes
What's LIVE сейчас
- bookseller.kzntsv.site → bookva-web (embed-api), 200 OK, login-gate active (id=1=pobeda2003, id=2=vitya)
- bookva.kzntsv.site → books-web (slovo, embed-api тоже), 200 OK, fallback к books-api stack для legacy paths
- books.kzntsv.site → books-api (legacy stack), ещё running 24-48h soak до shutdown micro-task
- 10 bookva Portainer stacks all ACTIVE (db/mongo/es/minio/api/web/scheduler/task-runner/ops-mcp/ntfy). bookva-ozon-mcp пока не создан (image отсутствует в registry).
- External admin endpoints:
mysql -h 89.253.255.133 -P 33306 -uroot -p${BOOKS_DB_ROOT_PASSWORD} books- S3 client →
http://89.253.255.133:9001, AKIA same as books (см. passbooks-vds/full-env)
- Auto-deploy симметричный — push в victor/books master → build → deploy.yml tenant=all → PUT slovo (22/23/24/26) + bookva (47/45/46/43)
Open треки
| Трек | Готовность | Entry-point |
|---|---|---|
books-api-shutdown (NEW micro-task) |
24-48h soak ends ~2026-05-27/28. docker stop books-api через Portainer |
TBD .tasks/books-api-shutdown.md |
bookva-ozon-mcp-image-build (NEW micro-task) |
image books-ozon-mcp:master не в registry — нужен build pipeline в victor/books |
TBD .tasks/bookva-ozon-mcp-image-build.md |
bookva-tenant-cutover task не понадобилась — cutover de-facto произошёл в этой сессии (Step 6 descoped по решению user'а) |
n/a — manual heads-up учредителю Bookva | |
bookva-minio-https-dns (optional) |
reg.ru A bookva-minio.kzntsv.site → 89.253.255.133 + push.bookseller.kzntsv.site → 89.253.255.133 для traefik HTTPS вместо port-bind |
reg.ru DNS UI |
mariadb-mongo-upgrade-chain (eventual post-cutover) |
bookva-db 10.6 → 10.11, bookva-mongo 4.2 → 4.4 → 5 → 6 → 7 chain. Когда usage стабилизируется | TBD |
stateful-split-volume-copy ⚪ |
bookva-side done; slovo-side scope deferred (отдельный slovo-cutover) | .tasks/stateful-split-volume-copy.md |
infra-inventory ⚪ |
books VDS теперь 14 stacks (+ bookva-minio + 9 bookva) — момент удачный для ingest factsheet | .tasks/infra-inventory.md |
books-bookva-user-whitelist-gathering ⚪ |
login-gate уже applied (id=1+2 only) — таска осталась только для verification списка от учредителя Bookva post-cutover | .tasks/books-bookva-user-whitelist-gathering.md |
books-vds-bookva-bootstrap 🔵 |
blocked on Phase 4 (Rusonyx или другой VDS для Bookva billing). Long-term — bookva сейчас на shared books VDS | .tasks/books-vds-bookva-bootstrap.md |
books-dns-cutover-bookva 🔵 |
blocked on books-vds-bookva-bootstrap | .tasks/books-dns-cutover-bookva.md |
Спроси user'а
- Manual heads-up учредителю Bookva (Step 6 substitute) — отправить ей сообщение «Bookva теперь на
https://bookseller.kzntsv.site, login те же». Когда? books-api-shutdownчерез 24-48ч — ad-hoc через Portainer или tracker task?bookva-ozon-mcp-image-build— нужен build в victor/books CI? Сейчас image отсутствует, bookva-ozon-mcp stack не создан. Если service не используется — skip навсегда?- bookva-minio creds rotation — сейчас AKIA same as books-minio. Rotate в отдельную task'у когда стабилизируется?
- slovo-overlay parity audit —
.env.exampleи templates вероятно stale similarly to bookva pre-fix. Audit перед slovo-cutover task?
Не делать (preemptive guards)
- Не stop bookva-{db,mongo,es,minio,api,web,scheduler,task-runner,ops-mcp,ntfy} — все LIVE на bookseller.kzntsv.site, любой stop = production outage Bookva tenant'а.
- Не editing config volumes через alpine — source of truth =
bookva-overlay/config-templates/. Edit → commit → push → re-populate. - Не stop books-api до явного soak end (~2026-05-27/28) + user sign-off. Внешние callers всё ещё на
https://books.kzntsv.site/*. - Не push без grant в next session — auto-push grant был session-only per Rule 4. В этой сессии user grant'нул на «делай авто-push» — следующая session требует нового grant.
- Не trust DNS wildcard kzntsv.site — wildcard → 94.19.247.14 (Windows IIS), НЕ books VDS 89.253.255.133. Новые subdomains требуют explicit A-records в reg.ru.
- Не restore /backups/books-{db,mongo}-pre-split-20260526-*.tar.gz unless rollback. Manual cleanup после 7+ дней.
Memory updates / wiki ingests
Ingested в shared wiki ~/projects/.wiki/concepts/:
gitea-reserved-secret-prefix— GITEA_* / GITHUB_* prefix reserved (PUT → 400)mongo-wt-format-major-version-incompat— Mongo 4→7 crash exit 62, chain upgrade FCVportainer-per-stack-depends-on-pitfall— cross-stack depends_on "undefined service"
Local memory updates за сессию (не ingested, books-specific):
- DNS wildcard kzntsv.site → 94.19.247.14 (Windows IIS, не books-vds)
- bookva passwords plaintext в DB (varchar(45), TODO bcrypt в login.post.js)
- books-vds traefik instance naming:
entrypoints=https+certresolver=letsEncrypt(case-sensitive) - Embed-api auth gate в books-web identical к books-api (401 без token, 401 invalid JWT)
- Multi-tenant MinIO design: separate container vs bucket-split. User выбрал separate container (zero-config-change в apps).
Pass / Reference
- pass entry
gitea/victor-books-ci-bookva-overlay(PAT scope=read:repository) — backup для BOOKVA_OVERLAY_TOKEN secret в victor/books. - pass entry
books-vds/full-env— BOOKS_PORTAINER_URL+API_KEY, BOOKS_DB_ROOT_PASSWORD, MINIO_ACCESS_KEY. - Backups на books VDS —
/backups/books-{db,mongo}-pre-split-20260526-*.tar.gz. - Reference: bookva-tenant-cutover-prep § Closure note + Post-closure follow-up — full session trace.