Files
admin/.tasks/vehicles-loader-progress-deploy.md

97 lines
7.9 KiB
Markdown
Raw Permalink 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.
# vehicles-loader-progress-deploy
## Goal
Доставить `@stostayer/vehicles-loader` **0.4.0** (прогресс-логирование) на прод клиента и
верифицировать, что `journalctl` во время боевого `sync` показывает движение, а не ~2ч тишины.
Код-сайд готов: progress-logging зашипан в `stostayer.new` master (commit `a74ef73`, bump
0.3.0 → 0.4.0, 24/24 теста зелёные). Это чисто ops-handoff: rebuild образа на той же
схеме, что и 0.3.0 (build здесь → push в registry клиента `docker.stostayer.ru` → host
pull + re-tag), затем дождаться/прогнать sync и снять лог.
Закрывает единственный не-верифицированный acceptance-критерий исходной таски
`stostayer.new/.tasks/vehicles-loader-progress-logging.md` — «journalctl показывает движение»
(остальные 4/5 покрыты unit-тестами; этот по природе требует живого прод-прогона).
## Что нового в 0.4.0 (что должно появиться в логе)
- Фазовые строки: `▶ <phase> — start` / `✓ <phase> — done: N rows, <dur>` для
branches / vehicles / units / delete-sweep.
- Батч-прогресс: ` manufacturers: 18/183 (12s)`, ` units: 5/26 (…)` — авто-шаг ≈ total/10.
- delete-sweep per-model: ` delete-sweep <model>: N disabled` / `0 — выгрузка полная` /
`skip (пустой seen-set)`.
## Pending ops actions
- [x] **Build & push** на dev-машине из корня `stostayer.new` (2026-05-30): образ
`docker.stostayer.ru/vehicles-loader:0.4.0` собран (811MB, digest
`sha256:f2e10b1f090ba47f9b5de83b84f91c5ce827ecaf1e94bc0331f2d6773f85845a`),
`docker login` BA-кредами → `docker push` (общие слои с 0.3.0, докинуты только app-слои).
verdaccio-депы из `.yarn/cache` запеклись при build.
- [x] **На хосте клиента** (ssh `victor@new.stostayer.ru:20435`, docker через `sudo -S`):
`docker pull …:0.4.0` (digest совпал) + `docker tag …:0.4.0 vehicles-loader:latest`.
`:latest` теперь `0f8a4dd46236` = 0.4.0; 0.3.0 (`5407c0563e44`) оставлен под rollback.
- [x] Плановый прогон отстрелял **Sun 2026-05-31 06:21:48 → 07:53:14 MSK** на changed-выгрузке
(не skipped — 1С перезаписала файл в 6:00, checksum разошёлся).
- [x] **Live-verify выполнен (2026-05-31):** журнал показал движение по всем фазам —
`▶ branches/vehicles/units/delete-sweep — start`, батч-прогресс
(`manufacturers: 18/183 … 183/183`, `units: 3/26 … 26/26`), `✓ … done: N rows`,
per-model `delete-sweep … 0 — выгрузка полная`. **НЕ тишина.** `Finished … Deactivated
successfully` = exit 0. `importRun id=4 ok`, `reportJson errors:[]`.
## Acceptance criteria
- Образ `docker.stostayer.ru/vehicles-loader:0.4.0` собран здесь и доступен на хосте клиента,
`:latest` указывает на 0.4.0.
- В `journalctl -u vehicles-loader.service` боевого прогона видно движение по фазам +
батч-прогресс + per-model delete-sweep counts (не тишина после трёх `Total …`).
- Данные залились корректно (`importRun` новый `ok`-ряд), email-отчёт ушёл (попутно
закрывает остаток «живой email-SEND в составе sync» из `vehicles-loader-image-distribution`).
## Decisions log
- 2026-06-01: **прод-подтверждение за 01.06 (опц. follow-up из хендоффа закрыт).** Плановый прогон
06:20:45→07:55:22 MSK, `importRun id=5 status=ok`, `errorMessage=NULL`, exit 0. Progress-logging
показал движение по всем фазам (batch `units 26/26`, per-model delete-sweep `0 — выгрузка полная`).
Counts: vehicles 3884, units 100529, `service updated:103`. **Email реально дошёл до gmail** (user
подтвердил «письмо пришло») — фикс адресата отработал на боевом прогоне, не только на тест-письме.
`generation unmatched:51` стабилен (== id=4 за 31.05) — не регрессия, остаётся follow-up'ом.
- 2026-05-31: **CLOSED 🟢.** Live-verify прогона 06:21→07:53 MSK прошёл (см. Pending ops actions).
Progress-logging работает как задумано. units-фаза = 1h 31m на 100529 rows (узкое место,
кандидат на оптимизацию — follow-up, не блокер). generation `unmatched:51` — глянуть отдельно.
- 2026-05-31: **email-баг найден и починен.** 4-й acceptance («email ушёл») валился молча:
`STOSTAYER_MAIL_TO=site@stostayer.ru` в `/etc/stostayer/vehicles-loader.env` — отчёт слался
сам себе, а не user'у. Отправка отрабатывала успешно (потому прогон и `ok`), адресат неверный.
Фикс: `STOSTAYER_MAIL_TO=vitya.kuznetsov@gmail.com` (бэкап `vehicles-loader.env.bak.20260531`),
`FROM=site@stostayer.ru` без изменений (это и есть SMTP-аккаунт релея `mail.stostayer.ru`).
Доставка подтверждена тест-письмом из контейнера: `ACCEPTED=[gmail]`, `250 queued as 8732C122F18`.
Хвост: в репо `config/default.json` дефолт `to` всё ещё `site@stostayer.ru` (прод перекрыт env) —
опц. выровнять в `stostayer.new`.
- 2026-05-30: **build+push+host-deploy выполнены.** Образ 0.4.0 собран здесь, запушен в
`docker.stostayer.ru`, на хосте pull + re-tag `:latest` → 0.4.0. 0.3.0 retained для rollback.
- 2026-05-30: open question #1 (push кода) снят — `a74ef73` оказался **уже в origin/master**
(`git branch -r --contains a74ef73` → origin/master), дерево чистое. Билдил из чистого дерева,
Rule-4-вопроса нет.
- 2026-05-30: open question #2 (verify-окно) решён user'ом = **ждём natural 06:20** (Sun 31.05),
НЕ форсим baseline-reset. Причина: форс = внеплановое email-письмо клиенту + спурьёзный
ре-импорт; natural-прогон и так = боевой acceptance. Trade-off: verify unattended, в след. сессии.
- 2026-05-30: заведено из `stostayer.new` session по явному указанию (закрыть код-таску
by-inspection, live-verify вынести в .admin как deploy-follow-up).
## Open questions
- [x] ~~Push `stostayer.new` master нужен до build?~~ — нет, `a74ef73` уже в origin/master.
- [x] ~~Где взять changed-выгрузку?~~ — ждём natural 06:21 Sun 31.05 (1С перезапишет файл в 6:00).
## Notes
- Схема деплоя 0.3.0 + обе инфра-гочи (IPv4 DB host; custom `/etc/hosts` для mail-DNS) —
`stostayer.new/.wiki/concepts/client-infra-access.md` + `vehicles-loader-docker-deploy.md`.
- Источник: `stostayer.new/.tasks/vehicles-loader-progress-logging.md` (🟢 closed by-inspection),
commit `a74ef73`.
- Предшественник: `.admin vehicles-loader-image-distribution` (🟢 closed 2026-05-29) — канал
поставки + первый боевой прогон 0.3.0.
<!-- created-by: vitya@stostayer.new-session / 2026-05-30 / handoff: stostayer.new/.tasks/vehicles-loader-progress-logging.md -->