mirror of
https://github.com/hwanny1128/HGZero.git
synced 2025-12-06 16:06:23 +00:00
313 lines
15 KiB
Markdown
313 lines
15 KiB
Markdown
# Meeting Service 패키지 구조도
|
|
|
|
## 전체 구조
|
|
|
|
```
|
|
meeting/
|
|
├── src/
|
|
│ ├── main/
|
|
│ │ ├── java/
|
|
│ │ │ └── com/unicorn/hgzero/meeting/
|
|
│ │ │ ├── MeetingApplication.java
|
|
│ │ │ ├── biz/
|
|
│ │ │ │ ├── domain/
|
|
│ │ │ │ │ ├── Dashboard.java (✅ 기존)
|
|
│ │ │ │ │ ├── Meeting.java (✅ 기존)
|
|
│ │ │ │ │ ├── Minutes.java (✅ 기존)
|
|
│ │ │ │ │ ├── MinutesSection.java (✅ 기존)
|
|
│ │ │ │ │ ├── Template.java (✅ 기존)
|
|
│ │ │ │ │ ├── Todo.java (✅ 기존)
|
|
│ │ │ │ │ ├── Session.java
|
|
│ │ │ │ │ ├── Participant.java
|
|
│ │ │ │ │ ├── CollaborationEvent.java
|
|
│ │ │ │ │ └── Statistics.java
|
|
│ │ │ │ ├── service/
|
|
│ │ │ │ │ ├── DashboardService.java (✅ 기존)
|
|
│ │ │ │ │ ├── MeetingService.java (✅ 기존)
|
|
│ │ │ │ │ ├── MinutesService.java (✅ 기존)
|
|
│ │ │ │ │ ├── MinutesSectionService.java (✅ 기존)
|
|
│ │ │ │ │ ├── TemplateService.java (✅ 기존)
|
|
│ │ │ │ │ ├── TodoService.java (✅ 기존)
|
|
│ │ │ │ │ ├── SessionService.java
|
|
│ │ │ │ │ ├── CollaborationService.java
|
|
│ │ │ │ │ └── StatisticsService.java
|
|
│ │ │ │ ├── usecase/
|
|
│ │ │ │ │ ├── in/
|
|
│ │ │ │ │ │ ├── dashboard/
|
|
│ │ │ │ │ │ │ └── GetDashboardUseCase.java (✅ 기존)
|
|
│ │ │ │ │ │ ├── meeting/
|
|
│ │ │ │ │ │ │ ├── CreateMeetingUseCase.java (✅ 기존)
|
|
│ │ │ │ │ │ │ ├── StartMeetingUseCase.java (✅ 기존)
|
|
│ │ │ │ │ │ │ ├── EndMeetingUseCase.java (✅ 기존)
|
|
│ │ │ │ │ │ │ ├── GetMeetingUseCase.java (✅ 기존)
|
|
│ │ │ │ │ │ │ ├── CancelMeetingUseCase.java (✅ 기존)
|
|
│ │ │ │ │ │ │ └── SelectTemplateUseCase.java
|
|
│ │ │ │ │ │ ├── minutes/
|
|
│ │ │ │ │ │ │ ├── CreateMinutesUseCase.java (✅ 기존)
|
|
│ │ │ │ │ │ │ ├── GetMinutesUseCase.java (✅ 기존)
|
|
│ │ │ │ │ │ │ ├── UpdateMinutesUseCase.java (✅ 기존)
|
|
│ │ │ │ │ │ │ ├── FinalizeMinutesUseCase.java (✅ 기존)
|
|
│ │ │ │ │ │ │ └── GetMinutesListUseCase.java
|
|
│ │ │ │ │ │ ├── section/
|
|
│ │ │ │ │ │ │ ├── CreateSectionUseCase.java (✅ 기존)
|
|
│ │ │ │ │ │ │ ├── GetSectionUseCase.java (✅ 기존)
|
|
│ │ │ │ │ │ │ ├── UpdateSectionUseCase.java (✅ 기존)
|
|
│ │ │ │ │ │ │ ├── DeleteSectionUseCase.java (✅ 기존)
|
|
│ │ │ │ │ │ │ ├── VerifySectionUseCase.java (✅ 기존)
|
|
│ │ │ │ │ │ │ └── LockSectionUseCase.java (✅ 기존)
|
|
│ │ │ │ │ │ ├── template/
|
|
│ │ │ │ │ │ │ ├── CreateTemplateUseCase.java (✅ 기존)
|
|
│ │ │ │ │ │ │ ├── GetTemplateUseCase.java (✅ 기존)
|
|
│ │ │ │ │ │ │ └── GetTemplateListUseCase.java
|
|
│ │ │ │ │ │ └── todo/
|
|
│ │ │ │ │ │ ├── CreateTodoUseCase.java (✅ 기존)
|
|
│ │ │ │ │ │ ├── GetTodoUseCase.java (✅ 기존)
|
|
│ │ │ │ │ │ ├── UpdateTodoUseCase.java (✅ 기존)
|
|
│ │ │ │ │ │ ├── CompleteTodoUseCase.java (✅ 기존)
|
|
│ │ │ │ │ │ └── CancelTodoUseCase.java (✅ 기존)
|
|
│ │ │ │ │ └── out/
|
|
│ │ │ │ │ ├── DashboardReader.java (✅ 기존)
|
|
│ │ │ │ │ ├── MeetingReader.java (✅ 기존)
|
|
│ │ │ │ │ ├── MeetingWriter.java (✅ 기존)
|
|
│ │ │ │ │ ├── MinutesReader.java (✅ 기존)
|
|
│ │ │ │ │ ├── MinutesWriter.java (✅ 기존)
|
|
│ │ │ │ │ ├── MinutesSectionReader.java (✅ 기존)
|
|
│ │ │ │ │ ├── MinutesSectionWriter.java (✅ 기존)
|
|
│ │ │ │ │ ├── TemplateReader.java (✅ 기존)
|
|
│ │ │ │ │ ├── TemplateWriter.java (✅ 기존)
|
|
│ │ │ │ │ ├── TodoReader.java (✅ 기존)
|
|
│ │ │ │ │ ├── TodoWriter.java (✅ 기존)
|
|
│ │ │ │ │ ├── SessionReader.java
|
|
│ │ │ │ │ ├── SessionWriter.java
|
|
│ │ │ │ │ ├── ParticipantReader.java
|
|
│ │ │ │ │ ├── ParticipantWriter.java
|
|
│ │ │ │ │ ├── CollaborationEventWriter.java
|
|
│ │ │ │ │ └── StatisticsWriter.java
|
|
│ │ │ │ └── dto/
|
|
│ │ │ │ ├── DashboardDTO.java
|
|
│ │ │ │ ├── MeetingDTO.java
|
|
│ │ │ │ ├── MinutesDTO.java
|
|
│ │ │ │ ├── SectionDTO.java
|
|
│ │ │ │ ├── TemplateDTO.java
|
|
│ │ │ │ └── TodoDTO.java
|
|
│ │ │ └── infra/
|
|
│ │ │ ├── controller/
|
|
│ │ │ │ ├── DashboardController.java
|
|
│ │ │ │ ├── MeetingController.java
|
|
│ │ │ │ ├── MinutesController.java
|
|
│ │ │ │ ├── TemplateController.java
|
|
│ │ │ │ └── TodoController.java
|
|
│ │ │ ├── dto/
|
|
│ │ │ │ ├── request/
|
|
│ │ │ │ │ ├── CreateMeetingRequest.java
|
|
│ │ │ │ │ ├── UpdateMeetingRequest.java
|
|
│ │ │ │ │ ├── CreateMinutesRequest.java
|
|
│ │ │ │ │ ├── UpdateMinutesRequest.java
|
|
│ │ │ │ │ ├── CreateSectionRequest.java
|
|
│ │ │ │ │ ├── UpdateSectionRequest.java
|
|
│ │ │ │ │ ├── CreateTodoRequest.java
|
|
│ │ │ │ │ ├── UpdateTodoRequest.java
|
|
│ │ │ │ │ ├── CreateTemplateRequest.java
|
|
│ │ │ │ │ └── SelectTemplateRequest.java
|
|
│ │ │ │ └── response/
|
|
│ │ │ │ ├── DashboardResponse.java
|
|
│ │ │ │ ├── MeetingResponse.java
|
|
│ │ │ │ ├── SessionResponse.java
|
|
│ │ │ │ ├── MeetingEndResponse.java
|
|
│ │ │ │ ├── MinutesResponse.java
|
|
│ │ │ │ ├── MinutesDetailResponse.java
|
|
│ │ │ │ ├── MinutesListResponse.java
|
|
│ │ │ │ ├── SectionResponse.java
|
|
│ │ │ │ ├── TemplateResponse.java
|
|
│ │ │ │ ├── TemplateListResponse.java
|
|
│ │ │ │ └── TodoResponse.java
|
|
│ │ │ ├── gateway/
|
|
│ │ │ │ ├── DashboardGateway.java (✅ 기존)
|
|
│ │ │ │ ├── MeetingGateway.java (✅ 기존)
|
|
│ │ │ │ ├── MinutesGateway.java (✅ 기존)
|
|
│ │ │ │ ├── MinutesSectionGateway.java (✅ 기존)
|
|
│ │ │ │ ├── TemplateGateway.java (✅ 기존)
|
|
│ │ │ │ ├── TodoGateway.java (✅ 기존)
|
|
│ │ │ │ ├── SessionGateway.java
|
|
│ │ │ │ ├── ParticipantGateway.java
|
|
│ │ │ │ ├── CollaborationEventGateway.java
|
|
│ │ │ │ ├── StatisticsGateway.java
|
|
│ │ │ │ └── entity/
|
|
│ │ │ │ ├── MeetingEntity.java (✅ 기존)
|
|
│ │ │ │ ├── MinutesEntity.java (✅ 기존)
|
|
│ │ │ │ ├── MinutesSectionEntity.java (✅ 기존)
|
|
│ │ │ │ ├── TemplateEntity.java (✅ 기존)
|
|
│ │ │ │ ├── TodoEntity.java (✅ 기존)
|
|
│ │ │ │ ├── SessionEntity.java
|
|
│ │ │ │ ├── ParticipantEntity.java
|
|
│ │ │ │ ├── CollaborationEventEntity.java
|
|
│ │ │ │ └── StatisticsEntity.java
|
|
│ │ │ │ └── repository/
|
|
│ │ │ │ ├── MeetingJpaRepository.java (✅ 기존)
|
|
│ │ │ │ ├── MinutesJpaRepository.java (✅ 기존)
|
|
│ │ │ │ ├── MinutesSectionJpaRepository.java (✅ 기존)
|
|
│ │ │ │ ├── TemplateJpaRepository.java (✅ 기존)
|
|
│ │ │ │ ├── TodoJpaRepository.java (✅ 기존)
|
|
│ │ │ │ ├── SessionJpaRepository.java
|
|
│ │ │ │ ├── ParticipantJpaRepository.java
|
|
│ │ │ │ ├── CollaborationEventJpaRepository.java
|
|
│ │ │ │ └── StatisticsJpaRepository.java
|
|
│ │ │ ├── websocket/
|
|
│ │ │ │ ├── WebSocketConfig.java
|
|
│ │ │ │ ├── WebSocketHandler.java
|
|
│ │ │ │ └── CollaborationMessageHandler.java
|
|
│ │ │ ├── event/
|
|
│ │ │ │ ├── publisher/
|
|
│ │ │ │ │ ├── EventPublisher.java
|
|
│ │ │ │ │ └── EventHubPublisher.java
|
|
│ │ │ │ └── dto/
|
|
│ │ │ │ ├── MeetingStartedEvent.java
|
|
│ │ │ │ ├── MeetingEndedEvent.java
|
|
│ │ │ │ ├── TodoAssignedEvent.java
|
|
│ │ │ │ └── NotificationRequestEvent.java
|
|
│ │ │ ├── cache/
|
|
│ │ │ │ ├── CacheConfig.java
|
|
│ │ │ │ └── CacheService.java
|
|
│ │ │ └── config/
|
|
│ │ │ ├── SecurityConfig.java
|
|
│ │ │ ├── SwaggerConfig.java
|
|
│ │ │ ├── JpaConfig.java
|
|
│ │ │ └── jwt/
|
|
│ │ │ ├── JwtAuthenticationFilter.java
|
|
│ │ │ ├── JwtTokenProvider.java
|
|
│ │ │ └── UserPrincipal.java
|
|
│ │ └── resources/
|
|
│ │ ├── application.yml (✅ 기존)
|
|
│ │ └── application-dev.yml
|
|
│ └── test/
|
|
│ └── java/
|
|
│ └── com/unicorn/hgzero/meeting/
|
|
│ └── (테스트 코드는 제외)
|
|
└── build.gradle (✅ 기존)
|
|
```
|
|
|
|
## 패키지별 역할
|
|
|
|
### 1. biz (비즈니스 로직 레이어)
|
|
|
|
#### 1.1 domain
|
|
- **역할**: 비즈니스 도메인 모델
|
|
- **파일**:
|
|
- Dashboard, Meeting, Minutes, MinutesSection, Template, Todo (✅ 기존)
|
|
- Session, Participant, CollaborationEvent, Statistics (신규 필요)
|
|
|
|
#### 1.2 service
|
|
- **역할**: 비즈니스 로직 구현 (UseCase 구현체)
|
|
- **파일**:
|
|
- DashboardService, MeetingService, MinutesService, MinutesSectionService, TemplateService, TodoService (✅ 기존)
|
|
- SessionService, CollaborationService, StatisticsService (신규 필요)
|
|
|
|
#### 1.3 usecase/in
|
|
- **역할**: Input Port (애플리케이션 서비스 인터페이스)
|
|
- **파일**: 16개 기존, 3개 신규 필요
|
|
- SelectTemplateUseCase
|
|
- GetMinutesListUseCase
|
|
- GetTemplateListUseCase
|
|
|
|
#### 1.4 usecase/out
|
|
- **역할**: Output Port (Repository 인터페이스)
|
|
- **파일**: 12개 기존, 7개 신규 필요
|
|
- SessionReader/Writer
|
|
- ParticipantReader/Writer
|
|
- CollaborationEventWriter
|
|
- StatisticsWriter
|
|
|
|
#### 1.5 dto
|
|
- **역할**: 비즈니스 레이어 DTO
|
|
- **파일**: 전부 신규 필요 (6개)
|
|
|
|
### 2. infra (인프라 레이어)
|
|
|
|
#### 2.1 controller
|
|
- **역할**: REST API 엔드포인트
|
|
- **파일**: 전부 신규 필요 (5개)
|
|
|
|
#### 2.2 dto/request & dto/response
|
|
- **역할**: API 요청/응답 DTO
|
|
- **파일**: 전부 신규 필요 (약 20개)
|
|
|
|
#### 2.3 gateway
|
|
- **역할**: Repository 구현체 (Adapter)
|
|
- **파일**:
|
|
- 6개 Gateway 기존, 4개 신규 필요
|
|
- 5개 Entity 기존, 4개 신규 필요
|
|
- 5개 Repository 기존, 4개 신규 필요
|
|
|
|
#### 2.4 websocket
|
|
- **역할**: 실시간 협업 WebSocket 처리
|
|
- **파일**: 전부 신규 필요 (3개)
|
|
|
|
#### 2.5 event
|
|
- **역할**: 이벤트 발행
|
|
- **파일**: 전부 신규 필요 (6개)
|
|
|
|
#### 2.6 cache
|
|
- **역할**: Redis 캐시 처리
|
|
- **파일**: 전부 신규 필요 (2개)
|
|
|
|
#### 2.7 config
|
|
- **역할**: Spring 설정
|
|
- **파일**: 전부 신규 필요 (7개)
|
|
|
|
## 구현 상태 요약
|
|
|
|
### ✅ 구현 완료 (62개 파일)
|
|
- Domain: 6개
|
|
- Service: 6개
|
|
- UseCase In: 16개
|
|
- UseCase Out: 12개
|
|
- Gateway: 6개
|
|
- Entity: 5개
|
|
- Repository: 5개
|
|
- Application Config: 1개 (application.yml)
|
|
- Build Config: 1개 (build.gradle)
|
|
- Main Class: 0개
|
|
|
|
### ❌ 구현 필요 (약 80개 파일)
|
|
- Main Application: 1개
|
|
- Domain: 4개
|
|
- Service: 3개
|
|
- UseCase In: 3개
|
|
- UseCase Out: 7개
|
|
- Business DTO: 6개
|
|
- Controller: 5개
|
|
- API DTO: ~20개
|
|
- Gateway: 4개
|
|
- Entity: 4개
|
|
- Repository: 4개
|
|
- WebSocket: 3개
|
|
- Event: 6개
|
|
- Cache: 2개
|
|
- Config: 7개
|
|
- Application Config: 1개 (application-dev.yml)
|
|
|
|
## 다음 단계
|
|
|
|
1. **0단계: 준비**
|
|
- ✅ 패키지 구조도 작성 완료
|
|
- Application 메인 클래스 작성
|
|
- application-dev.yml 작성
|
|
|
|
2. **1단계: common 모듈 확인 및 보완**
|
|
- common 모듈 검토
|
|
- 필요한 공통 클래스 추가
|
|
|
|
3. **2단계: meeting 서비스 구현**
|
|
- Config 레이어 (SecurityConfig, SwaggerConfig, JWT 등)
|
|
- Event 발행 인프라
|
|
- Cache 서비스
|
|
- Controller 레이어
|
|
- DTO 레이어
|
|
- 누락된 Domain/Service/Gateway
|
|
- WebSocket 실시간 협업
|
|
|
|
4. **3단계: 컴파일 및 검증**
|
|
- 각 단계별 컴파일
|
|
- 에러 수정
|
|
- 최종 빌드
|