개발 요구 사항
목적
채용 프로세스 전 과정(공고 등록 → 지원 접수 → 서류 검토 → 면접 → 합불 통보)을 하나의 웹 플랫폼으로 구현하고, AI 기술을 접목하여 이력서 분석과 정보 검색을 자동화한다.
개발 범위
| 요구 ID | 기능 | 검수 기준 |
|---|---|---|
| SFR-001 | 이력서 파싱 — PDF/DOCX 업로드 시 이름·학력·경력·기술스택 자동 추출 | 주요 필드 추출 정확도 90% 이상 |
| SFR-002 | 칸반 보드 — 지원자 카드를 드래그하여 채용 단계 전환 | 상태 전환 시 DB 반영 200ms 이내 |
| SFR-003 | Tool-Calling Agent — 자연어 명령으로 지원자 검색·일정 조회·통계 요청 처리 | 도구 호출 정확도 85% 이상, 지원 도구 5종 이상 |
| SFR-004 | RAG 질의응답 — 이력서·채용 공고 기반 자연어 질의응답 (pgvector) | Top-5 문서 추출 Recall@5 90% 이상 |
| SFR-005 | 지원자 관리 — 지원자 CRUD, 검색·필터링, 채용 단계별 목록 조회 | 전체 CRUD 정상 동작, 페이지네이션 지원 |
| SFR-006 | 이메일 알림 — 채용 단계 변경 시 SES 기반 자동 이메일 발송 | SQS 큐 연동, 발송 성공률 99% 이상 |
채용 프로세스 자동화
칸반 보드를 중심으로 채용 전 과정을 관리한다.
단계 흐름:
지원 접수 → 서류 검토 → 1차 면접 → 2차 면접 → 최종 합격 / 불합격
- 각 단계 전환 시 단계 이력이 자동으로 기록된다
- 단계 변경 시 지원자에게 자동 메일이 발송된다 (SQS + SES 비동기 처리)
- 면접관 배정 및 단계별 평가(점수·코멘트)를 기록한다
- 모든 이동과 평가는 이력으로 남아 추후 감사 추적이 가능하다
AI 기반 이력서 분석
| 기능 | 설명 | 기술 |
|---|---|---|
| 이력서 파싱 | PDF/DOCX에서 이름·학력·경력·기술스택을 구조화 데이터로 추출 | Python, LLM |
| RAG 질의응답 | 이력서와 공고 내용을 임베딩하여 자연어 질의에 답변 | pgvector, Claude API |
| Tool-Calling Agent | 자연어 명령을 도구 호출로 변환하여 검색·통계 처리 | Claude Tool Use |
AI가 합불을 결정하지 않는다. 합불 확정은 항상 사람이 한다. (ADR-0003)
지원자 통합 관리 기능
- 지원자 CRUD — 지원자 등록·조회·수정·삭제
- 검색·필터 — 이름·학교·기술스택 기반 검색, 더미 데이터 10만 건 기준 인덱스 튜닝
- 면접관 배정 — 단계별 면접관을 지정하고 평가를 기록
- 공개 지원 폼 — 로그인 없이 외부 링크로 지원서 제출, 이력서 S3 presigned URL 업로드
- 모바일 대응 — 모바일에서도 지원자 목록·상세를 조회할 수 있는 반응형 UI
보안 및 개인정보 보호
| 요구 ID | 항목 | 검수 기준 |
|---|---|---|
| SEC-001 | 인증·인가 — JWT 기반 인증, CORS 설정, 개인정보 암호화 | 미인증 요청 401/403 차단, 개인정보 AES-256 암호화 |
| SEC-002 | 데이터 보안 — 이력서 파일 S3 암호화 저장, 접근 권한 IAM 기반 제어 | S3 SSE 활성화, IAM 정책 적용 |
역할 기반 접근 제어 (RBAC):
| 역할 | 권한 범위 |
|---|---|
| 관리자 | 전체 시스템 설정, 사용자 관리, 모든 데이터 접근 |
| 채용담당자 | 공고 관리, 지원자 관리, 단계 전환, 면접관 배정 |
| 면접관 | 배정된 지원자 조회, 평가 입력 |