Skip to content

[feat] DataGSM 학생 제외 목록 - #243

Merged
minwoo-3 merged 9 commits into
developfrom
feat/student-exclusion-list
Oct 10, 2026
Merged

minwoo-3 merged 9 commits into
developfrom
feat/student-exclusion-list

Conversation

@minwoo-3

Copy link
Copy Markdown
Contributor

✨ 작업 내용

DataGSM 학생 목록에 섞인 실제 학생이 아닌 데이터(301호 "사감선생님")를 서버 설정의 제외 목록으로 뺍니다(DEC-034).

  • StudentExclusionProperties: CHECKUP_EXCLUDED_DATAGSM_STUDENT_IDS(쉼표 구분)를 checkup.student.excluded-datagsm-ids로 읽습니다. 설정이 없으면 빈 목록입니다.
  • 학생 동기화(StudentSyncService.syncAll, 웹훅·수동 동기화 공통): 제외 학생은 조회 전에 걸러서 새로 저장하지도 갱신하지도 않습니다.
  • 로그인(AuthService): 제외 학생 계정은 UNSUPPORTED_ACCOUNT(403)로 거부하고 회원·학생을 만들지 않습니다. 관리자 허용 목록에 있어도 거부합니다.
  • compose.prod.yaml, .env.example에 변수를 추가했습니다.

🔍 리뷰 시 참고사항

배포 뒤 운영에서 할 일

  1. 운영 .env에 CHECKUP_EXCLUDED_DATAGSM_STUDENT_IDS=<사감선생님 student_id>를 넣고 재배포합니다.
  2. 이미 저장된 행을 한 번 지웁니다. 출석·알림·얼굴 등 연관 기록은 ON DELETE CASCADE로 같이 지워집니다.
    SELECT id, name, dormitory_room, member_id FROM student WHERE datagsm_student_id = <id>;
    DELETE FROM student WHERE datagsm_student_id = <id>;
    반드시 1번을 먼저 하세요. 순서를 바꾸면 그 사이에 동기화가 돌 때 행이 다시 생깁니다.

실행한 검사

  • StudentExclusionPropertiesTest(2), StudentSyncServiceTest(13), WebhookServiceTest(22), AuthServiceTest(23) 통과
  • 로컬 ./gradlew build: 599개 중 134개 실패. 실패한 테스트는 모두 로컬 Postgres(localhost:5433)·Redis에 연결하지 못한 것입니다. CI에서 확인합니다.
  • 미확인: 실제 운영 데이터로 동기화·로그인 확인

✅ 체크리스트

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

📎 관련 이슈(선택)

@minwoo-3
minwoo-3 merged commit a6346a6 into develop Oct 10, 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