hgzero/design/backend/sequence/outer/Todo완료및회의록반영.puml
kimjh a43b0c63cb 외부 시퀀스 설계 완료
- 7개 주요 비즈니스 플로우 설계 완료
  1. 회의예약및참석자초대 (2.5KB)
  2. 회의시작및실시간회의록작성 (4.9KB)
  3. 회의종료및최종확정 (4.6KB)
  4. 회의록공유 (2.1KB)
  5. Todo완료및회의록반영 (1.9KB)
  6. 대시보드조회 (1.6KB)
  7. 회의록상세조회및수정 (4.4KB)

- 설계 특징
  - 병렬 처리 전략: 서브 에이전트 활용 동시 작성
  - 5개 서비스 통합 아키텍처 (User, Meeting, STT, AI, Notification)
  - Azure Event Hubs를 통한 Pub/Sub 이벤트 기반 통신
  - Redis Cache-Aside 패턴을 통한 성능 최적화
  - AI 병렬 처리 (회의록 정리 + 전문용어 설명 + 관련 자료 검색)
  - WebSocket 실시간 동기화 (델타 전송)

- 작성원칙 준수
  - 유저스토리와 1:1 매칭
  - 논리 아키텍처에 정의된 참여자 표시
  - UI/UX 사용자 플로우 참조
  - 동기/비동기 통신 명확히 구분 (실선/점선)
  - 한글 설명 추가
  - PlantUML 표준 (!theme mono, 올바른 화살표 문법)

- PlantUML 문법 검증 완료 (수동)
  - @startuml, !theme mono 사용
  - 금지된 ..> 화살표 미사용
  - 동기 (→), 비동기 (->>), 캐시 (-.->) 구분

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-22 14:58:20 +09:00

53 lines
1.9 KiB
Plaintext

@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