@startuml !theme mono title AI Service 내부 시퀀스 - 섹션AI요약재생성 participant "SectionController" as Controller participant "SectionSummaryService" as Service participant "LLMClient" as LLM participant "SectionRepository" as Repo database "Azure OpenAI<>" as OpenAI database "PostgreSQL<>" as DB == 섹션 AI 요약 재생성 요청 수신 == note over Controller API 요청: POST /api/ai/sections/{sectionId}/regenerate-summary Body: { "sectionContent": "**논의 사항:**\n- AI 기반...", "meetingId": "550e8400-..." } end note Controller -> Service: regenerateSummary(sectionId, sectionContent, meetingId) activate Service == 회의 맥락 조회 (선택적) == Service -> Repo: getMeetingContext(meetingId) activate Repo Repo -> DB: 회의 정보 조회\n- 회의 제목\n- 참석자\n- 안건 activate DB DB --> Repo: 회의 맥락 정보 deactivate DB Repo --> Service: meetingContext deactivate Repo note right of Service 회의 맥락을 통해 더 정확한 요약 생성 예: "신규 프로젝트 킥오프" → 기술/일정 중심 요약 end note == 프롬프트 생성 == Service -> Service: 요약 프롬프트 구성 note right 시스템 프롬프트: - 역할: 회의록 섹션 요약 전문가 - 목표: 핵심 내용을 2-3문장으로 압축 - 스타일: 명확하고 간결한 문체 사용자 프롬프트: - 회의 맥락: {meetingContext} - 섹션 내용: {sectionContent} 요구사항: - 2-3문장으로 요약 - 논의사항과 결정사항 구분 - 핵심 키워드 포함 - 불필요한 세부사항 제외 end note == LLM 기반 요약 생성 == Service -> LLM: generateSummary(prompt, sectionContent) activate LLM LLM -> OpenAI: POST /chat/completions activate OpenAI note right 요청 파라미터: - model: gpt-4o - temperature: 0.3 - max_tokens: 200 - messages: [system, user] end note OpenAI -> OpenAI: 섹션 내용 분석 및 요약 note right 처리 단계: 1. 섹션 내용 파싱 - 논의사항 추출 - 결정사항 추출 - 보류사항 추출 2. 핵심 내용 식별 - 중요도 평가 - 키워드 추출 3. 요약 생성 - 2-3문장으로 압축 - 논의→결정 흐름 반영 - 명확한 문장 구성 4. 품질 검증 - 길이 확인 (150자 이내) - 핵심 누락 여부 확인 end note OpenAI --> LLM: 생성된 AI 요약 deactivate OpenAI LLM --> Service: summaryText deactivate LLM == 생성된 요약 저장 (선택적) == Service -> Repo: saveSectionSummary(sectionId, summaryText) activate Repo Repo -> DB: AI 요약 저장 activate DB note right 저장 데이터: - section_id - summary_text - generated_at - model: "gpt-4o" - token_usage end note DB --> Repo: 저장 완료 deactivate DB Repo --> Service: 완료 deactivate Repo == 응답 반환 == Service -> Service: 응답 데이터 구성 note right 응답 데이터: - summary: "AI 기반 회의록 자동화..." - generatedAt: "2025-01-23T11:00:00Z" end note Service --> Controller: 요약 생성 완료 응답 deactivate Service Controller --> Controller: 200 OK 응답 반환 note over Controller, DB 처리 시간: - 회의 맥락 조회: 50-100ms - 프롬프트 구성: 10-20ms - LLM 요약 생성: 2-4초 - 저장 처리: 50-100ms 총 처리 시간: 약 2-5초 정책: - 섹션 내용이 변경되면 요약도 재생성 - 이전 요약은 이력으로 보관 - 사용자는 생성된 요약을 수정 가능 - 수정된 요약은 AI 재생성 가능 처리량: - max_tokens: 200 (요약은 짧음) - 비용 효율적 (전체 회의록 대비) end note @enduml