feat: exams/services/analysis_orchestrator.py 신규 작성 - #33
Conversation
|
AI 분석 → 예상시간 계산 → 상태 갱신을 별도 오케스트레이션 계층으로 분리한 방향은 좋습니다. View에서 task_extractor와 time_estimator를 각각 호출하지 않고 하나의 서비스 진입점으로 처리하는 구조도 적절합니다. 관련 정책은 아래와 같이 확정하겠습니다.
기존 AI 분석 상태는 별도 필드로 관리합니다.
초기값은 아래와 같이 설정하면 됩니다.
분석 상태는 아래 흐름만 허용합니다.
분석 완료 후 결과를 수정해야 하는 경우 AI 재분석이 아니라 작업 검토 화면에서 사용자가 직접 수정하도록 하겠습니다. View에서 상태를 직접 변경한 뒤 강제로 재분석하는 방식은 사용하지 않습니다.
최초 분석 실패 후 사용자가 재시도할 수 있는 횟수는 최대 2회로 확정합니다. 최초 분석은 재시도 횟수에 포함하지 않으며,
따라서 최초 분석 1회와 사용자 재시도 2회를 합쳐 총 최대 3번까지 분석을 시도할 수 있습니다.
AI 분석 결과 생성된 위 정책을 기준으로 병합 전에 아래 사항을 보완 부탁드립니다.
현재
현재 상태 확인 없이 바로 최초 분석은 재시도 시작 시에는
아래 항목에 대한 테스트를 추가 부탁드립니다.
AI 네트워크 호출이 |
작업 내용:
exams/services/analysis_orchestrator.py 신규 작성 (E-AI-01/02/03 대응)
확인이 필요한 부분:
재시도 횟수 제한(명세서상 "재시도 초과 시 직접 입력 안내")은 구현 안 함 - StudyMaterial에 재시도 횟수 필드가 없어서 필드 추가가 먼저 필요함. 필요한지 팀 논의 부탁드려요.
COMPLETED 상태에서 사용자가 명시적으로 재분석을 원하는 경우의 별도 경로는 이 PR에 포함 안 됨 (필요시 View단계에서 사용자 확인 받고 상태를 직접 조작하는 식으로 처리 필요)
참고) View 구현 시 E-AI-01, E-AI-03(기능명세서) 모두 task_extractor.analyze_study_material()가 아니라 이 analyze_and_estimate()를 호출해야 함