mirror of
https://github.com/hwanny1128/HGZero.git
synced 2025-12-06 13:46:24 +00:00
주요 변경사항:
[Critical]
- API 엔드포인트 통일: POST /api/minutes/{minutesId}/finalize
- 이벤트 이름 표준화: MinutesFinalized
[Warning]
- API Gateway 라우팅 규칙 문서화 (외부 시퀀스 7개 파일)
- 대시보드 API 경로 통일: GET /api/dashboard
- AI 제안 병합 프로세스 상세 문서화
- 회의록 확정 검증 로직 5단계 상세화
[Minor]
- Redis 캐시 TTL 명시 (7개 파일, TTL 정책 표준화)
- 대시보드 페이지네이션 파라미터 추가
- 에러 응답 포맷 표준화 (14개 에러 응답)
총 31개 파일 수정, 34건의 개선 사항 적용
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
145 lines
4.6 KiB
Plaintext
145 lines
4.6 KiB
Plaintext
@startuml 회의록상세조회및수정
|
|
!theme mono
|
|
|
|
title 회의록상세조회및수정 외부 시퀀스
|
|
|
|
actor "사용자" as User
|
|
participant "Web App" as Frontend
|
|
participant "API Gateway" as Gateway
|
|
participant "Meeting Service" as Meeting
|
|
participant "AI Service" as AI
|
|
database "Redis Cache" as Cache
|
|
database "Meeting DB" as MeetingDB
|
|
participant "WebSocket" as WS
|
|
|
|
note over Gateway
|
|
라우팅 규칙:
|
|
/api/meetings/** → Meeting Service
|
|
/api/minutes/** → Meeting Service
|
|
/api/dashboard → User Service
|
|
/api/notifications/** → Notification Service
|
|
/api/auth/** → User Service
|
|
/api/todos/** → Meeting Service
|
|
end note
|
|
|
|
== 회의록 상세 조회 ==
|
|
|
|
User -> Frontend: 회의록 클릭
|
|
activate Frontend
|
|
|
|
Frontend -> Gateway: GET /api/minutes/{minutesId}
|
|
activate Gateway
|
|
|
|
Gateway -> Meeting: GET /minutes/{minutesId}
|
|
activate Meeting
|
|
|
|
' 캐시 조회 (회의록 상세 정보)
|
|
Meeting --> Cache: GET minutes:detail:{minutesId}
|
|
activate Cache
|
|
Cache --> Meeting: 캐시 조회 결과
|
|
deactivate Cache
|
|
|
|
alt Cache Hit
|
|
Meeting -> Meeting: 캐시 데이터 사용
|
|
else Cache Miss
|
|
Meeting -> MeetingDB: 회의록 상세 조회\n- 회의 기본 정보\n- 섹션별 상세 내용\n- 참석자 목록\n- Todo 목록\n- 검증 상태
|
|
activate MeetingDB
|
|
MeetingDB --> Meeting: 회의록 데이터
|
|
deactivate MeetingDB
|
|
|
|
Meeting --> Cache: SET minutes:detail:{minutesId}\n(TTL: 10분)
|
|
activate Cache
|
|
Cache --> Meeting: 캐시 저장 완료
|
|
deactivate Cache
|
|
end
|
|
|
|
' 관련 회의록 검색 (비동기, 선택적)
|
|
Meeting -> AI: POST /ai/related-minutes\n{\n "minutesId": "{minutesId}",\n "threshold": 0.7\n}
|
|
activate AI
|
|
AI -> AI: 벡터 유사도 검색\n- 회의 주제 임베딩\n- 과거 회의록 비교\n- 유사도 70%+ 필터링
|
|
|
|
AI --> Meeting: 관련 회의록 목록\n(최대 3개, 관련도순)
|
|
deactivate AI
|
|
|
|
Meeting --> Gateway: 회의록 상세 데이터 응답\n{\n "minutesId": "...",\n "title": "...",\n "meetingInfo": {...},\n "sections": [...],\n "relatedMinutes": [...],\n "participants": [...],\n "todos": [...],\n "verificationStatus": {...}\n}
|
|
deactivate Meeting
|
|
|
|
Gateway --> Frontend: 200 OK\n회의록 상세 데이터
|
|
deactivate Gateway
|
|
|
|
Frontend -> Frontend: 회의록 상세 화면 렌더링\n- 회의 기본 정보 표시\n- 섹션별 내용 표시\n- 관련 회의록 표시\n- Todo 목록 표시\n- 수정 권한 확인
|
|
|
|
Frontend --> User: 회의록 상세 화면 표시
|
|
deactivate Frontend
|
|
|
|
== 회의록 수정 ==
|
|
|
|
User -> Frontend: 수정 버튼 클릭
|
|
activate Frontend
|
|
|
|
Frontend -> Frontend: 수정 화면으로 전환\n- 마크다운 에디터 활성화\n- WebSocket 연결 준비
|
|
|
|
' WebSocket 연결 (실시간 동기화)
|
|
Frontend -> WS: WebSocket 연결\n(회의록 ID, 사용자 정보)
|
|
activate WS
|
|
WS --> Frontend: 연결 완료
|
|
deactivate WS
|
|
|
|
Frontend --> User: 수정 가능 상태
|
|
deactivate Frontend
|
|
|
|
User -> Frontend: 내용 수정 입력
|
|
activate Frontend
|
|
|
|
Frontend -> Frontend: 자동 저장 타이머 시작\n(30초 간격)
|
|
|
|
note over Frontend
|
|
사용자가 계속 수정 중...
|
|
30초마다 자동 저장
|
|
end note
|
|
|
|
Frontend -> Gateway: PATCH /api/minutes/{minutesId}\n{\n "sections": [...],\n "modifiedBy": "userId",\n "timestamp": "...",\n "delta": {...}\n}
|
|
activate Gateway
|
|
|
|
Gateway -> Meeting: PATCH /minutes/{minutesId}
|
|
activate Meeting
|
|
|
|
Meeting -> Meeting: 수정 권한 검증\n- 작성자 확인\n- 잠금 섹션 확인
|
|
|
|
alt 권한 없음
|
|
Meeting --> Gateway: 403 Forbidden
|
|
Gateway --> Frontend: 수정 권한 없음
|
|
Frontend --> User: 오류 메시지 표시
|
|
else 권한 있음
|
|
Meeting -> MeetingDB: 회의록 수정\n- 수정 내용 저장\n- 버전 관리 (이전 버전 보관)\n- 수정 이력 기록\n- 상태 변경 (확정완료 → 작성중)
|
|
activate MeetingDB
|
|
MeetingDB --> Meeting: 수정 완료
|
|
deactivate MeetingDB
|
|
|
|
' 캐시 무효화
|
|
Meeting --> Cache: DEL minutes:detail:{minutesId}
|
|
activate Cache
|
|
Cache --> Meeting: 캐시 삭제 완료
|
|
deactivate Cache
|
|
|
|
' 실시간 동기화 (WebSocket)
|
|
Meeting -> WS: 수정 델타 전송\n{\n "minutesId": "...",\n "modifiedBy": "...",\n "delta": {...},\n "timestamp": "..."\n}
|
|
activate WS
|
|
WS -> Frontend: 실시간 수정 반영\n(다른 참석자들에게)
|
|
deactivate WS
|
|
|
|
Meeting --> Gateway: 수정 완료 응답\n{\n "version": "...",\n "modifiedAt": "...",\n "status": "작성중"\n}
|
|
deactivate Meeting
|
|
|
|
Gateway --> Frontend: 200 OK\n수정 완료
|
|
deactivate Gateway
|
|
|
|
Frontend -> Frontend: 수정 상태 업데이트\n- "저장됨" 표시\n- 수정 시간 갱신
|
|
|
|
Frontend --> User: 수정 반영 완료
|
|
end
|
|
|
|
deactivate Frontend
|
|
|
|
@enduml
|