move_detect/cloud
유창욱 c1fb22ee16 fix(cloud): deterministic event ordering + zone concurrent-delete detection
Self-review (Task 16) follow-up fixes:
- PdoEventRepository::recent(): add event_id DESC as a secondary sort key
  after occurred_at DESC so ties (equal device-reported timestamps) resolve
  deterministically, matching InMemoryEventRepository's insertion-order
  tie-break.
- PdoZoneRepository::updateOwned(): after the ownership-scoped UPDATE,
  disambiguate a 0-rowCount() result (MySQL reports "changed" rows, not
  "matched" rows) with a targeted existence check, so a genuine no-op
  resubmit (identical level/polygon) still succeeds while a zone deleted
  concurrently between the ownership check and the UPDATE now throws
  instead of save() silently reporting success for a zone that no longer
  exists.

Full suite still green: 59 tests, 114 assertions, 4 skipped, 0 failures,
0 warnings/deprecations.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ne4rU4FToTLHcBUMUvUnT1
2026-07-12 02:06:32 +09:00
..
docs feat(cloud): PDO repositories + schema + Cafe24 deploy doc 2026-07-12 01:58:05 +09:00
public fix(cloud): login form submits via fetch (redirect on success, show error) 2026-07-12 01:39:06 +09:00
src fix(cloud): deterministic event ordering + zone concurrent-delete detection 2026-07-12 02:06:32 +09:00
tests feat(cloud): PDO repositories + schema + Cafe24 deploy doc 2026-07-12 01:58:05 +09:00
.gitignore feat(cloud): P1-B scaffold — composer autoload + Config 2026-07-11 23:16:13 +09:00
composer.json feat(cloud): session store + auth controller with lockout 2026-07-12 00:28:18 +09:00
composer.lock fix(cloud): centralize test-double autoloading via composer files 2026-07-11 23:38:01 +09:00
config.example.php feat(cloud): P1-B scaffold — composer autoload + Config 2026-07-11 23:16:13 +09:00
phpunit.xml feat(cloud): P1-B scaffold — composer autoload + Config 2026-07-11 23:16:13 +09:00
schema.sql feat(cloud): PDO repositories + schema + Cafe24 deploy doc 2026-07-12 01:58:05 +09:00