meta(handoff): a448cad деплой closed; createPickingListPdf auth+образ починены, 2 конфиг-блокера за books; push c40f2f41

This commit is contained in:
2026-08-24 07:37:23 +03:00
parent c40f2f415c
commit 5105f130a9

View File

@@ -1,23 +1,34 @@
_Updated: 2026-08-23 — сессия деплоя books agenda-remove (#1007#1010)._
_Updated: 2026-08-23 — сессия деплоя books master-a448cad (фикс embed-api роутов)._
# NEXT_SESSION
## Последняя сессия (2026-08-23, .admin)
## Последняя сессия (2026-08-23, .admin, вечер)
**Деплой books agenda-remove ЗАВЕРШЁН**: 6 контейнеров (slovo+bookva api/web/task-runner) на `master-7ffb560`. Образы собраны ЛОКАЛЬНО (docker build + curl-upload блобов), деплой — прямыми Portainer PUT. Отчёт books: mappa inbox id 6185 (19:12Z).
**Деплой 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 локально): локальная сеть — getaddrinfo не резолвит kzntsv.site (даже registry), прокси 10808 виснет на git.kzntsv.site, при этом сайт глобально жив (200 с books-VDS, --resolve → 200). Решение ждёт юзера: hosts-запись (нужна админка) или починка прокси/DNS.
- 🟢 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).
## Открыто
- 🟢 **mappa #1020 `mappa-deploy-git-index-token` ЗАКРЫТА** (2026-08-23, эта сессия): деплой mappa **v0.5.1** (не v0.5.0 — findings #1021#1025 закрыты в 0.5.1, юзер подтвердил) + `MAPPA_GITEA_TOKEN` (read-only токен `mappa-gitindex`, scope read:repository, в pass mappa/full-env). Образ `registry.kzntsv.site/mappa:0.5.1`, стек 26 Portainer (image+env), контейнер healthy. `/gitindex/sync`: 48/61 проектов, 11253 коммита. **Verify на проде невозможен по дизайну** (контейнер без чек-аутов/git, MAPPA_PROJECTS_ROOT пуст) — сходимость подтверждена вручную (rev-list vs индекс: mappa 156=156, snolla 883=883). Прод-импорт из файлов прогнан (таски 865→869, wiki 2595→2599, inbox 2012→2034, счётчики t:1020/s:611/wiki:2601). Письмо mappa (closed) отправлено.
- 🟢 books: **yarn.lock — ложная тревога** (их письмо 19:27Z): `yarn install --immutable` зелёный, 3 ссылки `@agendajs/mongo-backend` легитимны (rollback-путь job-scheduler, код импортит MongoBackend). Чистить нечего; удаление agenda = выпил job-scheduler целиком (к человеку). config-диры принято, урок в их wiki.
- Функциональный смоук (upload-history, POST /fbs/pickingLists, карточка товара) — за books-агентом.
- graphify `ci.yml` (GitHub Actions, не Gitea) — проверить/решить при случае.
## Wiki-ingest кандидаты (предложить юзеру)
1. `.wiki/concepts/books-vds-no-gitea-actions.md` — решение юзера: Actions выпилены, сборка локальная; процедура локальной сборки (docker build + curl-upload блобов, OCI-индекс → amd64 child manifest). [уже в index/log]