aicctv
Find a file
유창욱 752afc3f00 feat(edge): heartbeat telemetry + monotonic timers + queue/camera robustness
- Split clocks: detector timers/cooldowns run on a MONOTONIC clock (immune to an
  NTP step on an RTC-less Pi); wall time is used only for the HMAC X-Timestamp
  and Event.occurred_at. Fixes false IMMOBILITY / dropped tracks after a clock jump.
- Heartbeat is time-based (30s, predictable regardless of load) and now carries
  temp/throttle/queue_pending/config_version telemetry.
- A dead (no-frame) camera counts as erroring instead of a healthy frame, so a
  silent monitoring outage no longer looks green.
- Offline queue: isolate one undecodable row instead of wedging every event behind
  it; classify 401 (stale clock) as transient, never a poison-drop.
- New edge/health.py: vcgencmd temp/throttle parsing, None off-Pi (no fake 0).
2026-07-25 19:20:23 +09:00
deploy feat(deploy): probe every camera before enabling the service 2026-07-20 23:22:20 +09:00
docs refactor: rename cloud/ to server/ (cafe24 is web hosting, not cloud) 2026-07-20 11:30:52 +09:00
edge feat(edge): heartbeat telemetry + monotonic timers + queue/camera robustness 2026-07-25 19:20:23 +09:00
server feat(dashboard): load a camera's latest frame as the zone-editor background 2026-07-20 23:41:58 +09:00
tests feat(edge): heartbeat telemetry + monotonic timers + queue/camera robustness 2026-07-25 19:20:23 +09:00
.gitattributes feat(delivery): install-path fixes + cafe24 package + delivery-audit hardening 2026-07-17 09:07:33 +09:00
.gitignore feat(deploy): read pre-provisioned values from deploy/device.env 2026-07-20 23:06:39 +09:00
pyproject.toml feat(edge): runnable daemon loop (step + periodic sync/heartbeat/flush) 2026-07-12 11:00:08 +09:00