Skip to content

실시간 얼굴 인식과 출석 기록 연동 #17

@quirinal36

Description

@quirinal36

개요

실시간 얼굴 인식 스트림에서 인물이 인식되면 자동으로 출석을 기록하는 로직을 구현합니다.

선행 작업

배경

현재 generate_frames() 함수에서 실시간으로 얼굴을 인식하고 있습니다. 여기에 출석 기록 로직을 연동하여, 인식된 인물을 자동으로 출석 처리합니다.

요구사항

출석 기록 트리거 조건

  • 얼굴이 인식(recognized) 되었을 때 (Unknown 제외)
  • 신뢰도(confidence)가 임계값(0.5) 이상일 때
  • 해당 인물이 당일 미출석 상태일 때

중복 방지 전략 (2단계)

  1. 메모리 캐시: 당일 출석 완료된 face_id를 메모리에 캐싱하여 DB 조회 최소화
  2. DB 제약조건: UNIQUE(face_id, date) + INSERT OR IGNORE로 최종 방어

구현 항목

  • generate_frames() 내에 출석 기록 로직 추가
    • 인식 성공 시 → 당일 출석 여부 확인 (메모리 캐시 우선) → 미출석이면 기록
  • 당일 출석 캐시 구현 (daily reset)
    • _today_attendance_cache: Set[str] - 당일 출석 완료된 face_id 집합
    • 자정에 자동 리셋 (날짜 변경 감지)
  • 카메라 통계(_camera_stats)에 출석 정보 추가
    • today_attendance_count: 오늘 총 출석 인원
    • latest_attendance: 가장 최근 출석 기록

성능 고려사항

  • 프레임마다 DB 쓰기 방지 (캐시 활용)
  • 비동기 처리 또는 별도 스레드에서 DB 기록
  • 인식 결과가 안정적일 때만 기록 (연속 N프레임 인식 시)

완료 기준

  • 카메라에 얼굴이 인식되면 자동으로 출석 기록
  • 같은 날 동일 인물은 1회만 기록
  • 카메라 통계에 출석 정보 포함
  • 성능 저하 없이 실시간 스트리밍 유지

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions