@startuml !theme mono title 맥락 기반 용어 설명 제공 Flow actor "User" as user participant "Web App" as web participant "API Gateway" as gateway participant "RAG Service" as rag participant "Vector DB" as vectordb participant "PostgreSQL" as db == 실시간 용어 감지 == user -> web: 회의록 내용 조회 중 web -> gateway: GET /api/meetings/transcripts/{id} gateway -> rag: 회의록 내용 전달\n(기술 용어 감지 요청) rag -> rag: NLP 기반 기술 용어 추출\n(confidence > 70%) note right of rag - 도메인 용어 사전 매칭 - 컨텍스트 분석 - 신뢰도 점수 계산 end note rag --> gateway: 감지된 용어 목록\n{terms: [{word, position, confidence}]} gateway --> web: 회의록 + 하이라이트 용어 web --> user: 회의록 표시\n(기술 용어 하이라이트) == 용어 설명 요청 == user -> web: 하이라이트 용어 호버 web -> gateway: GET /api/rag/terms/explain\n?term={용어}&context={문장}&meeting_id={id} gateway -> rag: 맥락 기반 용어 설명 요청 == Vector 유사도 검색 == rag -> vectordb: Vector 검색\n(term embedding, similarity search) note right of vectordb - 과거 회의록 임베딩 검색 - 관련 문서 임베딩 검색 - 유사도 임계값: 0.7 end note vectordb --> rag: 유사 문서 조각 목록\n(최대 10개, similarity > 70%) rag -> db: 관련 컨텍스트 메타데이터 조회\n(project_id, issue_id, meeting_ids) db --> rag: 프로젝트, 이슈, 회의 정보 == 설명 생성 == rag -> rag: LLM 기반 설명 생성 note right of rag 생성 내용: 1. 간단한 정의 2. 현재 회의에서의 맥락적 의미 3. 관련 프로젝트/이슈 4. 과거 회의 참조 (최대 3개) end note rag -> db: 과거 회의 제목 및 날짜 조회\n(meeting_ids, LIMIT 3) db --> rag: 회의 메타데이터 rag --> gateway: 용어 설명 응답\n{definition, context_meaning,\nrelated_projects, past_meetings} gateway --> web: 200 OK\n{explanation: {...}} web --> user: 툴팁/사이드 패널에 설명 표시 note left of user 표시 내용: - 📖 정의: "..." - 💬 맥락: "이 회의에서는..." - 🔗 관련: 프로젝트 A, 이슈 #123 - 📅 과거 회의: • 2025-08-15 기획 회의 • 2025-07-20 기술 검토 • 2025-06-10 아키텍처 논의 end note @enduml