# 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 (что должно появиться в логе) - Фазовые строки: `▶ — start` / `✓ — done: N rows, ` для branches / vehicles / units / delete-sweep. - Батч-прогресс: ` manufacturers: 18/183 (12s)`, ` units: 5/26 (…)` — авто-шаг ≈ total/10. - delete-sweep per-model: ` delete-sweep : 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. - [ ] Дождаться планового прогона — **systemd timer next trigger `Sun 2026-05-31 06:21:36 MSK`** (timer `enabled`, `active (waiting)`). Verify-окно выбрано user'ом = natural 06:20 (не форсим baseline-reset — клиент не получает внепланового email). На unchanged будет `skipped-unchanged`; 1С перезапишет файл в 6:00 → 06:21 прогон на changed-выгрузке. - [ ] **Live-verify (СЛЕДУЮЩАЯ СЕССИЯ после 06:21 MSK 31.05):** `journalctl -u vehicles-loader.service --since '2026-05-31 06:00'` — видны `▶ … start`, периодический батч-прогресс, `✓ … done`, per-model delete-sweep. ## 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-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.