diff --git a/.tasks/NEXT_SESSION.md b/.tasks/NEXT_SESSION.md index c16eef1..16dde5a 100644 --- a/.tasks/NEXT_SESSION.md +++ b/.tasks/NEXT_SESSION.md @@ -1,11 +1,54 @@ --- -_last_updated_: 2026-07-31T03:20:00Z -session_id: 2026-07-31-maljarka-restore +_last_updated_: 2026-07-31T10:00:00Z +session_id: 2026-07-31-maljarka-restore-variantcache-labtools prev_session_id: 2026-07-30-tandemmebel-v3-cutover --- # Next session handoff +## Эта сессия — maljarka restore + variant-cache fix + labtools cylindrical (расследование). ЗАВЕРШЕНА + +### 1. maljarka.tandemmebel.ru восстановлен ✅ — 7-й сайт тиража (стек 23) LIVE GREEN +User: «проебали сайт maljarka.tandemmebel.ru». Root cause: .NET MoreThenCms tenant, **не входил в v3 тираж**, остался на RUVDS IIS → потерян при **decomm RUVDS 2026-07-21** (DNS перебросили на VDS, но Host-правила+snolla-app с siteId `A2476738` не было → traefik 404; аудит 21.07 «VDS=200» = false-positive с локального IIS воркстейшна). Восстановлен как Node snolla-app 0.43.2 (клон on.snolla.com → `victor/maljarka.tandemmebel.ru` `7f03d67`, layout.liquid byte-identical рендеру .NET-admin 43730B sha256-match, Reversal тема уже в MinIO, regen yarn.lock под переименованный workspace). Portainer стек **Id 23**, env 8/8 shared, mem_limit 512m, LE issued (CN=maljarka.tandemmebel.ru, до Oct 29). Live smoke GREEN. **Тираж 7/7.** Runbook `.wiki/concepts/maljarka-vds-deploy-runbook.md`. Memory `maljarka-lost-on-ruvds-decomm-restored`. + +### 2. variant-cache bucket fix ✅ — shared v3-регрессия (остров sharp-images на 6 сайтах) +maljarka `#portfolio` фото 500 → root cause: v3 minio-split перевёл сайты на vds MinIO 2025, но **`variant-cache` bucket не создали там** (был на books-vds 2020). snolla sharp-pipeline (`variantCache.js` DEFAULT_NAMESPACE=`variant-cache`, `storage.js: bucket=storageClient`) → NoSuchBucket → 500 на ALL sharp gallery-images **всех 6 v3 сайтов с 2026-07-30** (gate проверял theme CSS из `themes` bucket (themeFiles, без sharp), не gallery-image URLs — пропустил). Fix: `mc mb vds/variant-cache` (пустой, кэш регенерируем — миграция старых entries НЕ нужна). maljarka portfolio 34/34 → 200 image/webp, tandemmebel logs NoSuchBucket ушли. **minio-split Track A gap.** Memory `variant-cache-bucket-missing-on-vds-2025`. Runbook `maljarka-vds-deploy-runbook` §Гочи + `minio-split-cutover-runbook`. + +### 3. labtools.ru/products/press-forms/cylindrical — пустые product-cards. РАССЛЕДОВАНИЕ → workshop (victor/snolla) +User: «куда картинки делись?» на cylindrical. Найдено: +- **НЕ v3-регрессия** — v2 (0.42.1, образ `566d41c`) тоже отдаёт пустые карты (throwaway-staging проверил). +- **Pre-existing template + snolla-VM баг**: `cylindrical.liquid` — единственный шаблон использует accessor `{% assign product = product_link.product.item %}` (Linked-item viewModel, .NET-паттерн). Остальные 8 шаблонов (accessories/presses/milling_bowl/pet_film/…) используют прямой `{% for product in product_list %}` → `product.path` (работает). +- Эмпирически: прямой `product` даёт `title` («Пресс-форма»), но `path`/`list_image` пустые; `product_link.product.item` даёт всё пусто. Из кода `catalogCategory.products` → `catalogProductList` → `getProductViewModel` напрямую возвращает product-VM с `path`/`title`/content-полями (`list_image` — content-field из `fillViewModel`). +- **Вывод user'а (владельца архитектуры): snolla неправильно рендерит viewModel типа Linked item.** Фикс на стороне workshop (victor/snolla) — не infra. +- **Мой фикс (прямой `product`) откат** — коммиты `5ae87fd` (фикс) + `ec9eb1e` (revert) в `victor/labtools.ru` master, gitea чист (оригинал `0dc0b4e`). Prod stack 17 НЕ тронут (0dc0b4e, healthy). Staging-контейнер + образ 5ae87fd вычищены, `latest` retag на 0dc0b4e. +- **Handoff workshop:** snolla Node не резолвит Linked-item accessor `product_link.product.item` (работал в .NET). Воспроизведение: `https://labtools.ru/products/press-forms/cylindrical` — product-cards с пустыми href/src (v2 тоже). Каталог=Catalog (не Store). `.NET-шаблон был правильный` (по владельцу) — snolla должен поддержать Linked-item VM. Файл-якорь: `victor/labtools.ru/apps/web/views/cylindrical.liquid:30-31`. + +### Спроси user'а +- maljarka восстановлена, variant-cache починен, labtools-cylindrical передан workshop (victor/snolla). Что дальше? Открытые треки: MinIO split Track A (books-vds 2020→2025 full migration — variant-cache bucket создан, остальное TODO). `on-snolla-vds-migration` task в .tasks помечен ⚪ ready, но on.snolla LIVE с 07-20 — обновить на closed. + +### Не делать (preemptive guards) +- **decomm-audit smoke = targeted host/VDS**, не воркстейшн с локальным catch-all (false-positive «VDS=200»). +- **yarn.lock workspace-rename** — переименование root/app package требует regen yarn.lock. +- **variant-cache bucket** — при minio endpoint-flip проверять ВСЕ runtime-buckets (`galleries`/`themes`/`assets`/`variant-cache`); gate должен хитить gallery-image URL (sharp), не только theme CSS. +- НЕ PS для Portainer (кириллица), НЕ push в docker.stostayer.ru:443, НЕ git clone на VDS (archive+scp). Креды → pass. + +### Коммиты сессии (.admin) +- `494b1010` feat(maljarka): restore as 7th snolla site (stack 23) — compose+runbook+STATUS+index +- `22f9748b` meta(handoff): maljarka restore session +- `d82361d1` fix(minio-split): create variant-cache bucket on vds 2025 +- (этот хэндофф) + +### Коммиты victor/labtools.ru (расследование, оба откат) +- `5ae87fd` fix(cylindrical) — откат `ec9eb1e` (gitea master = оригинал 0dc0b4e) + +### Memory updates сессии +- `maljarka-lost-on-ruvds-decomm-restored` +- `variant-cache-bucket-missing-on-vds-2025` + +--- + +## (prev) maljarka restore — см. выше (этот же файл, секция выше) + ## Эта сессия — восстановление maljarka.tandemmebel.ru (7-й сайт тиража). ЗАВЕРШЁН ✅ — LIVE GREEN User: «Мы где-то в тираже или раньше проебали сайт https://maljarka.tandemmebel.ru/. Давай найдем и попробуем восстановить». Полный тираж (по on-snolla Task B паттерну). diff --git a/.tasks/STATUS.md b/.tasks/STATUS.md index 0d93549..b127a68 100644 --- a/.tasks/STATUS.md +++ b/.tasks/STATUS.md @@ -1,4 +1,5 @@ # Admin Task Board +_Updated: 2026-07-31 (3) — 🔵 **labtools.ru /products/press-forms/cylindrical — пустые product-cards → handoff workshop (victor/snolla).** User: «куда картинки делись?». НЕ v3-регрессия (v2 0.42.1 образ `566d41c` throwaway-staging тоже пустые). `cylindrical.liquid` единственный использует Linked-item accessor `product_link.product.item` (.NET-паттерн), остальные 8 шаблонов — прямой `product` (работает). Вывод владельца архитектуры: **snolla неправильно рендерит viewModel типа Linked item** — фикс на стороне victor/snolla. Мой фикс (прямой `product`) откат: `victor/labtools.ru` коммиты `5ae87fd`+`ec9eb1e`(revert), gitea master = оригинал `0dc0b4e`. Prod stack 17 НЕ тронут (healthy). Воспроизведение: `https://labtools.ru/products/press-forms/cylindrical` — cards с пустыми href/src. Файл-якорь: `victor/labtools.ru/apps/web/views/cylindrical.liquid:30-31`. См. NEXT_SESSION.md._ _Updated: 2026-07-31 (2) — 🟢 **variant-cache bucket fix.** maljarka portfolio фото 500 → root cause: v3 minio-split перевёл сайты на vds MinIO 2025, но `variant-cache` bucket не создали там (был только на старом minio.kzntsv.site/books-vds 2020). snolla sharp-pipeline (`variantCache.js` DEFAULT_NAMESPACE=`variant-cache`) → NoSuchBucket → 500 на ALL sharp gallery-images ВСЕХ 6 v3 сайтов с 2026-07-30 (тихо — v3-gate проверял theme CSS из `themes` bucket (themeFiles, без sharp), не gallery-image URLs). Fix: `mc mb vds/variant-cache` (пустой, кэш регенерируем). После: maljarka portfolio 34/34 → 200 image/webp, full-size 920x600 200, tandemmebel logs NoSuchBucket ушли. **minio-split Track A gap** — при endpoint-flip проверять ВСЕ runtime-buckets (`galleries`/`themes`/`assets`/`variant-cache`), и gate должен хитить gallery-image URL. Memory `variant-cache-bucket-missing-on-vds-2025`._ _Updated: 2026-07-31 — 🟢 **[maljarka-vds-restore] CLOSED.** `maljarka.tandemmebel.ru` восстановлен как 7-й сайт тиража snolla на VDS. Сайт был потерян 2026-07-21 при декоммишне RUVDS IIS (единственный публичный хост maljarka; в v3 тираж не входила, осталась на RUVDS). DNS перебросили на VDS, но `Host()`-правила + snolla-app с siteId `A2476738` не было → traefik 404. Аудит 21.07 «VDS=200» = false-positive с локального IIS воркстейшна. **Контент цел** в shared `MoreThenCms` DB (5 Pages, 4 StaticPages, тема Reversal `4881FC7F` уже в MinIO themes bucket). Восстановление = клон `victor/on.snolla.com` → `victor/maljarka.tandemmebel.ru` (snolla 0.43.2/aws-sdk v3), swap siteId `A2476738`+siteUrl, `layout.liquid` **byte-identical** рендеру локального .NET-admin (43730B, sha256 match, `{{ item.content }}` inline — content пуст), error-страницы Reversal-бренд. Build на VDS (`7f03d67`, digest df4e3642, regen yarn.lock под переименованный workspace), throwaway-staging :5081 gate GREEN (byte-parity `/`, 4 staticpages 200 sizes==DB, theme asset 200 103320B, unpublished 404 parity), Portainer стек **Id 23** (node create-stack, НЕ PS — кириллица), env 8/8 shared, mem_limit 512m, `Host(maljarka.tandemmebel.ru)`. DNS уже VDS → LE issued on first hit (CN=maljarka.tandemmebel.ru, YR1, до 2026-10-29). Live smoke GREEN: `/` 200 43730B byte-identical, title «Малярка от Тандеммебель», 4 staticpages 200, theme asset 200, robots/sitemap 200. **Тираж 7/7**: labtools(17)/emspb(18)/labtools-pro(19)/tandemmebel(20)/kupimknigi(21)/on-snolla(22)/maljarka(23). Runbook: `maljarka-vds-deploy-runbook`. Rollback = образ-тег в registry (RUVDS DECOMM, не DNS)._ _Updated: 2026-07-20 (2) — 🟢 **[snolla-local-admin-restore] CLOSED.** Локальный .NET-админ поднят: selective tar-copy `C:\sites\snolla\` ~100MB с RUVDS (исключил stale App_Data 8.76GB — assets/galleries/themes теперь в MinIO), Web.config уже → `mssql.kzntsv.site,1433` Catalog=MoreThenCms (user `snolla`) + MinIO S3 drop-in (ключи реальные, placeholder_count=0). Elevated setup `scripts/local-snolla-admin-restore/setup-local-snolla-admin.ps1` (ASCII-only, PS5.1 BOM-less-safe): AppPool `snolla` (.NET v4.0, AppPoolIdentity, recycle@200MB), IIS site `*:80` catch-all, ACL `IIS AppPool\snolla:(OI)(CI)(M)`, hosts-override `127.0.0.1 <6 aliases>.snolla.com`, FW block inbound 80. Smoke GREEN: `tandemmebel/labtools/labtoolspro/emspb/kupimknigi/on .snolla.com/admin/account/login` → 200, реальная MoreThenCms-логинформа (`