Files
admin/.tasks/NEXT_SESSION.md

6.8 KiB
Raw Blame History

Updated: 2026-08-23 — сессия деплоя books master-a448cad (фикс embed-api роутов).

NEXT_SESSION

Последняя сессия (2026-08-23, .admin, вечер)

Деплой books-web master-a448cad ЗАВЕРШЁН (фикс удаления picking-list, оба тенанта). Контекст: agenda-remove master-7ffb560 удалил 8 live embed-api роутов → DELETE /api/fbs/pickingLists/:id 404'ил. a448cad вернул их.

Проделано: локальная сборка по ранбуку (git archivedocker build --secret verdaccio_token → docker save даёт OCI-структуру сам, index.json+blobs/ → curl-заливка 21 блоба 676МБ → amd64-манифест в master-a448cad+master, digest 6877d24f…); Portainer PUT стеков 24 (books-web/slovo, bookva.kzntsv.site) и 46 (bookva-web, bookseller.kzntsv.site) — image + DEPLOY_AT bump, env не тронуты; оба контейнера Up на a448cad.

Смоук оба тенанта: DELETE pickingList → {taskId} (slovo #428 — юзеровский, bookva #220), GET /api/fbs/tasks/<uuid> → success, run в sched daemon (docker exec node fetch localhost:3031/api/runs) → succeeded, лист пропал из списка. Отчёт books: .agents/inbox/2026-08-23T21-03-33Z-admin.md (in_reply_to 23-40Z).

Открыто

  • 🟡 books createPickingListPdf (письмо 00:20Z bug-report): auth-фикс сделан (slovo rename docker-config→config.json, bookva ок), образ перезалит в docker-формате (был битый OCI index без child, registry 2.8.3). Смоук вскрыл 2 конфиг-блокера за books-агентом: (1) API_TOKEN плейсхолдер в VDS tasks.json + нет production-конфига daemon в /opt/books/sched; (2) chrome.kzntsv.site → мёртвый 94.19.247.14, browserless/chrome без публичного роута, docker-runner без сети. Отчёт: books inbox 22:00Z. Ждём их фикса → пере-смоук.
  • ⚠️ git push .admin НЕ прошёл (коммит c40f2f41 локально): локальная сеть — getaddrinfo не резолвит kzntsv.site (даже registry), прокси 10808 виснет на git.kzntsv.site, при этом сайт глобально жив (200 с books-VDS, --resolve → 200). Решение ждёт юзера: hosts-запись (нужна админка) или починка прокси/DNS.
  • 🟢 books: ложная тревога yarn.lockyarn install --immutable зелёный (их письмо 19:27Z), чистить нечего.
  • 🟢 Функциональный смоук ЗАКРЫТ (письмо books 23:58Z, event: closed): юзер прогнал создание листа подбора, upload-history, карточку товара — все 8 восстановленных роутов работают на обоих тенантах. Инцидент DELETE-404 закрыт полностью. Урок записан books в их wiki (embed-api-into-web.md + log): web/server/api = live-API, не удалять «дубли» при рефакторинге api-пакета.
  • graphify ci.yml (GitHub Actions, не Gitea) — проверить/решить при случае.

Уроки сессии (предложить wiki-ingest)

  1. Portainer PUT /api/stacks/{id} синхронный и тянет образ ВНУТРИ запроса (676МБ через интернет) — клиентский таймаут (90с) рвёт ожидание, но операция доделывается server-side; пере-PUT не нужен, проверяй контейнеры через /api/endpoints/1/docker/containers/json. В python urllib ставь timeout 900+.
  2. /admin/scheduler/** (Nuxt proxy → sched daemon) гейтится requireAdmin (JWT isAdmin) — ?token= API-ключ не проходит (403). Для проверки sched: docker exec <sched-container> node -e 'fetch(...)' (curl в контейнере нет).
  3. docker save на этой машине (Docker 29) сразу даёт OCI-layout (index.json + blobs/sha256/) — конвертация не нужна; амд64 child manifest — в index.jsonblobs/sha256/<index-digest>.

Директивы юзера (vitya) — навсегда:

  1. Gitea Actions — НЕ ИСПОЛЬЗОВАТЬ вообще. Удалены и запушены workflow: books (build/deploy/build-tools/build-sched-daemon) + vds-ops-mcp (там был реальный автобилд on: push).
  2. Раннер на books-vds выпилен полностью: systemd gitea-runner.service удалён, /opt/gitea-runner стёрт, job-контейнеры GITEA-ACTIONS-TASK-* удалены, юзер gitea-runner удалён. vds-kzntsv чист. Run 587 заморожен.
  3. Сборка образов — только локально на этой машине (docker build + curl-upload в registry). Деплой — прямыми Portainer PUT (не workflow).

Wiki-ingest кандидаты (предложить юзеру)

  1. .wiki/concepts/books-vds-no-gitea-actions.md — решение юзера: Actions выпилены, сборка локальная; процедура локальной сборки (docker build + curl-upload блобов, OCI-индекс → amd64 child manifest). [уже в index/log]
  2. .wiki/concepts/registry-traefik-buffering-gotcha.md — большие (>1.5GB) chunked-пуши через traefik (buffering middleware 4GB) умирают «Client Closed Request» на books-vds (RAM 3.9GB, OOM); обход: curl монолитными PUT / POST+PATCH+finalize с drop_caches. [уже в index/log]
  3. Находка: custom-environment-variables.json должен жить в примонтированных конфиг-дирах, иначе config.get('sched') THROW — env бесполезен без mapping-файла. [уже в index/log]
  4. (эта сессия) mappa git-index verify на проде невозможен без чек-аутов — verify = инструмент воркстейшна; прод-импорт из файлов: DATABASE_URL внешний + uselibpqcompat=true&sslmode=require (pg8 трактует require как verify-full — нужен libpq-compat).

Не делать

  • Не диспатчить никакие Gitea Actions (раннер мёртв, workflow удалены — если где-то остались — выпиливать).
  • Не собирать образы на VDS/раннере — только локально.
  • Не трогать traefik buffering middleware на registry (4GB) без явной отмашки.