{"active_scenarios": ["no_hardhat_persistent", "falldown_detected", "ppe_status_check"], "analysis_config": {"flush_interval_seconds": 15.0, "include_event_records": true, "max_buffer_records": 32, "summary_interval_frames": 120, "summary_only": true}, "cctv_id": "26", "created_at": "2026-06-22T12:55:12", "instance_id": "f8db45f7", "record_type": "session_start", "source_url": "file:///data/playlist/uploads/251027_fall_test_input_video/해상도편집/강진광주_넘어짐_헬멧미착용_샘플/강진광주_쓰러짐_헬멧미착용_샘플__fix_20251114_150454.mp4"}
{"anchor_point": null, "cctv_id": "26", "created_at": "2026-06-22T12:55:27", "detail": {"candidate_count": 2, "candidate_state": "ground", "crouch_incident_active": false, "downward_motion_norm": 0.18781179975169573, "edge_entry_override_used": false, "fall_accept_reason": null, "fall_incident_active": true, "fall_recovery_emit_override_used": false, "features": {"bbox_h": 129.0, "bbox_h_over_w": 1.0455927051671732, "hip_ankle_x_ratio": 0.9974226804123711, "left_knee_deg": 69.84948572758829, "max_knee_deg": 87.2692254633009, "min_knee_deg": 69.84948572758829, "right_knee_deg": 87.2692254633009, "torso_angle_deg": 146.6370663226357, "torso_vertical_ratio": 0.2751937984496124, "worker_center_y": 574.0, "ygap_norm": 0.0}, "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.32, "ground": 0.7740555628372501, "ground_front_back": 0.5733950698191667, "ground_side": 0.7740555628372501, "kneel": 0.3, "standing": 0.15}, "stable_state": "ground", "stable_state_dwell_seconds": 0.0, "standing_seen_before": true, "track_kind": "real", "track_stable_frames": 6}, "event_id": 3, "event_message": "쓰러짐 감지", "event_status": null, "event_type": "falldown_detected", "frame_idx": 78, "frame_time": "2026-06-22 12:55:27", "instance_id": "f8db45f7", "last_assignment_source": "manual_pool_reuse", "meta": {}, "persist_event": true, "record_type": "scenario_event", "scene_scale_profile": "near", "stable_frames": 6, "track_id": 3, "track_kind": "real", "zone_id": null, "zone_name": null}
{"anchor_point": null, "cctv_id": "26", "created_at": "2026-06-22T12:55:32", "detail": {"candidate_count": 5, "candidate_state": "ground", "crouch_incident_active": false, "downward_motion_norm": 0.16914987275094698, "edge_entry_override_used": false, "fall_accept_reason": null, "fall_incident_active": true, "fall_recovery_emit_override_used": false, "features": {"bbox_h": 82.5, "bbox_h_over_w": 0.7783018867924528, "hip_ankle_x_ratio": 0.95, "left_knee_deg": 169.99629335848888, "max_knee_deg": 169.99629335848888, "min_knee_deg": 165.2696633649739, "right_knee_deg": 165.2696633649739, "torso_angle_deg": 82.75130164242617, "torso_vertical_ratio": 0.08787878787878788, "worker_center_y": 527.0, "ygap_norm": 0.6303030303030303}, "from_fall_only": false, "ground_variant": "ground_side", "instant_state": "ground", "prev_stable_state": "ground", "recent_fall_suppressed": true, "recent_ground_exit_suppressed": false, "scores": {"crouch": 0.3394834409293037, "ground": 0.7718318617248073, "ground_front_back": 0.434372391677047, "ground_side": 0.7718318617248073, "kneel": 0.4952941285371792, "standing": 0.2225084573388951}, "stable_state": "ground", "stable_state_dwell_seconds": 0.5327861309051514, "standing_seen_before": false, "track_kind": "real", "track_stable_frames": 7}, "event_id": 15, "event_message": "쓰러짐 감지", "event_status": null, "event_type": "falldown_detected", "frame_idx": 114, "frame_time": "2026-06-22 12:55:32", "instance_id": "f8db45f7", "last_assignment_source": "real_match", "meta": {}, "persist_event": true, "record_type": "scenario_event", "scene_scale_profile": "near", "stable_frames": 7, "track_id": 15, "track_kind": "real", "zone_id": null, "zone_name": null}
{"cctv_id": "26", "created_at": "2026-06-22T12:55:33", "instance_id": "f8db45f7", "payload": {"active_detection_counts": {"작업자": 2}, "analysis_flags": {"summary_due": true}, "frame_counters": {"assigned_from_manual_pool": 1, "pseudo_promoted_to_manual": 1, "reconciled_to_real": 1, "tracker_update_calls": 1, "unmatched_objects": 2}, "frame_idx": 120, "lifetime_counters": {"assigned_from_manual_pool": 31, "assigned_from_recent_track": 1, "pseudo_created": 4, "pseudo_promoted_to_manual": 2, "pseudo_reused": 2, "real_match_assigned": 138, "reconciled_to_real": 5, "tracker_online_targets": 140, "tracker_removed_tracks": 10, "tracker_update_calls": 120, "unmatched_objects": 40}, "scenario_analysis": {"_execution": {"_resolved_scenarios": ["no_hardhat_persistent", "falldown_detected", "ppe_status_check"], "falldown_detected": {"returned_event_count": 0, "status": "returned_events"}, "no_hardhat_persistent": {"returned_event_count": 0, "status": "returned_events"}, "ppe_status_check": {"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.004335, "bbox_height_ratio_median": 0.091319, "bbox_height_ratio_p75": 0.091667, "bbox_width_ratio_median": 0.047461, "frame_presence_count": 2, "label_counts": {"harness": 2}, "object_sample_count": 2}, "안전모 착용": {"bbox_area_ratio_median": 0.004788, "bbox_height_ratio_median": 0.110764, "bbox_height_ratio_p75": 0.132986, "bbox_width_ratio_median": 0.042871, "frame_presence_count": 53, "label_counts": {"helmet": 53}, "object_sample_count": 53}, "작업자": {"bbox_area_ratio_median": 0.017912, "bbox_height_ratio_median": 0.183333, "bbox_height_ratio_p75": 0.654669, "bbox_width_ratio_median": 0.099316, "frame_presence_count": 107, "label_counts": {"person": 72, "worker": 51}, "object_sample_count": 123}}, "scene_scale_metrics": {"sample_count": 123, "worker_height_ratio_median": 0.183333, "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": "26", "created_at": "2026-06-22T12:55:35", "detail": {}, "event_id": null, "event_message": "안전모 미착용", "event_status": null, "event_type": "no_hardhat_persistent", "frame_idx": 133, "frame_time": "2026-06-22 12:55:35", "instance_id": "f8db45f7", "last_assignment_source": "manual_pool_reuse", "meta": {"gear_name": "안전모", "matched_cover": 1.0, "min_cover": 0.35, "stable_frames": 15, "track_kind": "real", "violation_category": "안전모 미착용", "worker_identity_key": ["no_hardhat_persistent", "track_id", "3"]}, "persist_event": true, "record_type": "scenario_event", "scene_scale_profile": "near", "stable_frames": 15, "track_id": 3, "track_kind": "real", "zone_id": null, "zone_name": null}
{"anchor_point": null, "cctv_id": "26", "created_at": "2026-06-22T12:55:38", "detail": {}, "event_id": null, "event_message": "안전모 미착용", "event_status": null, "event_type": "no_hardhat_persistent", "frame_idx": 145, "frame_time": "2026-06-22 12:55:38", "instance_id": "f8db45f7", "last_assignment_source": "manual_pool_reuse", "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": "26", "created_at": "2026-06-22T12:55:47", "detail": {}, "event_id": null, "event_message": "안전모 미착용", "event_status": null, "event_type": "no_hardhat_persistent", "frame_idx": 202, "frame_time": "2026-06-22 12:55:47", "instance_id": "f8db45f7", "last_assignment_source": "reconciled_to_real", "meta": {"gear_name": "안전모", "matched_cover": 1.0, "min_cover": 0.35, "stable_frames": 17, "track_kind": "manual", "violation_category": "안전모 미착용", "worker_identity_key": ["no_hardhat_persistent", "track_id", "1000010"]}, "persist_event": true, "record_type": "scenario_event", "scene_scale_profile": "near", "stable_frames": 17, "track_id": 1000010, "track_kind": "manual", "zone_id": null, "zone_name": null}
{"anchor_point": null, "cctv_id": "26", "created_at": "2026-06-22T12:55:52", "detail": {}, "event_id": null, "event_message": "안전모 미착용", "event_status": null, "event_type": "no_hardhat_persistent", "frame_idx": 227, "frame_time": "2026-06-22 12:55:52", "instance_id": "f8db45f7", "last_assignment_source": "reconciled_to_real", "meta": {"gear_name": "안전모", "matched_cover": 0.9900541083757267, "min_cover": 0.35, "stable_frames": 25, "track_kind": "manual", "violation_category": "안전모 미착용", "worker_identity_key": ["no_hardhat_persistent", "track_id", "1000011"]}, "persist_event": true, "record_type": "scenario_event", "scene_scale_profile": "near", "stable_frames": 25, "track_id": 1000011, "track_kind": "manual", "zone_id": null, "zone_name": null}
{"cctv_id": "26", "created_at": "2026-06-22T12:55:55", "instance_id": "f8db45f7", "payload": {"active_detection_counts": {"안전모 미착용": 2, "작업자": 2}, "analysis_flags": {"summary_due": true}, "frame_counters": {"assigned_from_manual_pool": 4, "reconciled_to_real": 4, "tracker_update_calls": 1, "unmatched_objects": 4}, "frame_idx": 240, "lifetime_counters": {"assigned_from_manual_pool": 264, "assigned_from_recent_track": 2, "pseudo_created": 43, "pseudo_promoted_to_manual": 17, "pseudo_reused": 24, "real_match_assigned": 149, "reconciled_to_real": 198, "tracker_online_targets": 151, "tracker_removed_tracks": 16, "tracker_update_calls": 240, "unmatched_objects": 350}, "scenario_analysis": {"_execution": {"_resolved_scenarios": ["no_hardhat_persistent", "falldown_detected", "ppe_status_check"], "falldown_detected": {"returned_event_count": 0, "status": "returned_events"}, "no_hardhat_persistent": {"returned_event_count": 0, "status": "returned_events"}, "ppe_status_check": {"returned_event_count": 0, "status": "returned_events"}}, "no_hardhat_persistent": {"active_violation_count": 2, "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.009924, "bbox_height_ratio_median": 0.127083, "bbox_height_ratio_p75": 0.19375, "bbox_width_ratio_median": 0.080127, "frame_presence_count": 10, "label_counts": {"harness": 10}, "object_sample_count": 10}, "안전모 미착용": {"bbox_area_ratio_median": 0.003536, "bbox_height_ratio_median": 0.084722, "bbox_height_ratio_p75": 0.09375, "bbox_width_ratio_median": 0.043018, "frame_presence_count": 48, "label_counts": {"no_helmet": 54}, "object_sample_count": 54}, "안전모 착용": {"bbox_area_ratio_median": 0.002933, "bbox_height_ratio_median": 0.084028, "bbox_height_ratio_p75": 0.0875, "bbox_width_ratio_median": 0.035156, "frame_presence_count": 33, "label_counts": {"helmet": 34}, "object_sample_count": 34}, "작업자": {"bbox_area_ratio_median": 0.034234, "bbox_height_ratio_median": 0.399095, "bbox_height_ratio_p75": 0.500442, "bbox_width_ratio_median": 0.113184, "frame_presence_count": 118, "label_counts": {"person": 127, "worker": 96}, "object_sample_count": 223}}, "scene_scale_metrics": {"sample_count": 346, "worker_height_ratio_median": 0.255208, "worker_small_worker_ratio": 0.0}, "scene_scale_profile": "near", "track_kind_counts": {"manual": 4, "pseudo": 0, "real": 0}}, "record_type": "tracking_summary"}
{"anchor_point": null, "cctv_id": "26", "created_at": "2026-06-22T12:56:02", "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": 18.25, "left_knee_deg": 173.63944917651438, "max_knee_deg": 173.63944917651438, "min_knee_deg": 171.59515885875896, "right_knee_deg": 171.59515885875896, "torso_angle_deg": 77.56676481190436, "torso_vertical_ratio": 0.15053763440860216, "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.19120463709677418, "ground": 0.8207960165032477, "ground_front_back": 0.49422009435117953, "ground_side": 0.8207960165032477, "kneel": 0.4329637096774194, "standing": 0.24290198798171114}, "stable_state": "ground", "stable_state_dwell_seconds": 0.0, "standing_seen_before": true, "track_kind": "manual", "track_stable_frames": 52}, "event_id": 1000015, "event_message": "쓰러짐 감지", "event_status": null, "event_type": "falldown_detected", "frame_idx": 281, "frame_time": "2026-06-22 12:56:02", "instance_id": "f8db45f7", "last_assignment_source": "reconciled_to_real", "meta": {}, "persist_event": true, "record_type": "scenario_event", "scene_scale_profile": "near", "stable_frames": 52, "track_id": 1000015, "track_kind": "manual", "zone_id": null, "zone_name": null}
{"cctv_id": "26", "created_at": "2026-06-22T12:56:13", "instance_id": "f8db45f7", "record_counts": {"scenario_debug": 0, "scenario_event": 7, "tracking_summary": 2}, "record_type": "session_stop"}
