@startuml
!theme mono

title 02. 실시간 회의록 작성 - 이벤트스토밍 플로우

actor "회의 참석자" as Participant
participant "회의록 시스템" as System
participant "AI 음성인식 엔진" as STT
participant "LLM" as LLM

== 음성 녹음 시작 ==

Participant -> System : 발언 시작
System -> System : **커맨드**: 음성 녹음 시작하기\n(데이터: 오디오 스트림, 회의 ID)
activate System
System --> Participant : **이벤트**: 음성 녹음이 시작됨\n(데이터: 녹음 ID, 시작 시간)
deactivate System

== 발언 인식 및 텍스트 변환 ==

System -> STT : **커맨드**: 발언 인식 요청하기\n(데이터: 음성 데이터, 화자 정보, 타임스탬프)
activate STT
STT -> STT : 음성 분석
STT --> System : **이벤트**: 발언이 인식됨\n(데이터: 발언 ID, 화자, 발언 내용, 타임스탬프)
deactivate STT

note right of STT
**Policy/Rule**:
발언이 인식되면 →
AI가 실시간으로
텍스트 변환
end note

System -> STT : **커맨드**: 텍스트 변환 요청하기\n(데이터: 인식된 발언, 언어 설정)
activate STT
STT -> STT : 음성-텍스트 변환
STT --> System : **이벤트**: 텍스트가 변환됨\n(데이터: 텍스트 ID, 변환된 내용, 정확도)
deactivate STT

== AI 회의록 자동 작성 ==

note right of LLM
**Policy/Rule**:
텍스트가 변환되면 →
자동으로 회의록 구조에
맞춰 정리
end note

System -> LLM : **커맨드**: 회의록 자동 작성하기\n(데이터: 텍스트, 회의 맥락, 구조)
activate LLM
LLM -> LLM : 회의 내용 이해
LLM -> LLM : 문장 다듬기
LLM -> LLM : 구조화 (주제, 발언자, 내용)
LLM --> System : **이벤트**: 회의록 초안이 생성됨\n(데이터: 회의록 버전, 생성 시간, 구조화된 내용)
deactivate LLM

== 참석자 실시간 확인 ==

System --> Participant : **이벤트**: 회의록이 업데이트됨\n(실시간 동기화)

Participant -> System : **커맨드**: 회의록 확인하기\n(데이터: 회의록 ID, 뷰어 ID)
activate System
System --> Participant : **이벤트**: 참석자가 회의록을 확인함\n(데이터: 뷰어 ID, 확인 시간)
deactivate System

note over Participant, LLM
**Actor**: 회의 참석자, AI 시스템
**External System**: AI 음성인식 엔진 (Whisper, Google STT), LLM
**커맨드 데이터**: 음성 데이터, 화자 정보, 회의 맥락
**이벤트 데이터**: 발언 내용, 텍스트, 회의록 버전
end note

@enduml
