@startuml Todo완료및회의록반영 !theme mono title Todo 완료 및 회의록 반영 플로우 actor "담당자" as User participant "Web App" as Web participant "API Gateway" as Gateway participant "Meeting Service" as Meeting participant "Redis Cache" as Redis participant "Notification Service" as Notification autonumber == Todo 완료 처리 == User -> Web: Todo 완료 버튼 클릭 activate Web Web -> Gateway: PUT /api/todos/{todoId}/complete\n(userId, userName, completedAt) activate Gateway Gateway -> Meeting: PUT /todos/{todoId}/complete\n(userId, userName, completedAt) activate Meeting Meeting -> Meeting: Todo 상태 업데이트\n- 완료 시간 기록\n- 완료자 정보 저장\n- 상태: COMPLETED Meeting -> Meeting: 관련 회의록에 완료 상태 반영\n- 회의록 섹션 업데이트\n- 완료 표시 (체크 아이콘)\n- 완료 시간 및 완료자 기록 Meeting -> Meeting: DB에 저장 == 캐시 무효화 == Meeting -.-> Redis: DELETE meeting:info:{meetingId} note right: 회의 정보 캐시 무효화 Meeting -.-> Redis: DELETE todo:user:{userId} note right: Todo 목록 캐시 무효화 == 이벤트 발행 == Meeting ->> Notification: TodoCompleted 이벤트 발행\n(todoId, meetingId, completedBy,\ncompletedAt, meetingCreatorId) note right: Azure Event Hubs를 통한\n비동기 이벤트 발행 Meeting --> Gateway: 200 OK\n{todoId, status: COMPLETED,\ncompletedAt, completedBy} deactivate Meeting Gateway --> Web: 200 OK\n(Todo 완료 정보) deactivate Gateway Web --> User: Todo 완료 표시 deactivate Web == 알림 발송 == activate Notification Notification -> Notification: TodoCompleted 이벤트 구독 Notification -> Notification: 알림 메시지 생성\n- 수신자: 회의록 작성자\n- 내용: "Todo 완료됨" Notification -.-> Notification: 이메일 발송\n(회의록 작성자에게) note right: 외부 Email Service 연동 deactivate Notification @enduml