Files
admin/.tasks/NEXT_SESSION.md

46 lines
7.7 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.
_Updated: 2026-08-23 — сессия закрыта: деплой a448cad + sched auth/образ + чистка диска vds-kzntsv._
# 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 archive``docker 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 + handoff 5105f130 на origin/master): локальная сеть ожила сама. Урок: getaddrinfo на этой машине флакает на kzntsv.site (прокси 10808), при этом сайт глобально жив — обход через `--resolve` / hosts.
- 🟢 **Чистка диска vds-kzntsv** (алерт провайдера 4.24%): освобождено ~31G (build cache 18.3G, образы 1.9G, verdaccio data-old 6.1G) → свободно 40G (74%). Registry GC НЕ делали: dry-run показал ~2.5МБ реального реклайма (67 eligible, файлы уже удалены прежними GC), риск для OCI-index тегов реален — см. wiki.
- 🟢 books: **ложная тревога yarn.lock**`yarn 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.json``blobs/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).
5. (эта сессия) sched docker-runner: `docker-config.json` НЕ читается docker CLI (нужен `config.json` в ${DOCKER_CONFIG}); теги из buildx = OCI index, registry:2.8.3 отдаёт их только на OCI-Accept и host-GC рвёт children (→ «manifest unknown»); фикс: пуш docker schema2-манифеста; VDS tasks.json с плейсхолдерами при отсутствии production-конфига daemon в монтированной дире. Кандидат: обновить registry-kzntsv-auth-model / books-vds-no-gitea-actions.
## Не делать
- Не диспатчить никакие Gitea Actions (раннер мёртв, workflow удалены — если где-то остались — выпиливать).
- Не собирать образы на VDS/раннере — только локально.
- Не трогать traefik buffering middleware на registry (4GB) без явной отмашки.