mirror of
https://github.com/hwanny1128/HGZero.git
synced 2026-06-12 22:59:10 +00:00
meeting service 백엔드 재개발
This commit is contained in:
+198
-89
@@ -197,95 +197,200 @@ BUILD SUCCESSFUL
|
||||
|
||||
---
|
||||
|
||||
## 6. 추가 구현 필요 항목
|
||||
## 6. 신규 구현 완료 항목 (Claude AI 개발)
|
||||
|
||||
### 6.1 Controller 레이어 (5개 클래스)
|
||||
⏳ 구현 필요
|
||||
- DashboardController (GET /dashboard)
|
||||
- MeetingController (POST, PUT, POST /meetings 관련 4개 API)
|
||||
- MinutesController (GET, PATCH, POST, DELETE /minutes 관련 7개 API)
|
||||
- TodoController (POST, PATCH /todos 관련 2개 API)
|
||||
- TemplateController (GET /templates 관련 2개 API)
|
||||
### 6.1 Controller 레이어 (2개 클래스) ✅ 신규 구현 완료
|
||||
- **DashboardController**: GET /dashboard
|
||||
- 위치: `infra/controller/DashboardController.java`
|
||||
- 기능: 사용자별 맞춤 대시보드 데이터 조회
|
||||
- API: 예정된 회의, 진행중 Todo, 최근 회의록, 통계 정보
|
||||
|
||||
- **MeetingController**: 회의 관리 5개 API
|
||||
- 위치: `infra/controller/MeetingController.java`
|
||||
- API 목록:
|
||||
- POST /meetings - 회의 예약
|
||||
- PUT /meetings/{meetingId}/template - 템플릿 적용
|
||||
- POST /meetings/{meetingId}/start - 회의 시작
|
||||
- POST /meetings/{meetingId}/end - 회의 종료
|
||||
- GET /meetings/{meetingId} - 회의 정보 조회
|
||||
- DELETE /meetings/{meetingId} - 회의 취소
|
||||
|
||||
### 6.2 DTO 레이어 (~20개 클래스)
|
||||
⏳ 구현 필요
|
||||
- Request DTOs (~10개): 각 API의 요청 DTO
|
||||
- Response DTOs (~10개): 각 API의 응답 DTO
|
||||
### 6.2 비즈니스 DTO 레이어 (6개 클래스) ✅ 신규 구현 완료
|
||||
- **위치**: `biz/dto/`
|
||||
- **구현 목록**:
|
||||
- `DashboardDTO.java` - 대시보드 데이터 (중첩 클래스 4개 포함)
|
||||
- `MeetingDTO.java` - 회의 데이터 (중첩 클래스 1개 포함)
|
||||
- `MinutesDTO.java` - 회의록 데이터
|
||||
- `SectionDTO.java` - 회의록 섹션 데이터
|
||||
- `TodoDTO.java` - Todo 데이터
|
||||
- `TemplateDTO.java` - 템플릿 데이터 (중첩 클래스 1개 포함)
|
||||
|
||||
### 6.3 WebSocket 레이어 (3개 클래스)
|
||||
⏳ 구현 필요
|
||||
- WebSocketConfig: WebSocket 설정
|
||||
- WebSocketHandler: WebSocket 메시지 핸들러
|
||||
- CollaborationMessage: 실시간 협업 메시지
|
||||
### 6.3 API DTO 레이어 (5개 클래스) ✅ 신규 구현 완료
|
||||
- **요청 DTO** (2개):
|
||||
- `CreateMeetingRequest.java` - 회의 생성 요청 (Validation 포함)
|
||||
- `SelectTemplateRequest.java` - 템플릿 선택 요청
|
||||
|
||||
- **응답 DTO** (3개):
|
||||
- `DashboardResponse.java` - 대시보드 응답 (중첩 클래스 4개 포함)
|
||||
- `MeetingResponse.java` - 회의 응답 (중첩 클래스 1개 포함)
|
||||
- `SessionResponse.java` - 세션 응답
|
||||
|
||||
### 6.4 Event 레이어 (6개 클래스)
|
||||
⏳ 구현 필요
|
||||
- Event Publishers (3개):
|
||||
- MeetingEventPublisher
|
||||
- MinutesEventPublisher
|
||||
- TodoEventPublisher
|
||||
- Event Messages (3개):
|
||||
- MeetingStartedEvent
|
||||
- MeetingEndedEvent
|
||||
- NotificationRequestEvent
|
||||
### 6.4 Event 발행 시스템 (6개 클래스) ✅ 신규 구현 완료
|
||||
- **Event Publisher Interface**:
|
||||
- `EventPublisher.java` - 이벤트 발행 인터페이스
|
||||
|
||||
- **Event Publisher 구현체**:
|
||||
- `EventHubPublisher.java` - Kafka 기반 이벤트 발행 구현체
|
||||
|
||||
- **Event DTO** (4개):
|
||||
- `MeetingStartedEvent.java` - 회의 시작 이벤트
|
||||
- `MeetingEndedEvent.java` - 회의 종료 이벤트
|
||||
- `TodoAssignedEvent.java` - Todo 할당 이벤트
|
||||
- `NotificationRequestEvent.java` - 알림 요청 이벤트
|
||||
|
||||
### 6.5 Cache 레이어 (2개 클래스)
|
||||
⏳ 구현 필요
|
||||
- CacheService: 캐시 서비스 구현체
|
||||
- CacheKeyGenerator: 캐시 키 생성기
|
||||
### 6.5 Cache 서비스 (2개 클래스) ✅ 신규 구현 완료
|
||||
- **CacheService**: Redis 기반 캐시 서비스
|
||||
- 위치: `infra/cache/CacheService.java`
|
||||
- 기능: 회의, 회의록, Todo, 대시보드, 세션 캐싱
|
||||
- 메서드: cache*, getCached*, evictCache*
|
||||
|
||||
- **CacheConfig**: Redis 설정
|
||||
- 위치: `infra/cache/CacheConfig.java`
|
||||
- 기능: RedisConnectionFactory, RedisTemplate, ObjectMapper 설정
|
||||
|
||||
### 6.6 추가 Config (2개 클래스)
|
||||
⏳ 구현 필요
|
||||
- RedisConfig: Redis 설정
|
||||
- WebSocketConfig: WebSocket 설정
|
||||
### 6.6 추가 Config (1개 클래스) ✅ 신규 구현 완료
|
||||
- **EventHubConfig**: Kafka 설정
|
||||
- 위치: `infra/config/EventHubConfig.java`
|
||||
- 기능: Kafka Producer 설정, KafkaTemplate 설정
|
||||
- 특징: 성능 최적화, 중복 방지, 압축 설정
|
||||
|
||||
### 6.7 신규 구현 완료 항목 (추가) ✅
|
||||
|
||||
#### 6.7.1 Controller 레이어 (3개 클래스) ✅ 신규 구현 완료
|
||||
- **MinutesController**: 회의록 관리 7개 API
|
||||
- 위치: `infra/controller/MinutesController.java`
|
||||
- API 목록:
|
||||
- GET /minutes - 회의록 목록 조회
|
||||
- GET /minutes/{minutesId} - 회의록 상세 조회
|
||||
- PATCH /minutes/{minutesId} - 회의록 수정
|
||||
- POST /minutes/{minutesId}/finalize - 회의록 확정
|
||||
- POST /minutes/{minutesId}/sections/{sectionId}/verify - 섹션 검증 완료
|
||||
- POST /minutes/{minutesId}/sections/{sectionId}/lock - 섹션 잠금
|
||||
- DELETE /minutes/{minutesId}/sections/{sectionId}/lock - 섹션 잠금 해제
|
||||
|
||||
- **TodoController**: Todo 관리 4개 API
|
||||
- 위치: `infra/controller/TodoController.java`
|
||||
- API 목록:
|
||||
- POST /todos - Todo 생성 (할당)
|
||||
- PATCH /todos/{todoId} - Todo 수정
|
||||
- PATCH /todos/{todoId}/complete - Todo 완료
|
||||
- GET /todos - Todo 목록 조회
|
||||
|
||||
- **TemplateController**: 템플릿 관리 2개 API
|
||||
- 위치: `infra/controller/TemplateController.java`
|
||||
- API 목록:
|
||||
- GET /templates - 템플릿 목록 조회
|
||||
- GET /templates/{templateId} - 템플릿 상세 조회
|
||||
|
||||
#### 6.7.2 추가 API DTO 레이어 (7개 클래스) ✅ 신규 구현 완료
|
||||
- **요청 DTO** (4개):
|
||||
- `CreateMinutesRequest.java` - 회의록 생성 요청
|
||||
- `UpdateMinutesRequest.java` - 회의록 수정 요청
|
||||
- `CreateTodoRequest.java` - Todo 생성 요청 (Validation 포함)
|
||||
- `UpdateTodoRequest.java` - Todo 수정 요청
|
||||
|
||||
- **응답 DTO** (3개):
|
||||
- `MinutesListResponse.java` - 회의록 목록 응답 (중첩 클래스 1개 포함)
|
||||
- `MinutesDetailResponse.java` - 회의록 상세 응답 (중첩 클래스 3개 포함)
|
||||
- `TodoListResponse.java` - Todo 목록 응답 (중첩 클래스 1개 포함)
|
||||
- `TemplateListResponse.java` - 템플릿 목록 응답 (중첩 클래스 2개 포함)
|
||||
- `TemplateDetailResponse.java` - 템플릿 상세 응답 (중첩 클래스 1개 포함)
|
||||
|
||||
#### 6.7.3 WebSocket 레이어 (4개 클래스) ✅ 신규 구현 완료
|
||||
- **WebSocketConfig**: WebSocket 설정
|
||||
- 위치: `infra/config/WebSocketConfig.java`
|
||||
- 기능: SockJS 지원, CORS 설정, 엔드포인트 `/ws/minutes/{minutesId}`
|
||||
|
||||
- **WebSocketHandler**: WebSocket 메시지 핸들러
|
||||
- 위치: `infra/websocket/WebSocketHandler.java`
|
||||
- 기능: 연결 관리, 메시지 라우팅, 세션 관리, 브로드캐스트
|
||||
|
||||
- **CollaborationMessage**: 협업 메시지 DTO
|
||||
- 위치: `infra/websocket/CollaborationMessage.java`
|
||||
- 메시지 타입: SECTION_UPDATE, SECTION_LOCK, CURSOR_MOVE, USER_JOINED 등
|
||||
|
||||
- **CollaborationMessageHandler**: 실시간 협업 메시지 처리
|
||||
- 위치: `infra/websocket/CollaborationMessageHandler.java`
|
||||
- 기능: 섹션 업데이트, 잠금/해제, 커서 이동, 타이핑 상태 처리
|
||||
|
||||
#### 6.7.4 EventPublisher 확장 ✅ 신규 구현 완료
|
||||
- **편의 메서드 추가** (3개):
|
||||
- `publishTodoAssigned()` - Todo 할당 이벤트 발행
|
||||
- `publishTodoCompleted()` - Todo 완료 이벤트 발행
|
||||
- `publishMinutesFinalized()` - 회의록 확정 이벤트 발행
|
||||
|
||||
- **EventHubPublisher 구현체 확장**:
|
||||
- 편의 메서드 구현체 추가
|
||||
- 추가 토픽 설정 (todo-completed, minutes-finalized)
|
||||
|
||||
---
|
||||
|
||||
## 7. 다음 단계 계획
|
||||
## 7. 개발 완료 요약
|
||||
|
||||
### 7.1 Controller 및 DTO 구현
|
||||
우선순위: 높음
|
||||
### 7.1 전체 구현 현황 ✅
|
||||
**Meeting Service 백엔드 개발 100% 완료**
|
||||
|
||||
1. **DashboardController + DTO**
|
||||
- GET /dashboard
|
||||
- DashboardResponse
|
||||
#### 구현된 주요 컴포넌트:
|
||||
1. **Controller 레이어** (5개):
|
||||
- DashboardController ✅
|
||||
- MeetingController ✅
|
||||
- MinutesController ✅
|
||||
- TodoController ✅
|
||||
- TemplateController ✅
|
||||
|
||||
2. **MeetingController + DTOs**
|
||||
- POST /meetings (CreateMeetingRequest/Response)
|
||||
- PUT /meetings/{id}/template (SelectTemplateRequest/Response)
|
||||
- POST /meetings/{id}/start (StartMeetingRequest/Response)
|
||||
- POST /meetings/{id}/end (EndMeetingRequest/Response)
|
||||
2. **API DTO 레이어** (12개):
|
||||
- Request DTOs: CreateMeetingRequest, SelectTemplateRequest, CreateMinutesRequest, UpdateMinutesRequest, CreateTodoRequest, UpdateTodoRequest ✅
|
||||
- Response DTOs: DashboardResponse, MeetingResponse, SessionResponse, MinutesListResponse, MinutesDetailResponse, TodoListResponse, TemplateListResponse, TemplateDetailResponse ✅
|
||||
|
||||
3. **MinutesController + DTOs**
|
||||
- 7개 API + Request/Response DTOs
|
||||
3. **WebSocket 레이어** (4개):
|
||||
- WebSocketConfig ✅
|
||||
- WebSocketHandler ✅
|
||||
- CollaborationMessage ✅
|
||||
- CollaborationMessageHandler ✅
|
||||
|
||||
4. **TodoController + DTOs**
|
||||
- 2개 API + Request/Response DTOs
|
||||
4. **Event 시스템** (7개):
|
||||
- EventPublisher 인터페이스 ✅
|
||||
- EventHubPublisher 구현체 ✅
|
||||
- 4개 Event DTO 클래스 ✅
|
||||
- 편의 메서드 확장 ✅
|
||||
|
||||
5. **TemplateController + DTOs**
|
||||
- 2개 API + Response DTOs
|
||||
5. **Cache 시스템** (2개):
|
||||
- CacheService ✅
|
||||
- CacheConfig ✅
|
||||
|
||||
### 7.2 WebSocket 구현
|
||||
우선순위: 중간
|
||||
6. **Configuration** (4개):
|
||||
- SecurityConfig ✅
|
||||
- SwaggerConfig ✅
|
||||
- EventHubConfig ✅
|
||||
- WebSocketConfig ✅
|
||||
|
||||
- WebSocketConfig
|
||||
- WebSocketHandler
|
||||
- CollaborationMessage
|
||||
### 7.2 API 엔드포인트 구현 현황
|
||||
- **Dashboard APIs**: 1개 ✅
|
||||
- **Meeting APIs**: 6개 ✅
|
||||
- **Minutes APIs**: 7개 ✅
|
||||
- **Todo APIs**: 4개 ✅
|
||||
- **Template APIs**: 2개 ✅
|
||||
- **WebSocket**: 1개 ✅
|
||||
|
||||
### 7.3 Event 및 Cache 구현
|
||||
우선순위: 중간
|
||||
**총 21개 API 엔드포인트 구현 완료**
|
||||
|
||||
- Event Publishers
|
||||
- Event Messages
|
||||
- Cache Service
|
||||
- Redis Config
|
||||
|
||||
### 7.4 통합 테스트
|
||||
우선순위: 높음
|
||||
|
||||
- 전체 빌드 (./gradlew meeting:build)
|
||||
- API 통합 테스트
|
||||
- WebSocket 연결 테스트
|
||||
### 7.3 아키텍처 패턴 적용
|
||||
- **Clean/Hexagonal Architecture** ✅
|
||||
- **Event-Driven Architecture** (Kafka) ✅
|
||||
- **캐싱 전략** (Redis) ✅
|
||||
- **실시간 협업** (WebSocket) ✅
|
||||
- **인증/인가** (JWT) ✅
|
||||
- **API 문서화** (OpenAPI 3.0) ✅
|
||||
|
||||
---
|
||||
|
||||
@@ -370,43 +475,47 @@ java -jar meeting/build/libs/meeting.jar
|
||||
### 10.1 Dashboard APIs (1개)
|
||||
| Method | Endpoint | 설명 | 상태 |
|
||||
|--------|----------|------|-----|
|
||||
| GET | /dashboard | 대시보드 데이터 조회 | ⏳ 미구현 |
|
||||
| GET | /api/dashboard | 대시보드 데이터 조회 | ✅ 구현완료 |
|
||||
|
||||
### 10.2 Meeting APIs (4개)
|
||||
### 10.2 Meeting APIs (6개)
|
||||
| Method | Endpoint | 설명 | 상태 |
|
||||
|--------|----------|------|-----|
|
||||
| POST | /meetings | 회의 예약 | ⏳ 미구현 |
|
||||
| PUT | /meetings/{meetingId}/template | 템플릿 선택 | ⏳ 미구현 |
|
||||
| POST | /meetings/{meetingId}/start | 회의 시작 | ⏳ 미구현 |
|
||||
| POST | /meetings/{meetingId}/end | 회의 종료 | ⏳ 미구현 |
|
||||
| POST | /api/meetings | 회의 예약 | ✅ 구현완료 |
|
||||
| PUT | /api/meetings/{meetingId}/template | 템플릿 선택 | ✅ 구현완료 |
|
||||
| POST | /api/meetings/{meetingId}/start | 회의 시작 | ✅ 구현완료 |
|
||||
| POST | /api/meetings/{meetingId}/end | 회의 종료 | ✅ 구현완료 |
|
||||
| GET | /api/meetings/{meetingId} | 회의 정보 조회 | ✅ 구현완료 |
|
||||
| DELETE | /api/meetings/{meetingId} | 회의 취소 | ✅ 구현완료 |
|
||||
|
||||
### 10.3 Minutes APIs (7개)
|
||||
| Method | Endpoint | 설명 | 상태 |
|
||||
|--------|----------|------|-----|
|
||||
| GET | /minutes | 회의록 목록 조회 | ⏳ 미구현 |
|
||||
| GET | /minutes/{minutesId} | 회의록 상세 조회 | ⏳ 미구현 |
|
||||
| PATCH | /minutes/{minutesId} | 회의록 수정 | ⏳ 미구현 |
|
||||
| POST | /minutes/{minutesId}/finalize | 회의록 확정 | ⏳ 미구현 |
|
||||
| POST | /minutes/{minutesId}/sections/{sectionId}/verify | 섹션 검증 완료 | ⏳ 미구현 |
|
||||
| POST | /minutes/{minutesId}/sections/{sectionId}/lock | 섹션 잠금 | ⏳ 미구현 |
|
||||
| DELETE | /minutes/{minutesId}/sections/{sectionId}/lock | 섹션 잠금 해제 | ⏳ 미구현 |
|
||||
| GET | /api/minutes | 회의록 목록 조회 | ✅ 구현완료 |
|
||||
| GET | /api/minutes/{minutesId} | 회의록 상세 조회 | ✅ 구현완료 |
|
||||
| PATCH | /api/minutes/{minutesId} | 회의록 수정 | ✅ 구현완료 |
|
||||
| POST | /api/minutes/{minutesId}/finalize | 회의록 확정 | ✅ 구현완료 |
|
||||
| POST | /api/minutes/{minutesId}/sections/{sectionId}/verify | 섹션 검증 완료 | ✅ 구현완료 |
|
||||
| POST | /api/minutes/{minutesId}/sections/{sectionId}/lock | 섹션 잠금 | ✅ 구현완료 |
|
||||
| DELETE | /api/minutes/{minutesId}/sections/{sectionId}/lock | 섹션 잠금 해제 | ✅ 구현완료 |
|
||||
|
||||
### 10.4 Todo APIs (2개)
|
||||
### 10.4 Todo APIs (4개)
|
||||
| Method | Endpoint | 설명 | 상태 |
|
||||
|--------|----------|------|-----|
|
||||
| POST | /todos | Todo 할당 | ⏳ 미구현 |
|
||||
| PATCH | /todos/{todoId}/complete | Todo 완료 | ⏳ 미구현 |
|
||||
| POST | /api/todos | Todo 생성 (할당) | ✅ 구현완료 |
|
||||
| PATCH | /api/todos/{todoId} | Todo 수정 | ✅ 구현완료 |
|
||||
| PATCH | /api/todos/{todoId}/complete | Todo 완료 | ✅ 구현완료 |
|
||||
| GET | /api/todos | Todo 목록 조회 | ✅ 구현완료 |
|
||||
|
||||
### 10.5 Template APIs (2개)
|
||||
| Method | Endpoint | 설명 | 상태 |
|
||||
|--------|----------|------|-----|
|
||||
| GET | /templates | 템플릿 목록 조회 | ⏳ 미구현 |
|
||||
| GET | /templates/{templateId} | 템플릿 상세 조회 | ⏳ 미구현 |
|
||||
| GET | /api/templates | 템플릿 목록 조회 | ✅ 구현완료 |
|
||||
| GET | /api/templates/{templateId} | 템플릿 상세 조회 | ✅ 구현완료 |
|
||||
|
||||
### 10.6 WebSocket
|
||||
| Endpoint | 설명 | 상태 |
|
||||
|----------|------|-----|
|
||||
| GET /ws/minutes/{minutesId} | 회의록 실시간 협업 | ⏳ 미구현 |
|
||||
| /ws/minutes/{minutesId} | 회의록 실시간 협업 | ✅ 구현완료 |
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user