- 가입 화면: 수집 항목·목적·보유기간·거부권 안내문 + 필수 동의 체크박스
- SignupRequest: privacyConsent @NotNull @AssertTrue (서버가 최종 방어선)
- AuthService: 서비스 계층 이중 확인(defense in depth), 동의 시각은 서버 시계로 기록
- StudentProfile: privacy_consent_at 컬럼 추가 — boolean이 아닌 timestamp로 증빙
- 경리 CSV: '개인정보동의일' 열 추가 (감사 대비)
- 테스트 2개 추가: 동의 없으면(false/null) 400, 정상 가입 시 동의 시각 기록
→ 전체 14개 테스트 통과
운영 검증: 동의 false/누락 → 400, 동의 → 201 + DB privacy_consent_at 기록 확인
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>