Образ registry.kzntsv.site/admin-api:ca0dfa3 (ESM-фикс). Stack 25, proxy-сеть, env 8/8 (DATABASE_URL/JWT_SECRET/S3), mem_limit 512m, traefik + LE. Live GREEN: /health ok, ключ pilorama98 проходит, LE-серт выдан. Coord-таска обновлена (Number resolved, staging, deploy). Co-Authored-By: Claude <noreply@anthropic.com>
9.0 KiB
9.0 KiB
coord-loader-admin-api-client
Goal
Я (admin-сессия) — координатор таски у pilorama98.ru
loader-migrate-to-admin-api-client: перевод apps/loader с прямого DB-доступа
(@snollajs/data, MSSQL MoreThenCms) на типизированный @snolla/admin-api-client
(разрабатывает snolla, таска admin-typed-api). Vitya назначил 2026-08-04.
Роль
- Координатор миграции загрузчика (pilorama98): отслеживать готовность snolla (клиент + API Key + ответы на open questions), маршрутизировать, разблокировать, эскалировать застой.
- Ревьюер snolla (назначен vitya 2026-08-04): код
admin-typed-api— S1 auth/keys, S2@snolla/admin-api-client, S3@snolla/admin-schema-gen. Канал: snolla шлёт ревью-запрос в мой inbox (commit/hash + что смотреть), я ревьюю и возвращаю финайдинги. Ревью S2 — до публикации в Verdaccio (pilorama98 завязан на клиент). - Ревьюер загрузчика pilorama98 (назначен vitya 2026-08-04): код миграции —
ApiCatalogStore, contract-tests, identity-тест. Канал: pilorama98 шлёт commit'ы + что смотреть; фокус — identity (API vs DB одинаковое состояние) и byte-for-byteContent.
Ревью-чекпойнты (snolla)
- S2 + S3 — ревью DONE, F1 CONFIRMED 2026-08-04T14:48Z, publish разрешён.
Фиксы
f9714f2+ddf47a1: F1a server-guardFields.length>0, F1b typed-save без Fields при пустых defs (Content byte-for-byte), F3 джанкции в$transaction(tx прокинут), F5 pascal-сан, F6 no-clobber. Пере-ревью + тесты: admin-api 13/13, schema-gen 19/19, client 19/19+tsc0, остатков[TEST]в проде 0. Нюанс F2: variants?sku=✅, Sku в products search-OR не добавлен (не блокер; loader матчит продукты списком/ProductId). Жду: publish 0.2.0/0.1.0 + API Key. - S1 auth-плагин (PAT+cookie-JWT) + keys-эндпоинты — после завершения
Текущий статус
- 🔵 2026-08-04T15:26Z — деплой admin-api: стек 25 создан, блокер в Dockerfile.
- Образ
admin-api:e1540deсобран+запушен. Стек 25 (admin-api.vds.kzntsv.site, env 8/8, proxy-сеть, mem_limit 512m) создан. Контейнер крашится: ESMERR_MODULE_NOT_FOUNDdist/plugins/prisma — 32 файла extensionless импортов + tsconfigmoduleResolution:bundler. Фикс маршрутизирован snolla (15-26-16Z): добавить.js+ node16, или bundle esbuild. Staging 4732 (tsx) работает — identity не блокируется. Жду sha фикса → пересборка + PUT.
- Образ
- 🟢 2026-08-04T15:18Z — staging admin-api перезапущен с Number-fix (911b9b7). Write-probe сам: Number 424242→424242 ✅, throwaway удалён. pilorama98 запускает identity-прогон (bump 0.2.1 + Number в ApiCatalogStore, 104/104).
- 🟢 2026-08-04T15:14Z — Number РЕШЁН, identity-тест разблокирован.
- snolla:
Numberдобавлен в products/save (911b9b7/6fe1088, client 0.2.1): create — присланный иначе findNextNumber, update — ставит если прислан. Тесты 23/23+19/19, чисто. - pilorama98: F1 (apiKey→local.json gitignored)+F2 (TypeId из чтения) пофикшены (4372c59, 103/103). Собирают identity-тест на staging (bump 0.2.1 + Number в ApiCatalogStore).
- Ротация ключа (был в истории git fb07849): рекомендация — принять риск (приватный Gitea), решение за vitya.
- Деплой: жду Dockerfile от snolla.
- snolla:
- 🟢 2026-08-04T15:12Z — ревью ApiCatalogStore DONE (тесты 102/102).
- F1 🔴 API-ключ
sk_6a83…закоммичен вapps/loader/config/default.json(трекаемый) — нарушение acceptance №4; фикс:config/local.jsongitignored + ротация (по решению pilorama98). - F2 🟡
updateProductхардкодитTypeId(расходится с DB-путем для др. типа); F3 🟡 get+save на джанкции (перф). Content byte-for-byte/джанкции/пагинация/store-selection ✅. - Number: зазор подтверждён, вопрос у snolla (15:06Z).
- F1 🔴 API-ключ
- 🟢 2026-08-04T15:06Z — staging write-probe: ок, но зазор
Number.- pilorama98: products/save Content byte-for-byte ✅, variants/save ✅. ⚠️
Numberсерверно-манится (saveSchema без Number, create = findNextNumber max+1) → identity по Number ломается (лоадер пишет явно). Вопрос маршрутизирован snolla (15-06-26Z), рекомендация — добавитьNumberв save-schema. Если server-managed → решение vitya (ослабить identity по Number / гибрид). - Деплой-план согласован с snolla (14-56-38Z): Dockerfile — snolla коммитит,
оркестрация/деплой — я; хостнейм
admin-api.vds.kzntsv.site; один общий инстанс; env JWT_SECRET (реальный)/DATABASE_URL/S3; mem_limit 512m.
- pilorama98: products/save Content byte-for-byte ✅, variants/save ✅. ⚠️
Хронология
- Staging admin-api поднят
127.0.0.1:4732→MoreThenCmsStaging(свежая копия MoreThenCms на vds mssql, restore из COPY_ONLY-бэкапа, snolla=db_owner, логи сжаты). Ключ pilorama98 проходит (scope read-write). Письмо pilorama98 14-59-32Z (staging + роль ревьюера). - Лог-чистка (вопрос vitya): MoreThenCms 10ГБ→1ГБ (SIMPLE recovery + SHRINK, кап-риск Express устранён), staging log 10ГБ→259МБ. Диск 35ГБ свободно.
- Деплой-план согласован с snolla (14-56-38Z): Dockerfile — snolla коммитит,
оркестрация/деплой — я; хостнейм
admin-api.vds.kzntsv.site; один общий инстанс; env JWT_SECRET (реальный)/DATABASE_URL/S3; mem_limit 512m. - Инцидент snolla: cleanup-live-keys
[CLIENT-VERIFY]— LIKE character class снёс ключ, перевыпущен + скрипт починен (7eb1bb8).
Хронология
- Решение vitya: расширять snolla (AskUserQuestion). snolla подтвердила независимо — variants/categories/tags + джанкции в текущем скоупе, реализует после ядра кодгена.
- Контракт от snolla relay'нут pilorama98 (14-29-11Z): query (GET list?scope&skip&take /
POST list;
{success,data,total}), write (save=upsert по entity-id, delete по id, идемпотентно; 400/404/500),page.contentbyte-for-byte только приContent(неFields[]), auth Bearersk_…+ POST /api/keys, base URL per-env. Джанкции = reconciliationCategoryIds[]/TagIds[]в products/save. - pilorama98: prep разблокирован (seam-рефактор
DbCatalogStore+ contract-tests-каркас), таска 🔵 до publish + ключ. - snolla: ревьюер-роль подтверждена; S2 publish держится до моего ревью.
- Жду: publish S2 + API Key; пинги с commit'ами на ревью (S1 auth/keys, S2 клиент, джанкции).
Открытый вопрос оператору (vitya) — РЕШЁН 2026-08-04
Расширять snolla на variants/categories/tags (+ джанкции). Выбрано vitya, подтверждено snolla. Полный разблок миграции loader'а; acceptance №1 pilorama98 цел.
Хронология
- 2026-08-04: ApiKeys миграция прогнана на обоих боевых SNOLLA (vds
MoreThenCms- stostayer
stostayer) — таблицаdbo.ApiKeys+ индексы + FK. Это предпосылка S1 auth-плагина / keys-эндпоинтов snolla. Письмо snolla отправлено (snolla/.claude-inbox/2026-08-04T13-29-54Z-admin.md).
- stostayer
- 2026-08-04: назначен координатором, письма-интро обоим проектам.
Связанное
- Таска pilorama98:
~/projects/pilorama98.ru/.tasks/loader-migrate-to-admin-api-client.md(🔵 blocked на snolla; open questions там). - Таска snolla:
~/projects/snolla/.tasks/admin-typed-api.md(S1 auth — после DDL).