Files
admin/.tasks/NEXT_SESSION.md

60 lines
6.0 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-07-20T11:50:00Z
session_id: 2026-07-20-on-snolla-cutover-done
prev_session_id: 2026-07-20-snolla-local-admin-restore-done
---
# Next session handoff
## Эта сессия — Task B (on.snolla.com → VDS) DONE. Cutover завершён 2026-07-20.
on.snolla.com live на VDS как Node snolla-app `@snollajs/snolla` 0.42.1, за traefik, LE-серт issued.
Прод-оракул был RUVDS IIS (80.64.31.36) — не тронут, жив (rollback = revert DNS).
🟢 **[on-snolla-vds-migration] ЗАКРЫТА.** Спека: `.wiki/concepts/snolla-local-admin-and-on-snolla-migration-design.md` §Task B.
Runbook (as-built + gotchas): `.wiki/concepts/on-snolla-vds-deploy-runbook.md`. Таска: `.tasks/on-snolla-vds-migration.md` (as-built).
### As-built
- **Репо** `victor/on.snolla.com` (git.kzntsv.site, запушен) — структура-калька tandemmebel.ru. Commit `473923e494db`.
- **Образ** `registry.kzntsv.site/on-snolla:473923e494db` (+:latest), собран на VDS (обход traefik-499).
- **Стек Portainer 22** (`on-snolla`), `mem_limit 512m`, 8 env-секретов (переиспользованы из tandemmebel стека 20 — общая snolla-инфра), rule `Host(on.snolla.com)`, LE-серт CN=on.snolla.com (YR1, until 2026-10-18).
- **DNS**: reg.ru `on.snolla.com` A `80.64.31.36``89.253.255.94` (operator flip; авторит. NS ns1/ns2.reg.ru verified → VDS before rule swap, LE-порядок соблюдён).
- **Реконструкция**: `views/layout.liquid` = bootstraptor-лендинг **byte-identical** прод-HTML (28413 байт, verified direct diff + live). Content-поля пустые → лендинг baked в layout. Form "Join us" baked (POST `/` → snolla `forms` middleware → `form_ajax_response.liquid`). StaticPages `/yandex_…` + `/4a052808276c.html`. `/c` = 404 dead-link (parity с продом — prod /c тоже 404; snolla sitemap несёт его → 3/3 loc parity).
- **Completeness-gate GREEN**: sitemap 3/3 parity {/,/c,/yandex}, homepage + /yandex byte-identical, 0 регрессий. Live-smoke external: TLS verify=0, `/`+`/robots.txt`+`/sitemap.xml`+`/yandex`=200, `/c`=404.
### Гочи (в runbook + memory)
- **snolla robotsTxt крашится на undefined `app.locals.domain`** — on.snolla.com не имеет row в MoreThenCms `Domains`. Фикс в `apps/web/index.js`: после initApp, если `!app.locals.domain`, synthesized `{robotsTxt: site.robotsTxt}`. Без shared-DB мутации. Memory `snolla-robotstxt-crash-no-domains-row`.
- **Form "Join us" не имеет Liquid form-tag** — форма HTML baked в layout, POST — `forms` middleware (мэтч по Path `/`). Legacy reCAPTCHA v1 мертва — parity, не чиним.
- **Portainer JWT short-lived** — в node-скрипте GET stack + GET file + PUT: jwt из GET-фазы протух к PUT (первый PUT 401). Re-auth прямо перед PUT.
- **hosts override на воркстейшне** — Task A оставил `127.0.0.1 on.snolla.com` в hosts. External verify прод-on.snolla.com = только через `curl --resolve on.snolla.com:443:89.253.255.94`.
### MinIO upload-acceptance (ручной follow-up оператора — НЕ сделано)
Логин в админку on.snolla.com (на RUVDS .NET, `/admin`) → залить тест-ассет → проверить объект в `minio.kzntsv.site` bucket=assets. S3-провайдер был admin-self-test green на RUVDS; Web.config 1:1 → должно работать. Креды админа в `MoreThenCms.dbo.Accounts` (SQL-user `snolla` / SA `pass mssql-vds/sa-password`).
## Recent commits (.admin)
- 4c4d1938 feat(on-snolla): CUTOVER DONE — on.snolla.com live on VDS (stack 22, LE cert)
- 6b5cb5fa feat(on-snolla): Portainer stack 22 source-of-truth (staging Host, mem_limit 512m, 8 env secrets)
- 73ad7669 (projects-meta) close vehicles-loader-redeploy-per-group-rate-diff 🟢
- 019f5bae (projects-meta) close on-snolla-vds-migration 🟢
- (on.snolla.com repo) 473923e feat(on-snolla): scaffold snolla-app — byte-identical landing reconstruction
## Open треки
| Трек | Готовность | Entry-point |
|---|---|---|
| books-vds → vds-kzntsv консолидация | оценено, не лезет по RAM/disk | Решение за user. |
| MinIO upload-acceptance on.snolla (ручной) | ⚪ follow-up оператора | Логин `/admin` (RUVDS) → тест-ассет → MinIO bucket=assets. |
## Спроси user'а
- (нет pending-решений — Task B закрыт полностью)
## Не делать (preemptive guards)
- **НЕ пушить без добла** (Rule 4) — на эту сессию добл был ("разрешаю всё, погнали").
- **НЕ сжимать** books на .94; **НЕ netplan** на vds-kzntsv.
- **hosts override активен** — `on.snolla.com` → 127.0.0.1 (локальный админ Task A). Боевой on.snolla.com (VDS) с воркстейшна — только через `--resolve :443:89.253.255.94` или off-hosts.
- **НЕ откатывать DNS on.snolla.com** без явного запроса — cutover LIVE, RUVDS IIS жив как rollback-target.
## Memory updates за сессию
- **NEW** `snolla-robotstxt-crash-no-domains-row` — snolla sites без Domains row крашатся на /robots.txt; фикс в index.js domain-drop fallback.
- (candidate) on.snolla.com мигрирован на VDS 2026-07-20 (stack 22, LE). Тираж snolla на VDS: labtools(17)/emspb(18)/labtools-pro(19)/tandemmebel(20)/kupimknigi(21)/on-snolla(22).
- (candidate) обновить entity `windows-recovery-host.md`: on.snolla.com более не обслуживается локальным IIS как прод — прод на VDS; локальный IIS `snolla` = только админ-хаб (hosts override on.snolla.com→127.0.0.1 теперь pointing на админ-копию, не прод).