Fix 2026-07-22: local .NET admin (C:\sites\stostayer\Web.config) S3 providers re-pointed to stostayer MinIO. 3 bugs in original config: wrong creds (AKIAJ2YJP72W6ZHCRE6Q = books-vds root, not stayer_minio), wrong endpoint (minio.stostayer.ru is not S3 API port; prod uses minio-api.stostayer.ru), wrong region (local -> AmazonS3Exception expecting us-west-1). Creds NOT in pass — live in stostayer.new config/default.json. Admin now shares prod storage; manual App_Data mirroring retired. + index.md, log.md. Also carries pending handoff (NEXT_SESSION) + runbook update from 2026-07-21 stostayer-web 0.3.20 deploy session. Co-Authored-By: Claude <noreply@anthropic.com>
6.9 KiB
6.9 KiB
_last_updated_, session_id, prev_session_id
| _last_updated_ | session_id | prev_session_id |
|---|---|---|
| 2026-07-21T14:45:00Z | 2026-07-21-stostayer-web-0320-deploy | 2026-07-21-ruvds-decomm |
Next session handoff
Эта сессия — деплой цен кондиционеров на stostayer.ru (legacy-web 0.3.20). ЗАВЕРШЁН ✅
stostayer.new прислал deploy-request (повышение цен в packages/web/components/ConditionerPrice.vue, commit 4bbdbbf). Задеплоено на прод. По ходу вскрылся и разрешён давний ESM-блокер.
Что сделано
- ESM-блокер подтверждён + разрешён.
packages/web(Nuxt2/CJS) не собирался с master (ESM-миграцияc805e7edata/api + ESM-переиздание snolla). Ретрофит 5require()→dynamicimport()(nuxt.config.js,server/index.js, 2serverMiddleware→CJS). snolla-сессия починила bare-get-баг → опубликовала@snollajs/snolla@0.7.6. Образ0.3.20собран, build+runtime зелёные. - Деплой на прод. Push
0.3.20вdocker.stostayer.ru, redeploy стека 16 (0.3.18→0.3.20, Portainer PUT через SSH:20435 + внутренний IP portainer). Контейнер Up,RestartCount=0, обслуживает реальный трафик. - Verify.
/remont-kondicionerov/{zapravka,diagnostika}-kondicionera→ 200, компонентConditionerPriceрендерит новые цены (4790/3290/6190/3990/7890/4840), старые (4400/2900/5800/7500/4450) ушли. Bare/remont-kondicionerov301→/remont/remont-kondicionerov(CMS, без компонента) — verify по sub-страницам.
Инцидент по ходу (разрешён)
Первый push 3.33GB с VPN → VPN-IP бан у провайдера хоста → :443 к хосту TLS-fail с операторского IP (сайт для остальных работал). Остановил push, оператор убрал VPN, resume-push добил остаток малым egress → без повторного бана. Урок: единичный large-push тоже триггерит бан (не только retry-storm). Memory stostayer-push-ban-single-large-push.
ОСТАЁТСЯ (follow-up)
- 🔴 ESM-ретрофит НЕ закоммичен/НЕ запушен в stostayer.new master. stostayer.new-сессия сказала «коммить и пушь ты» (у неё изменений нет локально, ретрофит делался в working-tree .admin-сессии на этой воркстейшн). Commit-message одобрен stostayer.new. Оператор НЕ дал «го» на пуш в эту сессию (Rule 4 — пуш в git-master = outward). → Ретрофит лежит незакоммиченным в
C:/Users/vitya/projects/stostayer.newworking-tree (5 файлов +package.jsonsnolla^0.7.6+yarn.lock+.dockerignore;.yarnrc.ymlвосстановлен в оригинал — чист;.tasks/*не трогать — ими stostayer.new управляет). Следующая сессия: получить «го» оператора →git addретрофит-файлов → commit (message ниже) →git push origin master. НЕ делатьgit checkout/stash/cleanв stostayer.new до коммита — потеряешь ретрофит. Если потерян — реконструируем из образа 0.3.20 (client registry) + ранбука + memorystostayer-web-esm-retrofit-snolla-076.- Commit-message (одобрен stostayer.new):
fix(web): ESM-deps retrofit — require()→dynamic import(), pin snolla ^0.7.6+ body (см. письмоstostayer.new/.claude-inbox/2026-07-21T14-28-00Z-admin.md). - После пуша stostayer.new тянет master + verify
packages/webсобирается.
- Commit-message (одобрен stostayer.new):
- ✅ snolla yank 0.7.5 — DONE. snolla-сессия сняла
@snollajs/snolla@0.7.5с verdaccio (npm unpublish --force), verify: 0.7.x = только 0.7.6,latest=0.42.1 не сбит, exact-0.7.5 консьюмеров не было. Линия 0.7.x полностью закрыта. - Операторский IP 46.151.25.64 может ещё флапать по :443 к stostayer-хосту (бан egress-IP с инцидента) — для оператора; для посетителей сайта ограничений нет. Проходит само.
- Побочная нота (не чинил): vds-ops
ops.docker.logsна контейнереverdaccioвисит 300с (docker-socket-proxy + тяжёлый stdout) — snolla-сессия не смогла взять verdaccio-логи через MCP. Если понадобится独立-verify verdaccio-логов — чинить vds-ops (таймаут/стрим) или грепнуть лог-файл на хосте.
Wiki / memory обновлено
- Ранбук
.wiki/concepts/stostayer-web-deploy-runbook.md: БЛОКЕР→RESOLVED, push-секция (single-large-push gotcha), verify-секция (sub-страницы + smoke→prod-DB gotcha). - Memory:
stostayer-web-esm-retrofit-snolla-076,stostayer-push-ban-single-large-push,stostayer-smoke-hits-prod-db.
Креды/доступы — не менялись
snolla-сессия: commit 63e5c60 (snolla repo, branch fix/snolla-0.7.6-s3-get), 0.7.6 в verdaccio. snolla-задача snolla-074-get-bugfix-republish закрыта (commit 46fe4040 в victor/snolla .tasks).
Open треки
| Трек | Готовность | Entry-point |
|---|---|---|
| stostayer.new закоммитить ESM-ретрофит | ⚪ за stostayer.new | working-tree stostayer.new (5 файлов + lockfile + .dockerignore) |
| snolla yank 0.7.5 | ⚪ за snolla (го дано) | snolla выполнит npm unpublish @snollajs/snolla@0.7.5 --force |
| books-vds → vds-kzntsv консолидация | оценено, не лезет по RAM/disk | За user. |
| MinIO upload-acceptance on.snolla | ⚪ follow-up оператора | из prev handoff |
Спроси user'а
- «го» на коммит+пуш ESM-ретрофита в
victor/stostayer.newmaster (незакоммичен в working-tree, stostayer.new ждёт пуш чтобы подтянуть+verify). Без него следующий legacy-web деплой упрётся в ту же ESM-стену.
Не делать
- НЕ пушить упавший push повторно с того же egress (VPN-ban).
- НЕ коммитить в stostayer.new master без координации с stostayer.new-сессией (их репо, их ESM-стратегия) — я оставил ретрофит в working-tree, они коммитят.
- snolla 0.7.5 yank — за snolla-сессией (го дано, но она исполняет).