Skip to content

[Feat] 지원서 평가 어드민 기능 + 관리자 본인 정보 기능#171

Merged
seoyeon83 merged 25 commits into
devfrom
feat/#170-applicant-evaluation
Jun 25, 2026
Merged

[Feat] 지원서 평가 어드민 기능 + 관리자 본인 정보 기능#171
seoyeon83 merged 25 commits into
devfrom
feat/#170-applicant-evaluation

Conversation

@seoyeon83

Copy link
Copy Markdown
Member

💡 개요

지원서 평가(어드민) 기능. dev 통합 및 CI 검증용 PR입니다. (main 반영은 별도 PR로 진행)

🪐 주요 변경 사항

  • 지원서 평가 어드민 기능 신규 구현 (applicant_eval 도메인 + 평가 API 8종)
  • 차기대표진(SUPER + 차기대표진) 신설 — 전 부문 조회·평가, 최종평가는 현재+차기 대표진
  • applicant.final_decision 컬럼, applicant_eval 테이블(면접 질문 포함) 추가
  • 관리자 본인 정보 조회 API(/admin/me) 추가
  • data.sql 평가 시드 데이터 반영(차기대표진/final_decision/applicant_eval)

✅ 상세 내용

  • 전체 지원서 조회 (지원자 대시보드, DRAFT 포함) / 전체 지원서 및 평가 조회 (평가 대시보드, 서버 집계 + 본인 my_decision)
  • 개인 평가 저장(upsert) — 네이티브 ON DUPLICATE KEY UPDATE로 멱등·동시성 보장, 결정·점수·메모·면접질문 동시 저장
  • 개인 평가 조회 / 지원서별 평가 조회 / 지원서별 면접 질문 조회 / 지원서 답변 조회
  • 최종 평가 수정 — 현재/차기 대표진만 (현재 대표진은 본인 부문 한정)
  • 부문 접근 통제: 차기대표진은 전 부문, 그 외(현재 대표진 포함)는 본인 부문만(타 부문 403)
  • 평가자 풀 = 해당 부문 평가자 + 차기대표진(전 부문)
  • 4계층 테스트 추가(Service / Controller @WebMvcTest / Repository·통합 Testcontainers)

🔔 참고 사항

  • @coderabbitai ignore — 본 PR은 CodeRabbit 리뷰 제외
  • dev 통합/CI 검증 목적. CD는 main에서만 트리거되므로 배포 영향 없음

seoyeon83 and others added 25 commits June 4, 2026 17:58
스키마 자동 변경(update)을 끄고 엔티티-스키마 정합성 검증(validate)만 수행.
실유저 데이터 보호 목적. 배포 직전 RDS 스냅샷 전제.
프론트 정식 도메인(www) 전환에 맞춰 백엔드 설정 정리.
- oauth2 redirect-uri / failure-redirect-uri / allowed-redirect-uris: prod-www 제거, www 사용
- cors allowed-origins: prod-www 및 로컬 개발용 origin 제거 (www/dev/api만 유지)
로그가 무한 적재되어 디스크 풀나는 것 방지. 파일 로그(logback)와 journald 둘 다 캡.
- application-prod.yml: logback rollingpolicy (max-file-size 50MB / max-history 14 / total-size-cap 1GB)
- systemd/journald-boaz.conf 신규: SystemMaxUse 500M, RuntimeMaxUse 200M
- appspec.yml: journald 드롭인을 /etc/systemd/journald.conf.d로 배포
- after_install.sh: systemctl restart systemd-journald
dev push가 프로덕션으로 자동 배포되던 것을 막고, main push에서만 CD 실행.
(workflow_run은 default 브랜치의 cd.yml을 사용하므로, 컷오버 후 default를 main으로 전환해야 완전 적용)
섹션 헤더/디렉티브의 선행 공백 제거. 동작 변경 없이 형식만 정리.
(systemd 252는 선행 공백을 허용하나 비표준이라 정돈)
[Chore] main에 배포, 프로덕션 정식 배포 컷오버 설정
- findCurrentOrUpcoming 쿼리 추가: endDate 미경과 공고 중 startDate 가장 임박한 것 반환
- getRecruitmentStatus: 예정 공고 존재 시 is_active:false여도 term 반환
- getRecruitment: is_active 여부와 무관하게 모든 필드 반환
…-upcoming

[Fix] 모집 예정 공고 조회 시 일정 데이터 미반환 문제 수정
- Track enum에 한글 displayName 필드 추가 (분석/시각화/엔지니어링)
- getQuestions()에서 {Track}→{부문} 플레이스홀더 및 track.name()→getDisplayName() 수정
…play-name

[Fix] #168 질문 조회 API 부문명 치환 오류 수정
- applicant_eval 엔티티 + applicant.final_decision 컬럼 추가
- 지원자/평가 대시보드 조회, 최종 평가 수정(대표진), 지원서별/개인 평가 조회, 개인 평가 저장(upsert)
- 권한 검증(대표진 SUPER&대표진, 쓰기 본인 부문 제한) + 평가 집계 서버 계산
- 개인 평가 저장은 네이티브 ON DUPLICATE KEY UPDATE로 동시성 멱등 보장
같은 트랜잭션에서 applicant/admin 저장 직후 네이티브 INSERT 실행 시
FK 대상 미flush로 인한 위반 방지 (통합 테스트 환경 보정)
- Service(Mockito): 집계·권한·부문·예외 분기
- Controller(@WebMvcTest): 계약·@Valid·401/403
- Repository(Testcontainers): upsert insert/update/멱등/null
- 통합(@SpringBootTest): 저장→집계, upsert 재저장, 권한
GET /api/v1/admin/accounts/me 엔드포인트로 인증된 본인의 id, 소속, 이름 반환
- 전체 주석 해제하여 local(sql.init always+ddl create) 시드 복구
- applicants에 final_decision 명시 (NOT NULL, DB 기본값 없음)
- 차기대표진 + 부문별 평가자 admin 추가, applicant_eval 시드 5건 추가
@seoyeon83 seoyeon83 changed the title #170 지원서 평가 어드민 기능 [Feat] 지원서 평가 어드민 기능 + 관리자 본인 정보 기능 Jun 25, 2026
@seoyeon83 seoyeon83 self-assigned this Jun 25, 2026
@seoyeon83
seoyeon83 merged commit 5c21850 into dev Jun 25, 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.

1 participant