diff --git a/.tasks/NEXT_SESSION.md b/.tasks/NEXT_SESSION.md index db7e505..1664fc9 100644 --- a/.tasks/NEXT_SESSION.md +++ b/.tasks/NEXT_SESSION.md @@ -1,73 +1,65 @@ --- -_last_updated_: 2026-07-13T19:50:00Z -session_id: 2026-07-13-tandemmebel-8df10ee-deploy -prev_session_id: 2026-07-13-stostayer-loader-deploy +_last_updated_: 2026-07-20T07:00:00Z +session_id: 2026-07-20-snolla-local-admin-on-snolla-design +prev_session_id: 2026-07-13-tandemmebel-8df10ee-deploy --- # Next session handoff -## Эта сессия — tandemmebel 8df10ee deploy (DONE, прод живой) +## Эта сессия — design: SNOLLA local admin restore + on.snolla.com → VDS -🟢 **[tandemmebel-deploy-drop-fb-tw-gplus-buttons] ЗАКРЫТА.** In-place template bump -`0cd9351 → 8df10ee` на проде (стек 20), убраны FB/Twitter/Google+ share-кнопки -(экстремистистская символика РФ), оставлены ВК+Одноклассники. Template-only -(`apps/web/views/social_buttons.liquid`, 1 file 12 delet), snolla 0.42.1 НЕ менялся. +Спека написана и закоммичена: `.wiki/concepts/snolla-local-admin-and-on-snolla-migration-design.md` +(commit `b1b0092c`). Две таски заведены в `.tasks/` + board-entries в STATUS.md. -- **Верификация поймала расхождение:** tandemmebel-записка утверждала live=`ed96b18`/0.42.0, - фактически `0cd9351`/0.42.1. gitea `compare/0cd9351...8df10ee`=`total_commits:1` → фикс на - правильной 0.42.1 базе, yarn.lock идентичен → регрессии sitemap нет. -- Build на VDS (чистый gitea-архив 8df10ee, build-arg VERDACCIO_TOKEN=books-ci JWT), digest - `sha256:30a7e5ab82f2bf371042f1b5fa0cd7ac5ceda71379d1da59e148dee8166bd560`. -- Completeness-gate: sitemap NEW==PROD **184=184 identical**, 0 регрессий. Live-smoke 4 - share-block страницы → vk+ok / fb-tw-gp=0. TLS-серт не дёрнут. -- Swap через Portainer JWT (API-key `ptr_*` даёт 401 → workaround JWT), env 8/8 preserve, - `prune:false, pullImage:true`. Tandemmebel-сессия подтвердила, discrepancy-урок усвоен. -- **Records:** STATUS.md _Updated 2026-07-13; runbook секция In-place bump 8df10ee - (`.wiki/concepts/tandemmebel-vds-deploy-runbook.md`); compose source-of-truth - `host-stacks/vds-kzntsv/tandemmebel.compose.yml` = 8df10ee. Коммиты `632c843f` (records) - + `fe8e5882` (tasks_close). -- **Откат:** PUT стека 20 → `0cd9351` (0.42.1, {% order %} fix) / `ed96b18` (0.42.0, в registry, - стёрт с VDS при disk-cleanup 2026-07-13 — `pullImage:true` дотянет) / `b02ca18`; ИЛИ revert - DNS→80.64.31.36 (RUVDS IIS жив). +**Task A — snolla-local-admin-restore** (⚪ ready): +Восстановить локальный catch-all IIS-сайт `snolla` (снесён 2026-06-08 при decommission +windows-recovery-host) копированием `C:\sites\snolla\` с RUVDS (текущий прод-админ с уже +применённым MinIO drop-in). Conn → `mssql.kzntsv.site:1433` Catalog=MoreThenCms. Доступ +`.snolla.com/admin` через hosts-override, **один AppPool**, binding `*:80` + FW block +inbound. Развилка адресации confirmed оператором (catch-all+hosts, не per-port). -### Loose end (low priority, НЕ блокер) -- **Portainer stack 20 file — устаревшие STAGING-комменты** (строки 16-17 «Домен: STAGING», - 53 «STAGING-RULE. Cutover: после flip DNS сменить на Host(...)»). Сама `traefik...rule` - (строка 55) уже LIVE, совпадает с label'ом контейнера — функционально нейтрально. При - деплое 8df10ee обновлён только image-line коммент. При следующем full-sync выровнять - Portainer file под git source-of-truth (косметика). +**Task B — on-snolla-vds-migration** (⚪ ready, blocked by A): +on.snolla.com (siteId `B9ECDB50-2B93-4CE5-B238-A9918B3F9CF7`, alias `on`, Title "Internal Site", +culture `en`) с RUVDS IIS → VDS Node snolla-app 0.42.1. Исходников нет → реконструкция +Liquid-шаблонов из боевого `https://on.snolla.com/` + локального админа (Task A). По рецепту +`tandemmebel-vds-deploy-runbook` (cutover) + `snolla-live-prod-inplace-image-bump` (gate). + +### Addresses + siteIds (из MoreThenCms DB, read-only tedious-проб, SA из `pass mssql-vds/sa-password`) +Скрипт `.tmp/dbprobe-sites.mjs` (gitignored). Адреса = `.snolla.com/admin`: +- tandemmebel.snolla.com (tandemmebel.ru, 78080707-F6E0-4330-BA30-7922354C2CEF) +- labtools.snolla.com (labtools.ru, D375C419-D787-4FCC-8934-A3B9DC951006) +- labtoolspro.snolla.com (labtools.pro, 663F9410-A6CC-4651-9A5C-62844A313957) +- emspb.snolla.com (emspb.ru, 96EBC481-D26A-47BE-B660-13D49E7D0A61) +- kupimknigi.snolla.com (kupimknigi.spb.ru, E924A354-0377-4E1E-80C6-2EB0194AA55F) +- on.snolla.com (on.snolla.com, B9ECDB50-2B93-4CE5-B238-A9918B3F9CF7) ## Recent commits -- fe8e5882 meta(tasks): close [tandemmebel-deploy-drop-fb-tw-gplus-buttons] in OpeItcLoc03/admin -- 632c843f deploy(tandemmebel): 8df10ee LIVE — drop FB/Twitter/Google+ share buttons -- 94e5d77c meta(tasks): create [tandemmebel-deploy-drop-fb-tw-gplus-buttons] in OpeItcLoc03/admin -- 7e02d611 docs(wiki): vds-kzntsv disk cleanup 94%→74% + container-log rotation guard -- 8230f891 / 2e180029 meta(tasks): vehicles-loader-redeploy-per-group-rate-diff (create + update) -- 135da254 chore: gitignore .zcode/ +- b1b0092c design(snolla): local .NET admin restore + on.snolla.com VDS migration +- a02c4b86 wiki: ingest de-vds-3xui source chronicle + gitignore .tmp/.tasks/.lock +- 543ded79 wiki: de-vds-3xui real RF-client confirmed ## Open треки | Трек | Готовность | Entry-point | |---|---|---| -| vehicles-loader 0.4.1 runtime verify | 🔴 active — deployed, verify pending | После **07-14 06:21 MSK**: SSH `new.stostayer.ru:20435` (victor, креды `pass stostayer/client`), проверить новый `importRun` `status=ok` + `counts.serviceGenerationRate={replaced:<сотни>, skipped:<~41k>}`, `serviceModificationRate={replaced:<сотни>, skipped:<~5k>}`, `duration < ~93 мин`. Если `replaced` ~44k/6.7k — образ из старого кода (но code-verify уже GREEN: rateDiff.js/replaceGroup.js в образе есть). Откат: `docker tag docker.stostayer.ru/vehicles-loader:0.4.0 vehicles-loader:latest`. User сказал «завтра посмотрим вместе». | -| books-vds → vds-kzntsv консолидация | оценено, НЕ хватает ресурсов | RAM: .94 free 1.7 GiB (swap=0) vs books 2–3+ GiB (на .133 уходит 3.3 GiB в swap). Диск: .94 было 11 GiB free (94%), после чистки 39 GiB; books тащит ~15–20 GiB. CPU хватает (6 ядер idle). Решение за user. | -| ntfy push.kzntsv.site cert-pinning | починено на телефоне (pin убран) | Повтор при каждом LE-renewal ~90д, если pin снова включат. Сервер НЕ трогать. | +| snolla-local-admin-restore (Task A) | ⚪ ready — ждёт SSH RUVDS verify + DB-креды | `.tasks/snolla-local-admin-restore.md`; spec §Task A. Шаг 0: read-only SSH RUVDS (`pass show ruvds-iis/full-env`) — проверить C:\sites\snolla\ + MinIO drop-in в Web.config. | +| on-snolla-vds-migration (Task B) | ⚪ ready, blocked by A | `.tasks/on-snolla-vds-migration.md`; spec §Task B. | +| vehicles-loader 0.4.1 runtime verify | 🔴 active — deployed, verify pending (просрочено с 07-14) | SSH `new.stostayer.ru:20435` (victor, `pass stostayer/client`), проверить importRun status=ok + counts. Откат: `docker tag .../vehicles-loader:0.4.0 vehicles-loader:latest`. | +| books-vds → vds-kzntsv консолидация | оценено, НЕ хватает ресурсов | RAM/disk на .94 не лезет. Решение за user. | ## Спроси user'а - -- **books-vds консолидация**: свежий Ubuntu-VDS под books, апгрейд тарифа .94 (Rusonyx: +RAM/+disk), или оставить на EOL CentOS 7 (.133)? Оценка этой сессии — на .94 не лезет (RAM+диск). -- **Durable build-fix в stostayer.new** (cross-project): `packages/vehicles-loader/Dockerfile` — добавить `ENV VERDACCIO_TOKEN=unused` в deps-стейдж (сеть off → токен не нужен) + закоммитить root `.dockerignore`. Сейчас build ломается на unresolved `${VERDACCIO_TOKEN}` (committed в `393b7d3` после Dockerfile) и тащит жирный контекст (node_modules/.worktrees). Делаем коммит в `victor/stostayer.new`? +- **Spec review** — `b1b0092c` / `.wiki/concepts/snolla-local-admin-and-on-snolla-migration-design.md`. Ок? После approve → writing-plans (план в `.tasks/.md` по дисциплине, не docs/superpowers/). +- **Task A first step:** дать добло на read-only SSH RUVDS (verify source + MinIO state)? +- **Open Q из spec:** (1) имя репо для on.snolla.com (`victor/on-snolla`?); (2) MoreThenCms DB app-аккаунт + путь в `pass` (SA есть `mssql-vds/sa-password`, но админ юзает app-аккаунт — завести/найти?); (3) включать все ~60 сайтов в локальный админ или только тираж(5)+on.snolla.com. +- **books-vds консолидация**: свежий VDS / апгрейд .94 / оставить на EOL CentOS .133? ## Не делать (preemptive guards) - -- **НЕ retry-push** в `docker.stostayer.ru` — один push, сбой → стоп + к человеку. Инцидент 2026-06-17: retry-шторм забанил VPN-IP, весь дом→хост :443 лёг. -- **НЕ деплоить vehicles-loader** из кода без rateDiff (`85ca936`). Перед deploy — verify что в образе есть `src/sync/rateDiff.js` (rateSetsEqual) + `src/sync/replaceGroup.js` (replaceRatesForGroups). -- **НЕ чинить ntfy-пин на сервере** — это client-side (телефон). Сервер: cert валиден, ntfy healthy, `/healthz` 200. -- На **vds-kzntsv НЕ netplan** (anti-pattern, outage 2026-05-28). -- **НЕ сжимать** books-стек на .94 — RAM/disk не хватает (оценено этой сессией). -- **pull перед работой** — admin чист (local==origin `7e02d611`); stostayer.new на `b86ed40`. Не забывать pull (user поправлял этой сессией). +- **НЕ SSH-action на RUVDS без добла** — user уже раз отверг tool-call на RUVDS-SSH (хочет явное подтверждение); read-only verify — только после ок. +- **НЕ деплоить vehicles-loader** из кода без rateDiff (`85ca936`). Verify `rateDiff.js`/`replaceGroup.js` в образе. +- **НЕ retry-push** в `docker.stostayer.ru` (бан VPN-IP, инцидент 2026-06-17). +- **НЕ netplan** на vds-kzntsv; **НЕ сжимать** books на .94 (RAM/disk). +- **НЕ ставить URL Rewrite rule** локальному админу (нет traefik → `:port` leak, см. cms-server-port-leak-fix). +- **pull перед работой** — admin на master `b1b0092c` (local, не push'нуто — спросить перед push по Rule 4). ## Memory updates за сессию - -- **new**: `ntfy-android-cert-pinning-breaks-on-le-renewal.md` — LE-renewal (~90д) ломает pinned ntfy-клиент («fingerprint mismatch / connection lost»); фикс на телефоне (re-pin или отключить pinning → system CA), сервер не трогать. -- **wiki**: `entities/vds-kzntsv.md` — Known issues += 2026-07-13 disk cleanup (контейнерные логи 19 GiB, owncloud 13 GiB) + logrotate guard (`/etc/logrotate.d/docker-containers`, copytruncate 200M hourly) + hourly cron; Open issues — GC-cron срочность снижена (94%→74%), container-log rotation DONE. \ No newline at end of file +- (пока не сохранял — если design approved, возможно memory: «SNOLLA admin addressing = .snolla.com/admin catch-all IIS, siteId из dbo.Sites by alias»; и обновить windows-recovery-host entity — планируется восстановление snolla IIS-сайта локально) \ No newline at end of file