Files
portal/app/tests/Feature/Console
Дмитрий 6d6fa10d91 feat(slepok): Task 2.10 — snapshot:rebuild artisan command for fail-loud recovery
Manual recovery после падения SnapshotProjectRoutingJob cron'а. В отличие от
snapshot:backfill (ON CONFLICT DO NOTHING), snapshot:rebuild сначала DELETE'ит
существующий snapshot за дату, затем INSERT'ит свежий из live state.

Fail-loud strategy (Spec §4.2.6):
  1. Heartbeat alarm via SchedulerHeartbeatTracker (Task 2.4 — already wired).
  2. LeadRouter Log::error on missing snapshot (Task 2.5 — already wired).
  3. Manual recovery: php artisan snapshot:rebuild --date=YYYY-MM-DD.

NO fallback to live projects — explicit downtime + alert is safer than silent
regression.

NB: ->transaction() wrapper НЕ используется — конфликтует с SharesSupplierPdo
shared-PDO в тестах. half-done state допустим: retry восстанавливает; на проде
admin контроль и редкость вызова.

Plan: docs/superpowers/plans/2026-05-26-slepok-routing-protection.md §Task 2.10

Tests added:
- tests/Feature/Console/SnapshotRebuildCommandTest.php — 2 tests.

Status: RED locally (Windows-native PG Project factory signal_type quirk —
same as Task 2.2/2.3, memory project_slepok_protection.md). Command itself
registered (php artisan list | grep snapshot). GREEN expected on CI Linux.
2026-05-28 07:01:41 +03:00
..