{"active_scenarios": ["no_hardhat_persistent", "falldown_detected", "danger_area_loitering"], "analysis_config": {"flush_interval_seconds": 15.0, "include_event_records": true, "max_buffer_records": 32, "summary_interval_frames": 120, "summary_only": true}, "cctv_id": "19", "created_at": "2026-04-30T11:36:02", "instance_id": "0dd1b808", "record_type": "session_start", "source_url": "file:///data/playlist/uploads/강진광주_쓰러짐_헬멧미착용_샘플__fix_20251114_150454.mp4"}
{"anchor_point": null, "cctv_id": "19", "created_at": "2026-04-30T11:36:05", "detail": {}, "event_id": null, "event_message": "안전모 미착용", "event_status": null, "event_type": "no_hardhat_persistent", "frame_idx": 8, "frame_time": "2026-04-30 11:36:05", "instance_id": "0dd1b808", "last_assignment_source": "real_match", "meta": {"gear_name": "안전모", "matched_cover": 1.0, "min_cover": 0.35, "stable_frames": 8, "track_kind": "real", "violation_category": "안전모 미착용", "worker_identity_key": ["no_hardhat_persistent", "track_id", "2"]}, "persist_event": true, "record_type": "scenario_event", "scene_scale_profile": "mixed", "stable_frames": 8, "track_id": 2, "track_kind": "real", "zone_id": null, "zone_name": null}
{"anchor_point": null, "cctv_id": "19", "created_at": "2026-04-30T11:36:12", "detail": {"candidate_count": 2, "candidate_state": "ground", "crouch_incident_active": false, "downward_motion_norm": 0.16296296296296298, "edge_entry_override_used": false, "fall_accept_reason": "edge_entry_recovery", "fall_incident_active": true, "fall_recovery_emit_override_used": false, "features": {"bbox_h": 135.0, "bbox_h_over_w": 0.7109940750493746, "hip_ankle_x_ratio": 0.8519021739130435, "left_knee_deg": 128.73540937335898, "max_knee_deg": 150.0558398900732, "min_knee_deg": 128.73540937335898, "right_knee_deg": 150.0558398900732, "torso_angle_deg": 148.54974625480472, "torso_vertical_ratio": 0.3111111111111111, "worker_center_y": 571.5, "ygap_norm": 0.0}, "from_fall_only": true, "ground_variant": "ground_side", "instant_state": "ground", "prev_stable_state": "standing", "recent_fall_suppressed": true, "recent_ground_exit_suppressed": false, "scores": {"crouch": 0.29216607995771027, "ground": 0.8400964696744253, "ground_front_back": 0.5221121915888417, "ground_side": 0.8400964696744253, "kneel": 0.34244286428447074, "standing": 0.14976197752486392}, "stable_state": "ground", "stable_state_dwell_seconds": 0.0, "standing_seen_before": true, "track_kind": "real", "track_stable_frames": 62}, "event_id": 2, "event_message": "쓰러짐 감지", "event_status": null, "event_type": "falldown_detected", "frame_idx": 62, "frame_time": "2026-04-30 11:36:12", "instance_id": "0dd1b808", "last_assignment_source": "real_match", "meta": {}, "persist_event": true, "record_type": "scenario_event", "scene_scale_profile": "near", "stable_frames": 62, "track_id": 2, "track_kind": "real", "zone_id": null, "zone_name": null}
{"anchor_point": null, "cctv_id": "19", "created_at": "2026-04-30T11:36:12", "detail": {"candidate_count": 3, "candidate_state": "ground", "crouch_incident_active": false, "downward_motion_norm": 0.09259259259259259, "edge_entry_override_used": false, "fall_accept_reason": "edge_entry_recovery", "fall_incident_active": true, "fall_recovery_emit_override_used": true, "features": {"bbox_h": 135.0, "bbox_h_over_w": 0.7224080267558528, "hip_ankle_x_ratio": 2.003826530612245, "left_knee_deg": 153.78988797554777, "max_knee_deg": 162.64102956876744, "min_knee_deg": 153.78988797554777, "right_knee_deg": 162.64102956876744, "torso_angle_deg": 142.30078831476334, "torso_vertical_ratio": 0.3037037037037037, "worker_center_y": 571.5, "ygap_norm": 0.0}, "from_fall_only": true, "ground_variant": "ground_side", "instant_state": "ground", "prev_stable_state": "ground", "recent_fall_suppressed": true, "recent_ground_exit_suppressed": false, "scores": {"crouch": 0.09216607995771023, "ground": 0.8440652620760535, "ground_front_back": 0.4697241318873492, "ground_side": 0.8440652620760535, "kneel": 0.27744286428447074, "standing": 0.2127511432129508}, "stable_state": "ground", "stable_state_dwell_seconds": 0.4870872497558594, "standing_seen_before": true, "track_kind": "real", "track_stable_frames": 63}, "event_id": 2, "event_message": "쓰러짐 감지", "event_status": null, "event_type": "falldown_detected", "frame_idx": 63, "frame_time": "2026-04-30 11:36:12", "instance_id": "0dd1b808", "last_assignment_source": "real_match", "meta": {}, "persist_event": true, "record_type": "scenario_event", "scene_scale_profile": "near", "stable_frames": 63, "track_id": 2, "track_kind": "real", "zone_id": null, "zone_name": null}
{"anchor_point": null, "cctv_id": "19", "created_at": "2026-04-30T11:36:13", "detail": {"candidate_count": 4, "candidate_state": "ground", "crouch_incident_active": false, "downward_motion_norm": 0.05860805860805861, "edge_entry_override_used": false, "fall_accept_reason": "edge_entry_recovery", "fall_incident_active": true, "fall_recovery_emit_override_used": true, "features": {"bbox_h": 136.5, "bbox_h_over_w": 0.728, "hip_ankle_x_ratio": 1.4242125984251968, "left_knee_deg": 121.3697302424758, "max_knee_deg": 130.9055470780898, "min_knee_deg": 121.3697302424758, "right_knee_deg": 130.9055470780898, "torso_angle_deg": 143.91183829138492, "torso_vertical_ratio": 0.28205128205128205, "worker_center_y": 571.0, "ygap_norm": 0.0}, "from_fall_only": true, "ground_variant": "ground_side", "instant_state": "ground", "prev_stable_state": "ground", "recent_fall_suppressed": true, "recent_ground_exit_suppressed": false, "scores": {"crouch": 0.14942661947275865, "ground": 0.86, "ground_front_back": 0.5073331112542812, "ground_side": 0.86, "kneel": 0.25180672115153685, "standing": 0.1754891656880869}, "stable_state": "ground", "stable_state_dwell_seconds": 0.6247165203094482, "standing_seen_before": true, "track_kind": "real", "track_stable_frames": 64}, "event_id": 2, "event_message": "쓰러짐 감지", "event_status": null, "event_type": "falldown_detected", "frame_idx": 64, "frame_time": "2026-04-30 11:36:13", "instance_id": "0dd1b808", "last_assignment_source": "real_match", "meta": {}, "persist_event": true, "record_type": "scenario_event", "scene_scale_profile": "near", "stable_frames": 64, "track_id": 2, "track_kind": "real", "zone_id": null, "zone_name": null}
{"anchor_point": null, "cctv_id": "19", "created_at": "2026-04-30T11:36:13", "detail": {"candidate_count": 5, "candidate_state": "ground", "crouch_incident_active": false, "downward_motion_norm": 0.0036496350364963502, "edge_entry_override_used": false, "fall_accept_reason": "edge_entry_recovery", "fall_incident_active": true, "fall_recovery_emit_override_used": true, "features": {"bbox_h": 137.0, "bbox_h_over_w": 0.7316421895861148, "hip_ankle_x_ratio": 1.2177152317880795, "left_knee_deg": 111.89139085748448, "max_knee_deg": 133.85435647043533, "min_knee_deg": 111.89139085748448, "right_knee_deg": 133.85435647043533, "torso_angle_deg": 144.64584425661198, "torso_vertical_ratio": 0.27007299270072993, "worker_center_y": 571.5, "ygap_norm": 0.0}, "from_fall_only": true, "ground_variant": "ground_side", "instant_state": "ground", "prev_stable_state": "ground", "recent_fall_suppressed": true, "recent_ground_exit_suppressed": false, "scores": {"crouch": 0.17600693905336148, "ground": 0.86, "ground_front_back": 0.5269123420818689, "ground_side": 0.86, "kneel": 0.2541988574242898, "standing": 0.1754891656880869}, "stable_state": "ground", "stable_state_dwell_seconds": 0.7695116996765137, "standing_seen_before": true, "track_kind": "real", "track_stable_frames": 65}, "event_id": 2, "event_message": "쓰러짐 감지", "event_status": null, "event_type": "falldown_detected", "frame_idx": 65, "frame_time": "2026-04-30 11:36:13", "instance_id": "0dd1b808", "last_assignment_source": "real_match", "meta": {}, "persist_event": true, "record_type": "scenario_event", "scene_scale_profile": "near", "stable_frames": 65, "track_id": 2, "track_kind": "real", "zone_id": null, "zone_name": null}
{"anchor_point": null, "cctv_id": "19", "created_at": "2026-04-30T11:36:13", "detail": {"candidate_count": 6, "candidate_state": "ground", "crouch_incident_active": false, "downward_motion_norm": 0.0, "edge_entry_override_used": false, "fall_accept_reason": "edge_entry_recovery", "fall_incident_active": true, "fall_recovery_emit_override_used": true, "features": {"bbox_h": 137.5, "bbox_h_over_w": 0.7352941176470589, "hip_ankle_x_ratio": 1.453183520599251, "left_knee_deg": 111.96682393765755, "max_knee_deg": 127.72887221678499, "min_knee_deg": 111.96682393765755, "right_knee_deg": 127.72887221678499, "torso_angle_deg": 145.2651404602137, "torso_vertical_ratio": 0.2727272727272727, "worker_center_y": 571.0, "ygap_norm": 0.0}, "from_fall_only": true, "ground_variant": "ground_side", "instant_state": "ground", "prev_stable_state": "ground", "recent_fall_suppressed": true, "recent_ground_exit_suppressed": false, "scores": {"crouch": 0.20954410992476435, "ground": 0.86, "ground_front_back": 0.5566816323129198, "ground_side": 0.86, "kneel": 0.2431526182229688, "standing": 0.1754891656880869}, "stable_state": "ground", "stable_state_dwell_seconds": 0.9020411968231201, "standing_seen_before": true, "track_kind": "real", "track_stable_frames": 66}, "event_id": 2, "event_message": "쓰러짐 감지", "event_status": null, "event_type": "falldown_detected", "frame_idx": 66, "frame_time": "2026-04-30 11:36:13", "instance_id": "0dd1b808", "last_assignment_source": "real_match", "meta": {}, "persist_event": true, "record_type": "scenario_event", "scene_scale_profile": "near", "stable_frames": 66, "track_id": 2, "track_kind": "real", "zone_id": null, "zone_name": null}
{"anchor_point": null, "cctv_id": "19", "created_at": "2026-04-30T11:36:13", "detail": {"candidate_count": 9, "candidate_state": "ground", "crouch_incident_active": false, "downward_motion_norm": 0.0036496350364963502, "edge_entry_override_used": false, "fall_accept_reason": "edge_entry_recovery", "fall_incident_active": true, "fall_recovery_emit_override_used": true, "features": {"bbox_h": 137.0, "bbox_h_over_w": 0.7316421895861148, "hip_ankle_x_ratio": 1.35390625, "left_knee_deg": 101.12376211472314, "max_knee_deg": 110.7764519462326, "min_knee_deg": 101.12376211472314, "right_knee_deg": 110.7764519462326, "torso_angle_deg": 148.82606180062874, "torso_vertical_ratio": 0.18248175182481752, "worker_center_y": 571.5, "ygap_norm": 0.0}, "from_fall_only": true, "ground_variant": "ground_side", "instant_state": "ground", "prev_stable_state": "ground", "recent_fall_suppressed": true, "recent_ground_exit_suppressed": false, "scores": {"crouch": 0.3160663521246849, "ground": 0.8261851784976091, "ground_front_back": 0.6294281890790269, "ground_side": 0.8261851784976091, "kneel": 0.22078292410017875, "standing": 0.12179297751676921}, "stable_state": "ground", "stable_state_dwell_seconds": 1.2685608863830566, "standing_seen_before": true, "track_kind": "real", "track_stable_frames": 69}, "event_id": 2, "event_message": "쓰러짐 감지", "event_status": null, "event_type": "falldown_detected", "frame_idx": 69, "frame_time": "2026-04-30 11:36:13", "instance_id": "0dd1b808", "last_assignment_source": "real_match", "meta": {}, "persist_event": true, "record_type": "scenario_event", "scene_scale_profile": "near", "stable_frames": 69, "track_id": 2, "track_kind": "real", "zone_id": null, "zone_name": null}
{"anchor_point": null, "cctv_id": "19", "created_at": "2026-04-30T11:36:13", "detail": {"candidate_count": 10, "candidate_state": "ground", "crouch_incident_active": false, "downward_motion_norm": 0.0036496350364963502, "edge_entry_override_used": false, "fall_accept_reason": "edge_entry_recovery", "fall_incident_active": true, "fall_recovery_emit_override_used": true, "features": {"bbox_h": 137.0, "bbox_h_over_w": 0.732620320855615, "hip_ankle_x_ratio": 2.104591836734694, "left_knee_deg": 120.82658988579082, "max_knee_deg": 133.15291800332807, "min_knee_deg": 120.82658988579082, "right_knee_deg": 133.15291800332807, "torso_angle_deg": 145.42753531660512, "torso_vertical_ratio": 0.2773722627737226, "worker_center_y": 571.5, "ygap_norm": 0.0}, "from_fall_only": true, "ground_variant": "ground_side", "instant_state": "ground", "prev_stable_state": "ground", "recent_fall_suppressed": true, "recent_ground_exit_suppressed": false, "scores": {"crouch": 0.29834682022841835, "ground": 0.8261851784976091, "ground_front_back": 0.6221961280303028, "ground_side": 0.8261851784976091, "kneel": 0.21128979148062926, "standing": 0.12179297751676921}, "stable_state": "ground", "stable_state_dwell_seconds": 1.384248971939087, "standing_seen_before": true, "track_kind": "real", "track_stable_frames": 70}, "event_id": 2, "event_message": "쓰러짐 감지", "event_status": null, "event_type": "falldown_detected", "frame_idx": 70, "frame_time": "2026-04-30 11:36:13", "instance_id": "0dd1b808", "last_assignment_source": "real_match", "meta": {}, "persist_event": true, "record_type": "scenario_event", "scene_scale_profile": "near", "stable_frames": 70, "track_id": 2, "track_kind": "real", "zone_id": null, "zone_name": null}
{"anchor_point": null, "cctv_id": "19", "created_at": "2026-04-30T11:36:14", "detail": {"candidate_count": 11, "candidate_state": "ground", "crouch_incident_active": false, "downward_motion_norm": 0.003663003663003663, "edge_entry_override_used": false, "fall_accept_reason": "edge_entry_recovery", "fall_incident_active": true, "fall_recovery_emit_override_used": true, "features": {"bbox_h": 136.5, "bbox_h_over_w": 0.7309236947791165, "hip_ankle_x_ratio": 1.9524390243902439, "left_knee_deg": 122.28104945456246, "max_knee_deg": 131.90529030242377, "min_knee_deg": 122.28104945456246, "right_knee_deg": 131.90529030242377, "torso_angle_deg": 146.2241604130731, "torso_vertical_ratio": 0.28205128205128205, "worker_center_y": 572.0, "ygap_norm": 0.0}, "from_fall_only": true, "ground_variant": "ground_side", "instant_state": "ground", "prev_stable_state": "ground", "recent_fall_suppressed": true, "recent_ground_exit_suppressed": false, "scores": {"crouch": 0.27378472131929343, "ground": 0.8457354445024258, "ground_front_back": 0.6137758083844298, "ground_side": 0.8457354445024258, "kneel": 0.19941799273702432, "standing": 0.1304050654416219}, "stable_state": "ground", "stable_state_dwell_seconds": 1.5250778198242188, "standing_seen_before": true, "track_kind": "real", "track_stable_frames": 71}, "event_id": 2, "event_message": "쓰러짐 감지", "event_status": null, "event_type": "falldown_detected", "frame_idx": 71, "frame_time": "2026-04-30 11:36:13", "instance_id": "0dd1b808", "last_assignment_source": "real_match", "meta": {}, "persist_event": true, "record_type": "scenario_event", "scene_scale_profile": "near", "stable_frames": 71, "track_id": 2, "track_kind": "real", "zone_id": null, "zone_name": null}
{"anchor_point": null, "cctv_id": "19", "created_at": "2026-04-30T11:36:14", "detail": {"candidate_count": 12, "candidate_state": "ground", "crouch_incident_active": false, "downward_motion_norm": 0.003663003663003663, "edge_entry_override_used": false, "fall_accept_reason": "edge_entry_recovery", "fall_incident_active": true, "fall_recovery_emit_override_used": true, "features": {"bbox_h": 136.5, "bbox_h_over_w": 0.7299465240641712, "hip_ankle_x_ratio": 1.9975124378109452, "left_knee_deg": 121.74910022944948, "max_knee_deg": 133.91287455304033, "min_knee_deg": 121.74910022944948, "right_knee_deg": 133.91287455304033, "torso_angle_deg": 144.95807059846098, "torso_vertical_ratio": 0.28205128205128205, "worker_center_y": 572.0, "ygap_norm": 0.0}, "from_fall_only": true, "ground_variant": "ground_side", "instant_state": "ground", "prev_stable_state": "ground", "recent_fall_suppressed": true, "recent_ground_exit_suppressed": false, "scores": {"crouch": 0.2502865208603945, "ground": 0.8661313868613139, "ground_front_back": 0.6036711595946032, "ground_side": 0.8661313868613139, "kneel": 0.19495711087052353, "standing": 0.13827554744525547}, "stable_state": "ground", "stable_state_dwell_seconds": 1.658991813659668, "standing_seen_before": true, "track_kind": "real", "track_stable_frames": 72}, "event_id": 2, "event_message": "쓰러짐 감지", "event_status": null, "event_type": "falldown_detected", "frame_idx": 72, "frame_time": "2026-04-30 11:36:14", "instance_id": "0dd1b808", "last_assignment_source": "real_match", "meta": {}, "persist_event": true, "record_type": "scenario_event", "scene_scale_profile": "near", "stable_frames": 72, "track_id": 2, "track_kind": "real", "zone_id": null, "zone_name": null}
{"anchor_point": null, "cctv_id": "19", "created_at": "2026-04-30T11:36:15", "detail": {"candidate_count": 23, "candidate_state": "ground", "crouch_incident_active": false, "downward_motion_norm": 0.0, "edge_entry_override_used": false, "fall_accept_reason": "edge_entry_recovery", "fall_incident_active": true, "fall_recovery_emit_override_used": true, "features": {"bbox_h": 135.0, "bbox_h_over_w": 0.7292370020256583, "hip_ankle_x_ratio": 3.093525179856115, "left_knee_deg": 140.48641072969693, "max_knee_deg": 140.48641072969693, "min_knee_deg": 134.64071799698158, "right_knee_deg": 134.64071799698158, "torso_angle_deg": 131.98016157541008, "torso_vertical_ratio": 0.18703703703703703, "worker_center_y": 571.0, "ygap_norm": 0.0}, "from_fall_only": true, "ground_variant": "ground_side", "instant_state": "ground", "prev_stable_state": "ground", "recent_fall_suppressed": false, "recent_ground_exit_suppressed": false, "scores": {"crouch": 0.17688848435617244, "ground": 0.8010339993846659, "ground_front_back": 0.5204670865836123, "ground_side": 0.8010339993846659, "kneel": 0.2665048873138641, "standing": 0.17580357018924359}, "stable_state": "ground", "stable_state_dwell_seconds": 3.0887229442596436, "standing_seen_before": true, "track_kind": "real", "track_stable_frames": 86}, "event_id": 2, "event_message": "쓰러짐 감지", "event_status": null, "event_type": "falldown_detected", "frame_idx": 86, "frame_time": "2026-04-30 11:36:15", "instance_id": "0dd1b808", "last_assignment_source": "real_match", "meta": {}, "persist_event": true, "record_type": "scenario_event", "scene_scale_profile": "near", "stable_frames": 86, "track_id": 2, "track_kind": "real", "zone_id": null, "zone_name": null}
{"anchor_point": null, "cctv_id": "19", "created_at": "2026-04-30T11:36:18", "detail": {"candidate_count": 2, "candidate_state": "ground", "crouch_incident_active": false, "downward_motion_norm": 0.16393442622950818, "edge_entry_override_used": false, "fall_accept_reason": null, "fall_incident_active": true, "fall_recovery_emit_override_used": false, "features": {"bbox_h": 106.75, "bbox_h_over_w": 0.7413194444444444, "hip_ankle_x_ratio": 0.4777777777777778, "left_knee_deg": 174.91895712965805, "max_knee_deg": 174.91895712965805, "min_knee_deg": 167.14658544546597, "right_knee_deg": 167.14658544546597, "torso_angle_deg": 94.72013693104356, "torso_vertical_ratio": 0.04215456674473068, "worker_center_y": 529.5, "ygap_norm": 0.5620608899297423}, "from_fall_only": false, "ground_variant": "ground_side", "instant_state": "ground", "prev_stable_state": "standing", "recent_fall_suppressed": true, "recent_ground_exit_suppressed": false, "scores": {"crouch": 0.4026037845390358, "ground": 0.7680590411689313, "ground_front_back": 0.4356508101917531, "ground_side": 0.7680590411689313, "kneel": 0.49654888483231285, "standing": 0.19629857903505002}, "stable_state": "ground", "stable_state_dwell_seconds": 0.0, "standing_seen_before": true, "track_kind": "real", "track_stable_frames": 11}, "event_id": 5, "event_message": "쓰러짐 감지", "event_status": null, "event_type": "falldown_detected", "frame_idx": 113, "frame_time": "2026-04-30 11:36:18", "instance_id": "0dd1b808", "last_assignment_source": "real_match", "meta": {}, "persist_event": true, "record_type": "scenario_event", "scene_scale_profile": "near", "stable_frames": 11, "track_id": 5, "track_kind": "real", "zone_id": null, "zone_name": null}
{"cctv_id": "19", "created_at": "2026-04-30T11:36:19", "instance_id": "0dd1b808", "payload": {"active_detection_counts": {"작업자": 2}, "analysis_flags": {"summary_due": true}, "frame_counters": {"assigned_from_manual_pool": 1, "fall_candidate_rejected_duplicate_base": 2, "fall_candidate_seen": 2, "real_match_assigned": 1, "reconciled_to_real": 1, "tracker_online_targets": 1, "tracker_update_calls": 1, "unmatched_objects": 1}, "frame_idx": 120, "lifetime_counters": {"assigned_from_manual_pool": 10, "fall_candidate_accepted_edge_entry": 36, "fall_candidate_rejected_duplicate_base": 50, "fall_candidate_seen": 86, "pseudo_created": 4, "pseudo_promoted_to_manual": 2, "pseudo_reused": 2, "real_match_assigned": 141, "reconciled_to_real": 12, "tracker_online_targets": 141, "tracker_removed_tracks": 2, "tracker_update_calls": 120, "unmatched_objects": 18}, "scenario_analysis": {"_execution": {"_resolved_scenarios": ["no_hardhat_persistent", "falldown_detected", "danger_area_loitering"], "danger_area_loitering": {"returned_event_count": 0, "status": "returned_events"}, "falldown_detected": {"returned_event_count": 0, "status": "returned_events"}, "no_hardhat_persistent": {"returned_event_count": 0, "status": "returned_events"}}, "no_hardhat_persistent": {"active_violation_count": 0, "current_violation_count": 0, "recovered_violation_count": 0, "recovery_grace_seconds": 2.0}}, "scene_metrics": {"안전모 미착용": {"bbox_area_ratio_median": 0.006069, "bbox_height_ratio_median": 0.120486, "bbox_height_ratio_p75": 0.123611, "bbox_width_ratio_median": 0.050879, "frame_presence_count": 17, "label_counts": {"no_helmet": 17}, "object_sample_count": 17}, "작업자": {"bbox_area_ratio_median": 0.027068, "bbox_height_ratio_median": 0.188889, "bbox_height_ratio_p75": 0.6, "bbox_width_ratio_median": 0.112207, "frame_presence_count": 120, "label_counts": {"person": 106, "worker": 36}, "object_sample_count": 142}}, "scene_scale_metrics": {"sample_count": 142, "worker_height_ratio_median": 0.188889, "worker_small_worker_ratio": 0.0}, "scene_scale_profile": "near", "track_kind_counts": {"manual": 1, "pseudo": 0, "real": 1}}, "record_type": "tracking_summary"}
{"anchor_point": null, "cctv_id": "19", "created_at": "2026-04-30T11:36:27", "detail": {}, "event_id": null, "event_message": "안전모 미착용", "event_status": null, "event_type": "no_hardhat_persistent", "frame_idx": 176, "frame_time": "2026-04-30 11:36:27", "instance_id": "0dd1b808", "last_assignment_source": "reconciled_to_real", "meta": {"gear_name": "안전모", "matched_cover": 1.0, "min_cover": 0.35, "stable_frames": 58, "track_kind": "manual", "violation_category": "안전모 미착용", "worker_identity_key": ["no_hardhat_persistent", "track_id", "1000002"]}, "persist_event": true, "record_type": "scenario_event", "scene_scale_profile": "near", "stable_frames": 58, "track_id": 1000002, "track_kind": "manual", "zone_id": null, "zone_name": null}
{"anchor_point": null, "cctv_id": "19", "created_at": "2026-04-30T11:36:31", "detail": {}, "event_id": null, "event_message": "안전모 미착용", "event_status": null, "event_type": "no_hardhat_persistent", "frame_idx": 205, "frame_time": "2026-04-30 11:36:31", "instance_id": "0dd1b808", "last_assignment_source": "reconciled_to_real", "meta": {"gear_name": "안전모", "matched_cover": 1.0, "min_cover": 0.35, "stable_frames": 3, "track_kind": "manual", "violation_category": "안전모 미착용", "worker_identity_key": ["no_hardhat_persistent", "track_id", "1000004"]}, "persist_event": true, "record_type": "scenario_event", "scene_scale_profile": "near", "stable_frames": 3, "track_id": 1000004, "track_kind": "manual", "zone_id": null, "zone_name": null}
{"anchor_point": null, "cctv_id": "19", "created_at": "2026-04-30T11:36:32", "detail": {}, "event_id": null, "event_message": "안전모 미착용", "event_status": null, "event_type": "no_hardhat_persistent", "frame_idx": 214, "frame_time": "2026-04-30 11:36:32", "instance_id": "0dd1b808", "last_assignment_source": "reconciled_to_real", "meta": {"gear_name": "안전모", "matched_cover": 1.0, "min_cover": 0.35, "stable_frames": 28, "track_kind": "manual", "violation_category": "안전모 미착용", "worker_identity_key": ["no_hardhat_persistent", "track_id", "1000003"]}, "persist_event": true, "record_type": "scenario_event", "scene_scale_profile": "near", "stable_frames": 28, "track_id": 1000003, "track_kind": "manual", "zone_id": null, "zone_name": null}
{"cctv_id": "19", "created_at": "2026-04-30T11:36:36", "instance_id": "0dd1b808", "payload": {"active_detection_counts": {"안전모 미착용": 1, "작업자": 2}, "analysis_flags": {"summary_due": true}, "frame_counters": {"assigned_from_manual_pool": 2, "real_match_assigned": 1, "reconciled_to_real": 2, "tracker_online_targets": 1, "tracker_update_calls": 1, "unmatched_objects": 2}, "frame_idx": 240, "lifetime_counters": {"assigned_from_manual_pool": 171, "fall_candidate_accepted_edge_entry": 37, "fall_candidate_rejected_duplicate_base": 156, "fall_candidate_seen": 193, "pseudo_created": 18, "pseudo_promoted_to_manual": 7, "pseudo_reused": 9, "real_match_assigned": 244, "reconciled_to_real": 178, "tracker_online_targets": 244, "tracker_removed_tracks": 5, "tracker_update_calls": 240, "unmatched_objects": 205}, "scenario_analysis": {"_execution": {"_resolved_scenarios": ["no_hardhat_persistent", "falldown_detected", "danger_area_loitering"], "danger_area_loitering": {"returned_event_count": 0, "status": "returned_events"}, "falldown_detected": {"returned_event_count": 0, "status": "returned_events"}, "no_hardhat_persistent": {"returned_event_count": 0, "status": "returned_events"}}, "no_hardhat_persistent": {"active_violation_count": 2, "current_violation_count": 1, "pseudo_min_stable_frames": 3, "recovered_violation_count": 0, "recovery_grace_seconds": 2.0}}, "scene_metrics": {"안전모 미착용": {"bbox_area_ratio_median": 0.002741, "bbox_height_ratio_median": 0.079167, "bbox_height_ratio_p75": 0.0875, "bbox_width_ratio_median": 0.038281, "frame_presence_count": 39, "label_counts": {"no_helmet": 69}, "object_sample_count": 69}, "작업자": {"bbox_area_ratio_median": 0.038291, "bbox_height_ratio_median": 0.425, "bbox_height_ratio_p75": 0.502778, "bbox_width_ratio_median": 0.122656, "frame_presence_count": 118, "label_counts": {"person": 220, "worker": 1}, "object_sample_count": 221}}, "scene_scale_metrics": {"sample_count": 363, "worker_height_ratio_median": 0.245833, "worker_small_worker_ratio": 0.0}, "scene_scale_profile": "near", "track_kind_counts": {"manual": 2, "pseudo": 0, "real": 1}}, "record_type": "tracking_summary"}
{"anchor_point": null, "cctv_id": "19", "created_at": "2026-04-30T11:36:39", "detail": {}, "event_id": null, "event_message": "안전모 미착용", "event_status": null, "event_type": "no_hardhat_persistent", "frame_idx": 256, "frame_time": "2026-04-30 11:36:38", "instance_id": "0dd1b808", "last_assignment_source": "reconciled_to_real", "meta": {"gear_name": "안전모", "matched_cover": 1.0, "min_cover": 0.35, "stable_frames": 70, "track_kind": "manual", "violation_category": "안전모 미착용", "worker_identity_key": ["no_hardhat_persistent", "track_id", "1000003"]}, "persist_event": true, "record_type": "scenario_event", "scene_scale_profile": "near", "stable_frames": 70, "track_id": 1000003, "track_kind": "manual", "zone_id": null, "zone_name": null}
{"anchor_point": null, "cctv_id": "19", "created_at": "2026-04-30T11:36:41", "detail": {}, "event_id": null, "event_message": "안전모 미착용", "event_status": null, "event_type": "no_hardhat_persistent", "frame_idx": 270, "frame_time": "2026-04-30 11:36:40", "instance_id": "0dd1b808", "last_assignment_source": "real_match", "meta": {"gear_name": "안전모", "matched_cover": 1.0, "min_cover": 0.35, "stable_frames": 1, "track_kind": "real", "violation_category": "안전모 미착용", "worker_identity_key": ["no_hardhat_persistent", "track_id", "13"]}, "persist_event": true, "record_type": "scenario_event", "scene_scale_profile": "near", "stable_frames": 1, "track_id": 13, "track_kind": "real", "zone_id": null, "zone_name": null}
{"anchor_point": null, "cctv_id": "19", "created_at": "2026-04-30T11:36:41", "detail": {}, "event_id": null, "event_message": "안전모 미착용", "event_status": null, "event_type": "no_hardhat_persistent", "frame_idx": 270, "frame_time": "2026-04-30 11:36:40", "instance_id": "0dd1b808", "last_assignment_source": "reconciled_to_real", "meta": {"gear_name": "안전모", "matched_cover": 1.0, "min_cover": 0.35, "stable_frames": 41, "track_kind": "manual", "violation_category": "안전모 미착용", "worker_identity_key": ["no_hardhat_persistent", "track_id", "1000006"]}, "persist_event": true, "record_type": "scenario_event", "scene_scale_profile": "near", "stable_frames": 41, "track_id": 1000006, "track_kind": "manual", "zone_id": null, "zone_name": null}
{"anchor_point": null, "cctv_id": "19", "created_at": "2026-04-30T11:36:42", "detail": {"candidate_count": 2, "candidate_state": "ground", "crouch_incident_active": false, "downward_motion_norm": 0.1935483870967742, "edge_entry_override_used": false, "fall_accept_reason": null, "fall_incident_active": true, "fall_recovery_emit_override_used": false, "features": {"bbox_h": 93.0, "bbox_h_over_w": 0.3875, "hip_ankle_x_ratio": 13.6875, "left_knee_deg": 173.13733250283912, "max_knee_deg": 173.13733250283912, "min_knee_deg": 171.0687201986141, "right_knee_deg": 171.0687201986141, "torso_angle_deg": 77.9977051012163, "torso_vertical_ratio": 0.14516129032258066, "worker_center_y": 543.0, "ygap_norm": 0.13978494623655913}, "from_fall_only": false, "ground_variant": "ground_side", "instant_state": "ground", "prev_stable_state": "kneel", "recent_fall_suppressed": true, "recent_ground_exit_suppressed": false, "scores": {"crouch": 0.19364604334677415, "ground": 0.8218009717749495, "ground_front_back": 0.4953751682759107, "ground_side": 0.8218009717749495, "kneel": 0.4349168346774194, "standing": 0.24203568253816277}, "stable_state": "ground", "stable_state_dwell_seconds": 0.0, "standing_seen_before": true, "track_kind": "manual", "track_stable_frames": 52}, "event_id": 1000006, "event_message": "쓰러짐 감지", "event_status": null, "event_type": "falldown_detected", "frame_idx": 281, "frame_time": "2026-04-30 11:36:42", "instance_id": "0dd1b808", "last_assignment_source": "reconciled_to_real", "meta": {}, "persist_event": true, "record_type": "scenario_event", "scene_scale_profile": "near", "stable_frames": 52, "track_id": 1000006, "track_kind": "manual", "zone_id": null, "zone_name": null}
{"anchor_point": null, "cctv_id": "19", "created_at": "2026-04-30T11:36:51", "detail": {}, "event_id": null, "event_message": "안전모 미착용", "event_status": null, "event_type": "no_hardhat_persistent", "frame_idx": 349, "frame_time": "2026-04-30 11:36:51", "instance_id": "0dd1b808", "last_assignment_source": "reconciled_to_real", "meta": {"gear_name": "안전모", "matched_cover": 0.958621048494742, "min_cover": 0.35, "stable_frames": 4, "track_kind": "manual", "violation_category": "안전모 미착용", "worker_identity_key": ["no_hardhat_persistent", "track_id", "1000009"]}, "persist_event": true, "record_type": "scenario_event", "scene_scale_profile": "near", "stable_frames": 4, "track_id": 1000009, "track_kind": "manual", "zone_id": null, "zone_name": null}
{"anchor_point": null, "cctv_id": "19", "created_at": "2026-04-30T11:36:53", "detail": {}, "event_id": null, "event_message": "안전모 미착용", "event_status": null, "event_type": "no_hardhat_persistent", "frame_idx": 358, "frame_time": "2026-04-30 11:36:52", "instance_id": "0dd1b808", "last_assignment_source": "real_match", "meta": {"gear_name": "안전모", "matched_cover": 0.9991705449189985, "min_cover": 0.35, "stable_frames": 1, "track_kind": "real", "violation_category": "안전모 미착용", "worker_identity_key": ["no_hardhat_persistent", "track_id", "17"]}, "persist_event": true, "record_type": "scenario_event", "scene_scale_profile": "near", "stable_frames": 1, "track_id": 17, "track_kind": "real", "zone_id": null, "zone_name": null}
{"cctv_id": "19", "created_at": "2026-04-30T11:36:53", "instance_id": "0dd1b808", "payload": {"active_detection_counts": {"안전모 미착용": 2, "작업자": 2}, "analysis_flags": {"summary_due": true}, "frame_counters": {"assigned_from_manual_pool": 1, "fall_candidate_rejected_duplicate_base": 1, "fall_candidate_seen": 1, "real_match_assigned": 3, "reconciled_to_real": 1, "tracker_online_targets": 3, "tracker_update_calls": 1, "unmatched_objects": 1}, "frame_idx": 360, "lifetime_counters": {"assigned_from_manual_pool": 331, "fall_candidate_accepted_edge_entry": 39, "fall_candidate_rejected_duplicate_base": 222, "fall_candidate_seen": 261, "pseudo_created": 36, "pseudo_promoted_to_manual": 9, "pseudo_reused": 15, "real_match_assigned": 290, "reconciled_to_real": 340, "tracker_online_targets": 297, "tracker_removed_tracks": 12, "tracker_update_calls": 360, "unmatched_objects": 391}, "scenario_analysis": {"_execution": {"_resolved_scenarios": ["no_hardhat_persistent", "falldown_detected", "danger_area_loitering"], "danger_area_loitering": {"returned_event_count": 0, "status": "returned_events"}, "falldown_detected": {"returned_event_count": 0, "status": "returned_events"}, "no_hardhat_persistent": {"returned_event_count": 0, "status": "returned_events"}}, "no_hardhat_persistent": {"active_violation_count": 3, "current_violation_count": 2, "pseudo_min_stable_frames": 3, "recovered_violation_count": 0, "recovery_grace_seconds": 2.0}}, "scene_metrics": {"안전모 미착용": {"bbox_area_ratio_median": 0.002905, "bbox_height_ratio_median": 0.069792, "bbox_height_ratio_p75": 0.088357, "bbox_width_ratio_median": 0.035937, "frame_presence_count": 43, "label_counts": {"no_helmet": 53}, "object_sample_count": 53}, "작업자": {"bbox_area_ratio_median": 0.031938, "bbox_height_ratio_median": 0.261806, "bbox_height_ratio_p75": 0.692361, "bbox_width_ratio_median": 0.145313, "frame_presence_count": 120, "label_counts": {"person": 177, "worker": 2}, "object_sample_count": 179}}, "scene_scale_metrics": {"sample_count": 542, "worker_height_ratio_median": 0.250868, "worker_small_worker_ratio": 0.0}, "scene_scale_profile": "near", "track_kind_counts": {"manual": 1, "pseudo": 0, "real": 3}}, "record_type": "tracking_summary"}
{"anchor_point": null, "cctv_id": "19", "created_at": "2026-04-30T11:37:00", "detail": {"candidate_count": 2, "candidate_state": "ground", "crouch_incident_active": false, "downward_motion_norm": 0.267741935483871, "edge_entry_override_used": false, "fall_accept_reason": "prev_worker_match", "fall_incident_active": true, "fall_recovery_emit_override_used": false, "features": {"bbox_h": 155.0, "bbox_h_over_w": 0.6831955922865014, "hip_ankle_x_ratio": 1.4919571045576407, "left_knee_deg": 100.7000237714897, "max_knee_deg": 100.7000237714897, "min_knee_deg": 82.49567039244879, "right_knee_deg": 82.49567039244879, "torso_angle_deg": 24.754951781960248, "torso_vertical_ratio": 0.3629032258064516, "worker_center_y": 548.0, "ygap_norm": 0.3435483870967742}, "from_fall_only": true, "ground_variant": "ground_front_back", "instant_state": "ground", "prev_stable_state": "crouch", "recent_fall_suppressed": true, "recent_ground_exit_suppressed": false, "scores": {"crouch": 0.42344088428103194, "ground": 0.7946390209203844, "ground_front_back": 0.68689836225674, "ground_side": 0.6555344321206968, "kneel": 0.4102512392163222, "standing": 0.14721280405170653}, "stable_state": "ground", "stable_state_dwell_seconds": 0.0, "standing_seen_before": true, "track_kind": "manual", "track_stable_frames": 25}, "event_id": 1000010, "event_message": "쓰러짐 감지", "event_status": null, "event_type": "falldown_detected", "frame_idx": 422, "frame_time": "2026-04-30 11:36:59", "instance_id": "0dd1b808", "last_assignment_source": "reconciled_to_real", "meta": {}, "persist_event": true, "record_type": "scenario_event", "scene_scale_profile": "near", "stable_frames": 25, "track_id": 1000010, "track_kind": "manual", "zone_id": null, "zone_name": null}
{"cctv_id": "19", "created_at": "2026-04-30T11:37:02", "instance_id": "0dd1b808", "record_counts": {"scenario_event": 22, "tracking_summary": 3}, "record_type": "session_stop"}
