예약 종료 후 룸 내 사람 존재 여부를 YOLO 객체 감지로 확인하는 시스템입니다.
전체 흐름
OccupancyAlert 상태
| 상태 | 설명 |
|---|
DETECTED | 최초 감지 (checkCount=1) |
ESCALATED | 재확인 시 여전히 감지 (checkCount 증가) |
RESOLVED | 해소됨 |
해소 사유
| resolvedReason | 설명 |
|---|
LEFT | 퇴실 확인 |
NEW_GUEST | 새로운 예약 손님 입실 |
컴포넌트
| 컴포넌트 | 역할 |
|---|
OccupancyCheckScheduler | 10분 간격 스케줄러 실행 |
OccupancyCheckService | 감지 로직 (기존 알림 재확인 + 신규 종료 예약 확인) |
HomeAssistantSnapshotClient | HA 카메라 프록시로 JPEG 스냅샷 조회 |
OccupancyDetectorClient | Python YOLO FastAPI 컨테이너 호출 |
OccupancyAlert 엔티티 | 감지 이력 추적 |
YOLO 컨테이너
- 프로토콜: POST multipart/form-data (JPEG 이미지)
- 응답:
hasOccupancy: 사람 존재 여부
personCount: 감지된 인원 수
blurredImage: 사람 영역 블러 처리된 이미지 (Base64)
Discord 알림
- 지점별
discordRoomOccupancyMonitoringThreadId가 설정된 지점만 활성화
- 감지 알림: 손님 정보 + 블러 처리된 이미지
- 해소 알림: 퇴실 확인 + 원본 스냅샷
- 에스컬레이션: 체크 횟수 + 블러 이미지
다중 인원 감지
별도 스케줄러(MultipleOccupancyCheckService)가 5분 간격으로 실행되어, 이용 중인 예약에서 2인 이상 감지 시 Discord 알림을 발송합니다.