외부/내부 시퀀스 설계 일관성 개선 및 표준화

주요 변경사항:

[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>
This commit is contained in:
ondal
2025-10-23 09:48:06 +09:00
parent f86973c93b
commit 715add4dbc
43 changed files with 505 additions and 156 deletions
@@ -28,7 +28,7 @@ activate Service
' 회의록 정보 조회
Service -> MinutesRepo: findById(minutesId)
activate MinutesRepo
MinutesRepo -> DB: SELECT * FROM minutes WHERE id = ?
MinutesRepo -> DB: 회의록 정보 조회
activate DB
DB --> MinutesRepo: 회의록 정보
deactivate DB
@@ -49,6 +49,18 @@ Service -> Service: 회의록 상태 확인
alt 회의록이 이미 확정됨
Service --> Controller: 409 Conflict\n이미 확정된 회의록
note right
에러 응답 형식:
{
"error": {
"code": "MINUTES_ALREADY_FINALIZED",
"message": "이미 확정된 회의록입니다",
"details": "확정된 회의록은 다시 확정할 수 없습니다",
"timestamp": "2025-10-23T12:00:00Z",
"path": "/api/minutes/{minutesId}/finalize"
}
}
end note
return 409 Conflict
else 확정 가능
note over Service
@@ -71,6 +83,18 @@ else 확정 가능
alt 필수 항목 누락
ValidationService --> Service: ValidationException\n누락된 항목 목록
Service --> Controller: 400 Bad Request\n필수 항목 누락
note right
에러 응답 형식:
{
"error": {
"code": "MISSING_REQUIRED_FIELDS",
"message": "필수 항목이 누락되었습니다",
"details": "회의 제목, 참석자 목록, 논의 내용 중 일부가 누락되었습니다",
"timestamp": "2025-10-23T12:00:00Z",
"path": "/api/minutes/{minutesId}/finalize"
}
}
end note
return 400 Bad Request
else 검증 통과
ValidationService --> Service: 검증 성공
@@ -82,7 +106,7 @@ else 확정 가능
' 회의록 상태 업데이트
Service -> MinutesRepo: finalize(minutesId, version)
activate MinutesRepo
MinutesRepo -> DB: UPDATE minutes\nSET status = 'FINALIZED',\n version = ?,\n finalizedAt = NOW(),\n finalizedBy = ?\nWHERE id = ?
MinutesRepo -> DB: 회의록 확정 상태 업데이트
activate DB
DB --> MinutesRepo: 업데이트 완료
deactivate DB
@@ -92,7 +116,7 @@ else 확정 가능
' 회의록 스냅샷 저장 (버전 관리)
Service -> MinutesRepo: saveSnapshot(minutesId, version, content)
activate MinutesRepo
MinutesRepo -> DB: INSERT INTO minutes_snapshots\n(minutesId, version, content, createdAt)
MinutesRepo -> DB: 회의록 스냅샷 저장
activate DB
DB --> MinutesRepo: 스냅샷 저장 완료
deactivate DB