3.3 KiB
3.3 KiB
PROJECT_MAP — move_detect
작업 전 이 문서로 위치를 찾고 필요한 파일만 연다 (전체 재스캔 금지). 새 파일·라우트·스키마 변경 시 해당 섹션을 갱신할 것.
개요
작업장 안전 AI CCTV. Raspberry Pi 5 + Hailo-8 엣지 추론(Python) → HMAC POST → Cafe24 웹호스팅 PHP+MySQL 대시보드. 감지: 넘어짐 · 넘어짐 후 미동 · 장시간 부동 · 위험구역 침입(경고/절대금지/협착) · 유령사고(위험 상태로 소실). 스냅샷만 전송, 라이브뷰·영상 없음.
edge/ (Python — Pi에서 구동)
| 파일 | 역할 |
|---|---|
app.py |
run_once 파이프라인 (프레임→추론→추적→감지→스냅샷→전송). ambiguous 리셋·stale 필터 |
engine.py |
EventEngine — 감지기 오케스트레이션, 쿨다운 dedup, 트랙 forget |
tracking.py |
IouTracker — 전역 그리디 IoU 매칭, ambiguous() (교차 경합 트랙) |
detectors/ |
fall.py(FALLING→FALLEN→NO_MOTION, sustained prone) · immobility.py · ghost.py · zone.py |
smoothing.py |
트랙별 키포인트 스무딩 풀 |
snapshot.py |
RingBuffer · FaceBlurrer(PIPA) · Snapshotter |
alert.py / serverclient.py |
HMAC+nonce POST, 커스텀 UA, no-redirect |
queue.py |
오프라인 전송 큐 |
config.py |
env → Config (빈 CAFE24_URL/SECRET는 기동 실패) |
daemon.py / runtime.py / health.py |
상주 루프 · 하트비트 텔레메트리 |
adapters/ |
hailo_pose · movenet_pose(CPU 폴백) · picamera_source(CSI) · uvc_source(USB) |
probe.py / tools/ |
카메라 사전 점검 · HEF/모델 fetch (빌드머신 전용) |
server/ (PHP 8 + PDO — Cafe24)
- 진입:
public/index.php(라우트 전부 여기), 뷰:src/View/{layout,events,login,zones,event_detail}.php - 라우트:
POST /api/events(ingest, HMAC) ·POST /api/heartbeat·GET /api/config·GET /api/events·GET /api/devices·GET/POST /api/zones*·POST /login|/logout·GET /snap/{uuid}·POST /events/{id}/ack· 페이지/,/login,/zones,/events/{id}/view src/Ingest/HMAC+nonce+rate-limit+replay 방지 ·src/Auth/argon2id/세션/RBAC/CSRF ·src/Dashboard/이벤트목록·디바이스상태·존편집·스냅샷프록시 ·src/Repository/9종 (인터페이스+PDO)- 프런트:
public/assets/app.js(이벤트 콘솔 폴링·필터) ·device-tree.js(장치→카메라 트리 레일) ·zone-draw.js·detail.js·app.css - DB:
schema.sql(테이블 prefixmove_), 마이그레이션migrations/ - 배포:
server/deploy/build_cafe24_package.sh→ zip,server/docs/server-deploy.md
deploy/ · dist/ (납품)
deploy/: Pi 설치 —setup_online.sh,bundle/build_offline_bundle.sh(폐쇄망),systemd/move-detect-edge.service,device.env(사전 프로비저닝)dist/:1_cafe24_upload/·2_pi_install/·PROVISION_SECRETS.md
tests/
- Python:
tests/31파일 (pytest) — 하드웨어 필요 테스트는tests/hardware/+ skip 마커 - PHP:
server/tests/19파일 (phpunit, in-memory repo; PDO 통합은 skip 게이트)
docs/
delivery-audit.md(감사 43건, 전부 완료 — OFF-HW 실장비 검증만 잔여) · pilot-runbook.md ·
hardware-bringup.md · INDEX.md(작업 기록)