move_detect/docs/INDEX.md
유창욱 d8cef54fe4 feat(report): safety operations report page + event-type filter
The benefit made visible: /report folds everything the system collects into
the one printable page a 안전관리자 takes into the weekly safety meeting.

- GET /api/report?days=N (7/30/90): severity totals, per-type counts,
  worst-camera ranking, response time (TTA - acknowledged critical/high only,
  FP-tagged rows excluded: dismissing a false alarm is not an emergency
  response; clock-skew guarded), the near-miss pyramid (near_fall vs
  fall/no_motion - the Heinrich argument in one ratio), FP rate, summed
  posture-load exposure, occupancy-rule violation counts. ergo_report rows
  feed the sums but are excluded from "감지 N건" (bookkeeping, not detection).
  Fail-closed site scoping throughout.
- /report view: KPI band (중대 이벤트 / 평균 대응 / 니어미스:사고 / 오탐율,
  each with its one-line reading), bar lists for types and cameras (critical
  presence highlighted), ergo bands as share-of-observed-time, rule tiles.
  Print CSS strips the app chrome - the 인쇄 button produces the meeting
  handout. New 리포트 nav tab.
- Events console: event-type filter beside severity - the INFO-volume types
  (near_fall, ergo_report) can now be folded out of the live stream, or a
  single type isolated for investigation.

Verified: PHPUnit 138 pass (3 new: aggregation math incl. TTA/FP-exclusion/
ergo sums, site scope, auth) + Chrome real-render of the full report (KPIs,
bar lists, rule tiles, footer) and the type filter isolating one type.
2026-08-07 07:17:48 +09:00

2.8 KiB

INDEX — 작업 기록 (완료 결과만)

  • 2026-08-07 안전 운영 리포트 /report (주간 안전회의용 인쇄 가능 한 장: 중대 이벤트· TTA(FP 제외)·니어미스 피라미드·오탐율·유형/카메라 순위·인체공학 노출·존 규칙 위반) + 이벤트 스트림 유형 필터. PHPUnit 138 + Chrome 실렌더(KPI/바리스트/타일/필터).

  • 2026-08-06 인체공학 자세부담 스코어링 (ergo_report/INFO, 카메라 단위 익명·스냅샷 미부착): REBA 밴드 노출시간(허리 20~60°/60°+·팔 90°+·웅크림<110°), 사고 상태 트랙 제외, 검출 공백 dt 상한. 상세뷰 지표 한글 렌더 — b358822. pytest 232/PHPUnit 135 + 실렌더.

  • 2026-08-06 납품 번들 재생성: dist/1_cafe24_upload + move-detect-cafe24.zip (마이그레이션 5종 동봉 — 빌드 스크립트에 staging 추가) · dist/2_pi_install --cross 재빌드 (aarch64/cp311 휠 11종 + HEF 다이제스트 검증 + SHA256SUMS). FLAG: MoveNet ONNX 업스트림 URL 404 → 이번 Pi 번들은 Hailo 단독(CPU 폴백 모델 미포함). edge/tools/fetch_movenet.py의 소스 URL 갱신 필요.

  • 2026-08-06 오탐 피드백 (결정 a: 통계만, 자동 튜닝 없음): 이벤트 오탐 태그 (POST /events/{id}/false-positive, ack 겸함, 최초 태거 보존) + GET /api/fp-stats + 콘솔 오탐율 패널(30일, 30%+ 강조). PHPUnit 135 + Chrome 실렌더(태그→행 전환→패널 즉시 갱신).

  • 2026-08-06 대시보드 장치→카메라 트리 레일 + (device,camera) 쌍 카메라 필터 — eaff176. PHPUnit 119 통과 + Chrome 실렌더 검증(트리 상태·필터·접기·콘솔 무오류).

  • 2026-08-06 감사 잔여 P2-6/7/8 종결 (ID 스왑 게이트 · sustained-prone FALLING · stale 트랙 no-data) — 32f2237. TDD(RED 확인), pytest 203 통과/2 skip. → delivery-audit 오프하드웨어 항목 43/43 완료. 잔여는 실장비(OFF-HW) 검증뿐.

  • 2026-08-06 연속성 문서 신설: CLAUDE.md · docs/PROJECT_MAP.md · 본 INDEX.

  • 2026-08-06 니어미스 히트맵: near_fall(FALLING→확정 전 회복, INFO) + 전 트랙 이벤트에 정규화 발좌표(spatial) 부착 → move_events.spatial_x/y 적재 → GET /api/heatmap/{camera} → 존 편집기 '위험 히트맵' 오버레이. 직전 커밋의 chk_events_type 제약 누락(신규 타입 INSERT 거부) 마이그레이션으로 수정. pytest 222/PHPUnit 130 + Chrome 실렌더.

  • 2026-08-06 존 점유 규칙 엔진 (2인1조 lone_worker/HIGH · 정원 overcapacity · 체류상한 overstay): edge occupancy.py + move_zones.rules_json + 존 편집기 규칙 입력 + 이벤트 유형 한글 라벨. pytest 216/PHPUnit 123 통과 + Chrome 실렌더(편집기 저장·목록·콘솔 라벨).