mirror of
https://github.com/hwanny1128/HGZero.git
synced 2025-12-06 13:46:24 +00:00
15 KiB
15 KiB
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)
다음 단계
-
0단계: 준비
- ✅ 패키지 구조도 작성 완료
- Application 메인 클래스 작성
- application-dev.yml 작성
-
1단계: common 모듈 확인 및 보완
- common 모듈 검토
- 필요한 공통 클래스 추가
-
2단계: meeting 서비스 구현
- Config 레이어 (SecurityConfig, SwaggerConfig, JWT 등)
- Event 발행 인프라
- Cache 서비스
- Controller 레이어
- DTO 레이어
- 누락된 Domain/Service/Gateway
- WebSocket 실시간 협업
-
3단계: 컴파일 및 검증
- 각 단계별 컴파일
- 에러 수정
- 최종 빌드