move_detect/cloud/src
유창욱 99070f5e87 fix(cloud): don't swallow snapshot failures, clean orphan JPEGs (P4-7)
The ingest snapshot loop silently `continue`d on re-encode and file-write
failures (evidence lost with a 201), and a DB-index throw after the file
landed left an orphan JPEG on disk with no row — or bubbled into a 500
that discarded an already-stored event.

Extracts storeSnapshot(): re-encode → write file → index, in that order
so bytes exist before a row points at them. Every failure is error_log'd
instead of swallowed; a DB-index failure after the write @unlinks the
orphan file. A snapshot problem no longer fails the ingest — the event is
already persisted, so the 201 stands.

Test: testSnapshotIndexFailureCleansOrphanFileButKeepsEvent uses a
throwing snapshot repo and asserts 201, the event is stored, and no *.jpg
is left in the snapshot dir.

phpunit: 90 passing (4 skipped: PDO-backed).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019Xmn8KZWqiQUguEMRtn6rW
2026-07-17 10:08:28 +09:00
..
Api feat(delivery-audit): PIPA retention + cloud hardening (P3-2, P4-1..4) 2026-07-17 09:28:16 +09:00
Auth fix(cloud): verify login CSRF + zone ownership 400 not 500 (P4-8, P4-6) 2026-07-17 10:00:04 +09:00
Dashboard feat(cloud): cursor pagination for the event list (P4-5) 2026-07-17 10:05:52 +09:00
Db feat(cloud): PDO repositories + schema + Cafe24 deploy doc 2026-07-12 01:58:05 +09:00
Geometry feat(cloud): polygon validation + zone config controller (RBAC) 2026-07-12 01:02:37 +09:00
Http fix(cloud): logout order, url normalization, length caps, package hygiene (P4-9/10/11, P5-6) 2026-07-17 09:48:35 +09:00
Ingest fix(cloud): don't swallow snapshot failures, clean orphan JPEGs (P4-7) 2026-07-17 10:08:28 +09:00
Repository feat(cloud): cursor pagination for the event list (P4-5) 2026-07-17 10:05:52 +09:00
Security feat(cloud): argon2id password + CSRF token helpers 2026-07-12 00:11:20 +09:00
View feat(delivery): install-path fixes + cafe24 package + delivery-audit hardening 2026-07-17 09:07:33 +09:00
Config.php feat(delivery-audit): PIPA retention + cloud hardening (P3-2, P4-1..4) 2026-07-17 09:28:16 +09:00