내부,외부 시퀀스 기능 추가

This commit is contained in:
hjmoons
2025-10-22 17:22:10 +09:00
parent 5fe399e248
commit 4a4899e24d
7 changed files with 1350 additions and 11 deletions
@@ -1,10 +1,11 @@
@startuml
!theme mono
title AI Service 내부 시퀀스 - 회의록자동작성
title AI Service 내부 시퀀스 - 회의록자동작성 (실시간 추천 포함)
participant "TranscriptController" as Controller
participant "TranscriptService" as Service
participant "SuggestionService" as SuggestService
participant "LLMClient" as LLM
participant "VectorService" as Vector
participant "TranscriptRepository" as Repo
@@ -119,9 +120,134 @@ deactivate VectorDB
Vector --> Service: 임베딩 생성 완료
deactivate Vector
== 실시간 추천 병렬 처리 ==
Service -> SuggestService: generateRealtimeSuggestions(meetingId, transcriptText)
activate SuggestService
par 논의사항 제안 생성
SuggestService -> LLM: suggestDiscussionTopics(meetingId, transcript)
activate LLM
LLM -> OpenAI: POST /chat/completions
activate OpenAI
note right
프롬프트:
- 현재 대화 맥락 분석
- 빠진 논의 항목 찾기
- 추가하면 좋을 주제 제안
응답 형식:
{
"suggestions": [
{
"topic": "논의 주제",
"reason": "제안 이유",
"priority": "HIGH|MEDIUM|LOW"
}
]
}
end note
OpenAI --> LLM: 논의사항 제안 목록
deactivate OpenAI
LLM --> SuggestService: discussionSuggestions
deactivate LLM
SuggestService -> Repo: saveSuggestions(meetingId, "DISCUSSION", suggestions)
activate Repo
Repo -> DB: INSERT INTO ai_suggestions
activate DB
DB --> Repo: 저장 완료
deactivate DB
deactivate Repo
else 결정사항 제안 생성
SuggestService -> LLM: suggestDecisions(meetingId, transcript)
activate LLM
LLM -> OpenAI: POST /chat/completions
activate OpenAI
note right
프롬프트:
- "~하기로 함" 패턴 감지
- "~로 결정" 패턴 감지
- 결정 내용 구조화
응답 형식:
{
"decisions": [
{
"content": "결정 내용",
"category": "기술|일정|리소스",
"confidence": 0.0-1.0
}
]
}
end note
OpenAI --> LLM: 결정사항 제안 목록
deactivate OpenAI
LLM --> SuggestService: decisionSuggestions
deactivate LLM
SuggestService -> Repo: saveSuggestions(meetingId, "DECISION", suggestions)
activate Repo
Repo -> DB: INSERT INTO ai_suggestions
activate DB
DB --> Repo: 저장 완료
deactivate DB
deactivate Repo
else 실시간 액션아이템 추출
SuggestService -> LLM: extractRealtimeActionItems(meetingId, transcript)
activate LLM
LLM -> OpenAI: POST /chat/completions
activate OpenAI
note right
프롬프트:
- "~까지 하겠습니다" 패턴 감지
- "제가 담당하겠습니다" 패턴 감지
- 담당자 및 마감일 추출
응답 형식:
{
"actionItems": [
{
"content": "할 일 내용",
"assignee": "담당자",
"dueDate": "YYYY-MM-DD",
"priority": "HIGH|MEDIUM|LOW"
}
]
}
end note
OpenAI --> LLM: 액션아이템 후보 목록
deactivate OpenAI
LLM --> SuggestService: actionItemSuggestions
deactivate LLM
SuggestService -> Repo: saveSuggestions(meetingId, "ACTION_ITEM", suggestions)
activate Repo
Repo -> DB: INSERT INTO ai_suggestions
activate DB
DB --> Repo: 저장 완료
deactivate DB
deactivate Repo
end
SuggestService --> Service: 모든 추천사항 생성 완료
deactivate SuggestService
== 이벤트 발행 ==
Service -> Controller: 회의록 생성 완료 응답
Service -> Controller: 회의록 및 추천사항 생성 완료 응답
deactivate Service
Controller -> Controller: TranscriptSummaryCreated 발행
@@ -130,15 +256,23 @@ note right
- meetingId
- transcriptId
- content
- suggestions:
* discussionTopics: []
* decisions: []
* actionItems: []
end note
note over Controller, DB
처리 시간:
- 맥락 조회: 100-200ms
- LLM 생성: 3-5초
- LLM 회의록 생성: 3-5초
- 저장: 100-200ms
- 벡터화: 500ms-1초
총: 약 4-7
- 실시간 추천 병렬 처리: 5-8
* 논의사항 제안: 2-3초
* 결정사항 제안: 2-3초
* 액션아이템 추출: 1-2초
총: 약 9-15초
end note
@enduml
@enduml