Skip to content

[fix] 얼굴 인식 세션 후보를 고른 층 학생으로 제한하고 OTHER_FLOOR 제거 - #257

Merged
minwoo-3 merged 8 commits into
developfrom
fix/face-session-floor-candidates
Oct 27, 2026
Merged

minwoo-3 merged 8 commits into
developfrom
fix/face-session-floor-candidates

Conversation

@minwoo-3

Copy link
Copy Markdown
Contributor

✨ 작업 내용

  • 얼굴 인식 세션 후보를 요청한 floor 층 호실(예: 3층은 300~399호) 출석 대상 학생의 템플릿으로만 제한했습니다. FaceTemplateRepository.findAllEligibleInRooms(firstRoom, lastRoom)을 추가했고, 이제 쓰지 않는 전 층 조회 findAllEligible()은 제거했습니다.
  • OTHER_FLOOR 판정을 없앴습니다. 다른 층 학생은 처음부터 후보에 없으므로 AI가 맞히지 못하고 UNKNOWN 실패가 됩니다.
  • 세션을 만든 뒤 다른 층으로 옮긴 학생(후보 목록에는 남아 있음)도 출석 처리하지 않고 UNKNOWN으로 처리합니다. 층 도입 전 세션(floor null)은 지금처럼 층을 따지지 않습니다.
  • 실패가 쌓여 AI가 qrRecommended를 켜면 다른 층 학생이어도 그대로 내려주고 최근 인식에 실패로 남깁니다. 기존에는 OTHER_FLOOR일 때 꺼졌습니다.
  • swagger의 recognition.status 허용 값과 qrRecommended 설명에서 OTHER_FLOOR를 뺐습니다.
  • 요청 floor와 응답 floor 필드는 그대로 둡니다.

🔍 리뷰 시 참고사항

  • 층 계산은 Student.getDormitoryFloor()(호실 / 100)와 같고, 쿼리는 RoomService.getFloor처럼 BETWEEN 호실 범위를 씁니다.
  • maxCandidates(기본 200)는 바꾸지 않았습니다. 이제 상한이 층별 후보 수에 적용되므로 전 층 기준일 때보다 여유가 생깁니다. 한 층 학생이 200명을 넘을 일은 없다고 보았습니다.
  • 웹은 OTHER_FLOOR도 UNKNOWN으로 읽으므로 배포 순서와 상관없이 동작합니다(Client#361).
  • 검사: 로컬 PostgreSQL(compose)과 CI와 같은 테스트 env로 ./gradlew build를 실행해 통과했습니다. 실제 AI 서버와 카메라로 직접 확인하지는 않았습니다.

✅ 체크리스트

  • 문서(README, .env.example 등) 변경이 필요한 경우 작성 또는 수정했나요?
  • 작업한 코드가 정상적으로 동작하는 것을 직접 확인했나요?
  • 필요한 경우 테스트 코드를 작성하거나 수정했나요?
  • Merge 대상 브랜치를 올바르게 설정했나요?
  • PR에 관련 없는 작업이 포함되지 않았나요?
  • 적절한 라벨과 리뷰어를 설정했나요?

📎 관련 이슈(선택)

@minwoo-3
minwoo-3 merged commit 09bcb41 into develop Oct 27, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants