fix(v1): wire model confidence, explicit source mode, unique event ids

A: PoseAdapter.set_confidence_threshold is applied on start, so the
   settings model-confidence field actually affects inference.
B: config source.mode ('stream'|'replay') is explicit; app no longer
   guesses the source type from the URL prefix.
C: FallStateMachine takes a session_id and from_config generates a
   unique one per run, so event ids never collide across restarts
   (no screenshot overwrite or duplicate JSONL identity in a day).

51 tests pass.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
ila
2026-07-21 20:54:34 +08:00
co-authored by Claude Opus 4.8
parent 7443a8f031
commit 04422d9ca0
13 changed files with 188 additions and 7 deletions
+4 -1
View File
@@ -48,6 +48,7 @@ class FallStateMachine:
recovery_window_seconds: float,
config_version: str,
cooldown_seconds: float = 0.0,
session_id: str = "",
) -> None:
if not 1.0 <= confirm_window_seconds <= 3.0:
raise ValueError("confirm_window_seconds must be between 1 and 3 seconds")
@@ -61,6 +62,7 @@ class FallStateMachine:
self._recovery_window_seconds = float(recovery_window_seconds)
self._cooldown_seconds = float(cooldown_seconds)
self._config_version = config_version.strip()
self._session_id = str(session_id).strip()
self._records: Dict[str, _Record] = {}
self._next_event_number = 1
@@ -141,8 +143,9 @@ class FallStateMachine:
def _new_event(
self, track_id: str, suspected_at: float, confirmed_at: float
) -> FallEvent:
prefix = "FALL-{0}-".format(self._session_id) if self._session_id else "FALL-"
event = FallEvent(
event_id="FALL-{0:06d}".format(self._next_event_number),
event_id="{0}{1:06d}".format(prefix, self._next_event_number),
track_id=track_id,
config_version=self._config_version,
suspected_at_monotonic=suspected_at,