-- 1.2.0 — 추락(fall_from_height) 유형 추가 -- -- 이 제품이 잡던 것은 같은 높이에서의 '넘어짐'(fall)이었고, 산업재해 사망 1위 유형인 -- '떨어짐'은 잡지 못했다. 둘은 다른 사건이라 유형을 나눈다: -- fall — 같은 높이에서 쓰러짐. 심각도 HIGH. -- fall_from_height — 높이에서 떨어짐. 심각도 CRITICAL. -- 척추·두부 손상 가능성이 있어 함부로 옮기면 안 되고, 그 주의가 통보에 실려야 한다. -- -- 적용 조건: 2026-08-09-safety-platform.sql 이후. -- -- ★ 이 블록은 문법이 DB 엔진마다 다릅니다 — 2026-08-09 마이그레이션 §9 의 안내와 동일합니다. -- -- 이 CHECK 는 **2차 방어선**이지 검증 계층이 아닙니다. 1차 검증은 App\Ingest\EventValidator -- 이고(그쪽은 이미 신규 유형을 받습니다), tests/test_event_type_parity.py 가 둘의 일치를 -- 강제합니다. 따라서 이 블록을 건너뛰어도 시스템은 동작하지만, **신규 유형의 INSERT 가 -- 제약 위반으로 거부**되므로 아래 셋 중 맞는 것을 반드시 하나 실행하십시오. -- -- (A) MySQL 8.0.16 이상: -- ALTER TABLE move_events DROP CHECK chk_events_type; -- -- (B) MariaDB (10.2.22+): -- ALTER TABLE move_events DROP CONSTRAINT chk_events_type; -- -- (C) 제약이 애초에 없는 환경 (MySQL 5.7): -- DROP 을 건너뛰고 아래 ADD 만 실행하십시오. -- -- 어느 것인지 모르겠다면: SELECT VERSION(); ALTER TABLE move_events DROP CHECK chk_events_type; ALTER TABLE move_events ADD CONSTRAINT chk_events_type CHECK (event_type IN ( 'fall','fall_from_height','no_motion','immobility','ghost','zone_warning', 'zone_restricted','pinch','monitoring_degraded','device_fault', 'lone_worker','overcapacity','overstay','near_fall','ergo_report', 'camera_moved','camera_obstructed','low_light', 'unacked_escalation','multi_down', 'ppe_missing','proximity','fire_smoke' ));