일괄등록 사전 면접자 선별 설계안

1. 컨펌

현재 코드베이스 기준으로 “문서 일괄등록 미리보기 단계에서 지원자 기본정보와 문서 데이터를 기반으로 1차 면접자 선별”을 붙이는 방향은 가능하고, 구조적으로도 적합하다.

이유:

권장 UX는 전체 preview row를 보여주되, AI 추천 후보를 기본 선택 상태로 제안하는 방식이다. AI가 자동으로 탈락 처리하거나 저장 대상에서 강제 제외하면 위험하므로, 최종 선택은 HR 담당자가 한다.

2. 현재 흐름

현재 문서 기반 일괄등록 흐름:

ZIP/다중 파일 업로드
→ AiJob(DOCUMENT_BULK_IMPORT) 생성
→ 파일 staging
→ 문서 텍스트 추출
→ 지원자 기본정보 추론
→ 중복/필수값 검증
→ preview row 생성
→ CandidateDetailModal에서 미리보기 표시
→ HR이 선택 row 확정
→ candidate/document 저장

추가할 흐름:

문서 텍스트 추출
→ 지원자 기본정보 추론
→ 사전 면접자 선별 평가
→ screening_preview를 preview row에 저장
→ 추천/보류/비추천 상태를 미리보기에서 표시
→ 추천 후보를 기본 선택
→ HR이 최종 선택 row 확정
→ candidate/document 저장
→ 저장된 후보 상세/목록에서 선별 결과 조회

3. 적용 위치

Backend

위치 변경 방향
backend/services/document_bulk_import_service.py _build_preview_row()에서 profile/documents 생성 후 screening_preview 산정
backend/schemas/candidate.py DocumentBulkImportPreviewRowscreening_preview 필드 추가
backend/models/ai_job.py 기존 DOCUMENT_BULK_IMPORT preview job의 result_payload에 screening preview 포함
신규 모델 MVP에서는 추가하지 않음. 기존 AiJob.result_payloadAiJob.candidate_id를 재사용

Frontend

위치 변경 방향
frontend/src/features/manager/Candidate/types/index.ts DocumentBulkImportPreviewRow.screeningPreview 타입 추가
frontend/src/features/manager/Candidate/services/candidateService.ts snake_case screening_preview 매핑
CandidateDetailPage.tsx preview job polling 구조는 유지
CandidateDetailModal.tsx 미리보기 row 테이블에 추천 상태/점수/리스크/추천 사유 표시

4. 선별 기준점