mirror of
https://github.com/hwanny1128/HGZero.git
synced 2025-12-06 09:06:24 +00:00
- 외부 시퀀스 설계 가이드 다운로드 (claude/sequence-outer-design.md) - 외부 시퀀스 설계 디렉토리 생성 (design/backend/sequence/) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
184 lines
6.7 KiB
Plaintext
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
|