7.9 KiB
7.9 KiB
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
- Build & push на dev-машине из корня
stostayer.new(2026-05-30): образdocker.stostayer.ru/vehicles-loader:0.4.0собран (811MB, digestsha256:f2e10b1f090ba47f9b5de83b84f91c5ce827ecaf1e94bc0331f2d6773f85845a),docker loginBA-кредами →docker push(общие слои с 0.3.0, докинуты только app-слои). verdaccio-депы из.yarn/cacheзапеклись при build. - На хосте клиента (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. - Плановый прогон отстрелял Sun 2026-05-31 06:21:48 → 07:53:14 MSK на changed-выгрузке (не skipped — 1С перезаписала файл в 6:00, checksum разошёлся).
- 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-modeldelete-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 показал движение по всем фазам (batchunits 26/26, per-model delete-sweep0 — выгрузка полная). 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.newsession по явному указанию (закрыть код-таску by-inspection, live-verify вынести в .admin как deploy-follow-up).
Open questions
Push— нет,stostayer.newmaster нужен до build?a74ef73уже в origin/master.Где взять 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), commita74ef73. - Предшественник:
.admin vehicles-loader-image-distribution(🟢 closed 2026-05-29) — канал поставки + первый боевой прогон 0.3.0.