hgzero/design/backend/sequence/inner/ai-회의록개선.puml
Minseo-Jo b8ff2a8339 섹션 AI 요약 재생성으로 변경 (프로토타입 반영)
- 프롬프트 기반 회의록 개선 → 섹션 AI 요약 재생성으로 변경
- UFR-AI-030 → UFR-AI-035로 유저스토리 교체
- API 엔드포인트: POST /sections/{sectionId}/regenerate-summary
- 내부 시퀀스, 외부 시퀀스, API 설계서, 유저스토리 일관성 확보
- 프로토타입의 "AI 재생성" 버튼 기능과 정확히 매칭

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-23 13:47:20 +09:00

168 lines
3.6 KiB
Plaintext

@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<<E>>" as OpenAI
database "PostgreSQL<<E>>" 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