sequenceDiagram
autonumber
actor Admin as 관리자/사용자
participant API as Backend API
participant DB as PostgreSQL
participant S3 as Storage
participant AI as AI(OCR/LLM)
Note over Admin, AI: [1] 계정 및 인증 (FR-01, FR-02)
Admin->>API: 로그인 요청
API->>DB: 계정 및 승인상태 확인
DB-->>API: 정보 반환
API-->>Admin: JWT 토큰 발급 (Bearer)
Note over Admin, AI: [2] 지원자 및 문서 등록 (FR-03, FR-04)
Admin->>API: 지원자 등록 및 파일 업로드
API->>S3: 파일 저장 (Object Storage)
API->>DB: document 생성 (extract_status='PENDING')
API-->>Admin: 등록 성공
Note over API, AI: [3] 비동기 데이터 처리 (FR-04-06)
API->>AI: OCR 텍스트 추출 및 임베딩
AI-->>API: 텍스트/벡터 데이터 반환
API->>DB: extracted_text 저장 (status='READY')
Note over Admin, AI: [4] 분석 실행 및 LLM 호출 (FR-05, FR-07)
Admin->>API: 분석 실행 (Strategy 선택)
API->>DB: workflow_run 생성
API->>AI: LLM 분석 요청 (Prompt Context)
AI-->>API: 결과 반환 (JSON)
Note over API, DB: [5] 결과 저장 및 로그 (FR-06, FR-07, FR-08)
API->>DB: 면접 질문(item) 저장
API->>DB: llm_call_log 저장 (토큰/비용/Audit)
API->>DB: workflow_run 상태 업데이트 (SUCCESS)
Note over Admin, AI: [6] 확정 및 내보내기 (FR-06)
Admin->>API: 질문 수정 및 최종 확정
API->>DB: status='CONFIRMED' 업데이트
Admin->>API: 보고서 내보내기 (Export)
API-->>Admin: PDF/Excel 파일 제공