sequenceDiagram
autonumber
participant U as User(직원/관리자)
participant ING as IngestionService<br/>(문서 인입/전처리)
participant ACL as ACLService<br/>(권한/부서 정책)
participant RAG as RAGService<br/>(벡터DB/검색)
participant VID as VideoService<br/>(영상 생성/조회)
participant QZ as QuizService<br/>(퀴즈 생성/응시)
participant CHAT as ChatService<br/>(챗봇 UI)
%% 1. 문서 인입 시 ACL 부여
U->>ING: 문서 업로드(HWP/PDF/URL 등)
ING->>ACL: 업로더 롤/부서 조회
ACL-->>ING: ACL 메타데이터(owner_dept, visibility_scope, role_policy)
ING->>ING: 문서 파싱/전처리 + ACL 메타 저장(doc_id, version, ACL)
%% 2. RAG 인덱싱
ING->>RAG: 청킹/임베딩 데이터 + ACL 메타
RAG->>RAG: 벡터DB에 ACL 포함 저장(doc_chunk + ACL)
%% 3. 영상 생성
U->>VID: 교육 영상 생성 요청(문서/챗봇/템플릿 기반)
VID->>RAG: 관련 문서/청크 조회(ACL 포함)
RAG-->>VID: ACL 필터된 결과만 반환
VID->>VID: 스크립트/씬 설계 + 영상 생성(ACL 메타를 video_asset에 저장)
%% 4. 퀴즈 생성
U->>QZ: 퀴즈 생성 요청(문서/영상 기반)
QZ->>RAG: 퀴즈용 컨텍스트 조회(ACL 포함)
RAG-->>QZ: ACL 허용된 컨텍스트만 반환
QZ->>QZ: 퀴즈/문항 생성 + quiz_id에 ACL 메타 저장
%% 5. 챗봇 질의 응답
U->>CHAT: 질문 전송
CHAT->>ACL: 사용자 롤/부서 조회
ACL-->>CHAT: 사용자 ACL 컨텍스트
CHAT->>RAG: 질문 + 사용자 ACL 컨텍스트로 검색
RAG-->>CHAT: ACL 필터된 문서/청크만 반환
CHAT-->>U: 답변 + (필요 시) 관련 영상/퀴즈 링크 (ACL 허용 범위 내)