hgzero/design/backend/sequence/outer/06-회의록확정및공유.puml
djeon e1d411e989 외부 시퀀스 설계 가이드 및 설계서 추가
- 외부 시퀀스 설계 가이드 다운로드 (claude/sequence-outer-design.md)
- 외부 시퀀스 설계 디렉토리 생성 (design/backend/sequence/)

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

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

184 lines
6.7 KiB
Plaintext

@startuml
!theme mono
title Flow 6: 회의록 확정 및 공유 (Transcript Confirmation and Sharing)
actor "사용자\n(User)" as User
participant "Web App" as Web
participant "API Gateway" as Gateway
participant "Meeting Service" as Meeting
participant "Notification Service" as Notification
queue "RabbitMQ" as MQ
database "Redis" as Cache
database "PostgreSQL" as DB
== 회의록 검토 (Transcript Review) ==
User -> Web: 1. 회의록 최종 검토\n(Review final transcript)
activate Web
Web -> Gateway: 2. GET /api/meetings/{meetingId}/transcript\n(Get transcript for review)
activate Gateway
Gateway -> Meeting: 3. 회의록 조회 요청\n(Forward transcript query)
activate Meeting
Meeting -> Cache: 4. 캐시에서 회의록 조회\n(Check cache for transcript)
activate Cache
Cache --> Meeting: 캐시 히트/미스\n(Cache hit/miss)
deactivate Cache
alt 캐시 미스 (Cache miss)
Meeting -> DB: 5. DB에서 회의록 조회\n(Query transcript from DB)
activate DB
DB --> Meeting: 회의록 데이터 반환\n(Return transcript data)
deactivate DB
Meeting -> Cache: 6. 캐시에 저장\n(Store in cache)
activate Cache
Cache --> Meeting: 저장 완료\n(Stored)
deactivate Cache
end
Meeting --> Gateway: 7. 회의록 반환\n(Return transcript)
deactivate Meeting
Gateway --> Web: 8. 회의록 데이터\n(Return transcript data)
deactivate Gateway
Web --> User: 9. 회의록 표시\n(Display transcript)
deactivate Web
== 필수 항목 검증 (Validate Required Sections) ==
User -> Web: 10. 회의록 확정 요청\n(Request transcript confirmation)
activate Web
Web -> Web: 11. 필수 항목 검증\n- 회의 제목 존재 여부\n- 참석자 목록 존재 여부\n- 주요 결정사항 작성 여부\n(Validate required sections:\n- Title exists\n- Participants list exists\n- Key decisions documented)
alt 필수 항목 누락 (Missing required sections)
Web --> User: 12. 필수 항목 누락 경고\n(Display missing sections warning)
deactivate Web
else 검증 통과 (Validation passed)
Web -> Gateway: 13. POST /api/meetings/{meetingId}/confirm\n(Confirm transcript request)
activate Gateway
Gateway -> Meeting: 14. 회의록 확정 요청\n(Forward confirmation request)
activate Meeting
Meeting -> DB: 15. 회의록 확정 처리\n- 최종 버전 생성 (version++)\n- 확정 상태로 변경 (status: "confirmed")\n- 확정 일시 기록\n(Confirm transcript:\n- Create final version\n- Update status to "confirmed"\n- Record confirmation time)
activate DB
DB --> Meeting: 확정 완료\n(Confirmation saved)
deactivate DB
Meeting -> Cache: 16. 캐시 무효화\n(Invalidate cache)
activate Cache
Cache --> Meeting: 캐시 삭제 완료\n(Cache invalidated)
deactivate Cache
Meeting --> Gateway: 17. 확정 완료 응답\n(Return confirmation response)
deactivate Meeting
Gateway --> Web: 18. 확정 완료\n(Confirmation successful)
deactivate Gateway
Web --> User: 19. 확정 완료 메시지 표시\n(Display confirmation message)
deactivate Web
end
== 공유 설정 (Configure Sharing) ==
User -> Web: 20. 공유 설정 화면 열기\n(Open sharing configuration)
activate Web
Web --> User: 21. 공유 옵션 표시\n- 수신자 선택\n- 권한 설정 (읽기/편집)\n- 공유 범위 (전체/일부)\n(Display sharing options:\n- Select recipients\n- Set permissions\n- Choose scope)
deactivate Web
User -> Web: 22. 공유 설정 입력\n- 수신자 목록\n- 권한 레벨\n- 메시지 (선택)\n(Input sharing settings:\n- Recipients list\n- Permission level\n- Optional message)
activate Web
Web -> Gateway: 23. POST /api/meetings/{meetingId}/share\n{recipients, permissions, message}\n(Submit sharing request)
activate Gateway
Gateway -> Meeting: 24. 공유 설정 요청\n(Forward sharing request)
activate Meeting
Meeting -> DB: 25. 공유 링크 생성\n- 고유 공유 ID 생성 (UUID)\n- 공유 권한 저장\n- 유효기간 설정 (선택)\n(Generate share link:\n- Create unique share ID\n- Save permissions\n- Set expiration if configured)
activate DB
DB --> Meeting: 공유 정보 저장 완료\n(Share info saved)
deactivate DB
Meeting -> Cache: 26. 공유 링크 캐시 저장\n(Cache share link)
activate Cache
Cache --> Meeting: 캐시 저장 완료\n(Cached)
deactivate Cache
Meeting ->> MQ: 27. "TranscriptShared" 이벤트 발행\n(Publish "TranscriptShared" event)\n{meetingId, shareId, recipients, permissions}
activate MQ
Meeting --> Gateway: 28. 공유 링크 반환\n(Return share link)
deactivate Meeting
Gateway --> Web: 29. 공유 링크 및 확인\n(Return share link)
deactivate Gateway
Web --> User: 30. 공유 완료 메시지 및 링크 표시\n(Display share link and confirmation)
deactivate Web
== 공유 알림 발송 (Send Share Notifications) ==
MQ ->> Notification: 31. "TranscriptShared" 이벤트 수신\n(Receive "TranscriptShared" event)
activate Notification
loop 각 수신자마다 (For each recipient)
Notification -> DB: 32. 수신자 정보 조회\n(Query recipient information)
activate DB
DB --> Notification: 사용자 정보 및 이메일\n(Return user info and email)
deactivate DB
Notification -> Notification: 33. 공유 알림 이메일 생성\n- 회의 정보\n- 공유 링크\n- 권한 레벨\n- 발신자 메시지\n(Generate share notification email:\n- Meeting info\n- Share link\n- Permission level\n- Sender message)
Notification -> Notification: 34. 이메일 발송\n(Send email to recipient)
Notification -> DB: 35. 알림 전송 기록 저장\n(Save notification log)
activate DB
DB --> Notification: 저장 완료\n(Save confirmed)
deactivate DB
end
deactivate Notification
deactivate MQ
== 참여자 알림 (Participant Notification) ==
note over Notification
모든 회의 참여자에게도
회의록 확정 알림 발송
(Send confirmation notification
to all meeting participants)
end note
Notification ->> Notification: 36. 참여자 알림 처리\n(Process participant notifications)
activate Notification
Notification -> DB: 37. 참여자 목록 조회\n(Query participants list)
activate DB
DB --> Notification: 참여자 정보 반환\n(Return participants info)
deactivate DB
loop 각 참여자마다 (For each participant)
Notification -> Notification: 38. 확정 알림 이메일 생성\n- 회의록 확정 알림\n- 회의록 보기 링크\n- 주요 내용 요약\n(Generate confirmation email:\n- Transcript confirmed\n- View link\n- Summary)
Notification -> Notification: 39. 이메일 발송\n(Send email)
Notification -> DB: 40. 알림 기록 저장\n(Save notification log)
activate DB
DB --> Notification: 저장 완료\n(Saved)
deactivate DB
end
deactivate Notification
@enduml