tasks(vehicles-loader-progress-deploy): close 🟢 — verify ok + email-recipient fix

Live-verify прогона Sun 31.05 06:21→07:53 MSK прошёл: progress-logging
показал движение по всем фазам, НЕ тишина. exit 0, importRun id=4 ok.

Попутно найден+починен email-баг: STOSTAYER_MAIL_TO=site@stostayer.ru
(отчёт слался сам себе) → vitya.kuznetsov@gmail.com в host env
(бэкап .bak.20260531). Доставка на gmail подтверждена тест-письмом.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-31 09:31:17 +03:00
parent fea9fd4f53
commit c588326c28
2 changed files with 22 additions and 13 deletions

View File

@@ -32,13 +32,13 @@ pull + re-tag), затем дождаться/прогнать sync и снят
- [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.
- [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
@@ -51,6 +51,17 @@ pull + re-tag), затем дождаться/прогнать sync и снят
## Decisions log
- 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**