Commit graph

1 commit

Author SHA1 Message Date
유창욱
ccbc233fdd docs: 신규 감지 3종 설계안 (추락·동시 다발·구역 프리셋)
AI CCTV 목적 재점검에서 나온 세 가지. 공통점은 새 추론 모델이 필요 없다는
것 — 지금 있는 자세추정·구역·트랙 이력만으로 판정이 선다.

추락: 지금 가장 큰 공백이다. GhostIncidentDetector 는 트랙이 이미 위험 자세일
때만 무장하므로(_DANGEROUS), 발판에 서 있다가 떨어지는 사람은 소실 순간
STANDING 이라 아무것도 안 걸린다. 잡고 있는 것은 같은 높이의 '넘어짐'이고
사망 1위 유형인 '떨어짐'과는 다른 사건이다.

설계의 핵심은 bbox 중심이 아니라 **하단(y2)** 을 본다는 것. 쭈그려 앉으면
중심은 내려가지만 발은 그 자리에 있고, 추락은 발 밑선이 통째로 내려간다.
중심으로 판정하면 쭈그려 앉는 작업자가 전부 추락이 된다. 원근 접근은 높이
증가 가드로 따로 막는다. Track.frames 가 90프레임(7.5초)을 들고 있어 별도
버퍼가 필요 없고, 고소 구역은 rules_json 의 elevated 키로 스키마 변경 없이
붙는다(구역이 없어도 동작 — 선언이 없어도 최소한은 본다).

동시 다발: 같은 자리에서 짧은 시간에 둘이 쓰러진 것은 넘어짐 두 건이 아니라
질식·가스·폭발이다. 이 이벤트의 값어치는 감지가 아니라 통보 문구에 있다 —
밀폐공간 사망자의 상당수가 구조하러 들어간 사람이므로, "공기호흡기 없이
진입 금지"가 메시지에 실려야 한다. 가스는 화각을 존중하지 않으므로 노드를
넘는 판단이 필요해 서버에 둔다. 현장 즉시 대응은 첫 쓰러짐의 경광등이 이미
확보하므로 서버가 늦어도 잃는 것이 없다. 오탐 방어의 핵심은 근접성 —
넓은 공장에서 2분 안의 무관한 넘어짐 두 건은 실제로 일어난다.

프리셋: 밀폐공간 감시에 필요한 것(제한구역+2인1조+체류상한+정원)은 이미
전부 있는데, 제품이 "min_workers 를 넣으세요"라고만 말한다. 안전관리자는
min_workers 가 아니라 밀폐공간을 생각한다. 값과 화면만으로 감지 범위가
체감상 크게 넓어진다.

설계 중 확인한 잠복 결함: occupancy.py 의 `if max_workers and ...` 때문에
max_workers: 0 이 falsy 로 걸러져 규칙이 통째로 꺼진다. 즉 "아무도 있으면
안 되는 구역"(크레인 짐 아래·굴착기 선회 반경 — 깔림 사고의 전형)을 표현할
방법이 현재 없다. 운영자가 설정할 수 있는데 조용히 아무 일도 하지 않는 종류라
프리셋보다 먼저 고쳐야 한다.

구현하지 않았다. 설계안만.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EBjuR7DW6PNNMows4KnbYU
2026-09-05 07:29:48 +09:00