kt-event-marketing/develop/dev/package-structure-analytics.md
Hyowon Yang 46fc1663a5 analytics 서비스개발
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-24 09:44:02 +09:00

154 lines
7.6 KiB
Markdown

# Analytics Service 패키지 구조도
```
analytics-service/
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── kt/
│ │ │ └── event/
│ │ │ └── analytics/
│ │ │ ├── AnalyticsServiceApplication.java
│ │ │ │
│ │ │ ├── controller/
│ │ │ │ ├── AnalyticsDashboardController.java
│ │ │ │ ├── ChannelAnalyticsController.java
│ │ │ │ ├── TimelineAnalyticsController.java
│ │ │ │ └── RoiAnalyticsController.java
│ │ │ │
│ │ │ ├── service/
│ │ │ │ ├── AnalyticsService.java
│ │ │ │ ├── ChannelAnalyticsService.java
│ │ │ │ ├── TimelineAnalyticsService.java
│ │ │ │ ├── RoiAnalyticsService.java
│ │ │ │ ├── ExternalChannelService.java
│ │ │ │ └── ROICalculator.java
│ │ │ │
│ │ │ ├── repository/
│ │ │ │ ├── EventStatsRepository.java
│ │ │ │ ├── ChannelStatsRepository.java
│ │ │ │ └── TimelineDataRepository.java
│ │ │ │
│ │ │ ├── entity/
│ │ │ │ ├── EventStats.java
│ │ │ │ ├── ChannelStats.java
│ │ │ │ └── TimelineData.java
│ │ │ │
│ │ │ ├── dto/
│ │ │ │ ├── request/
│ │ │ │ │ └── (쿼리 파라미터는 Controller에서 직접 처리)
│ │ │ │ │
│ │ │ │ └── response/
│ │ │ │ ├── AnalyticsDashboardResponse.java
│ │ │ │ ├── ChannelAnalyticsResponse.java
│ │ │ │ ├── TimelineAnalyticsResponse.java
│ │ │ │ ├── RoiAnalyticsResponse.java
│ │ │ │ ├── ChannelSummary.java
│ │ │ │ ├── ChannelAnalytics.java
│ │ │ │ ├── ChannelMetrics.java
│ │ │ │ ├── ChannelPerformance.java
│ │ │ │ ├── ChannelCosts.java
│ │ │ │ ├── ChannelComparison.java
│ │ │ │ ├── TimelineDataPoint.java
│ │ │ │ ├── TrendAnalysis.java
│ │ │ │ ├── PeakTimeInfo.java
│ │ │ │ ├── InvestmentDetails.java
│ │ │ │ ├── RevenueDetails.java
│ │ │ │ ├── RoiCalculation.java
│ │ │ │ ├── CostEfficiency.java
│ │ │ │ ├── RevenueProjection.java
│ │ │ │ ├── PeriodInfo.java
│ │ │ │ ├── AnalyticsSummary.java
│ │ │ │ ├── SocialInteractionStats.java
│ │ │ │ ├── VoiceCallStats.java
│ │ │ │ └── RoiSummary.java
│ │ │ │
│ │ │ ├── messaging/
│ │ │ │ ├── consumer/
│ │ │ │ │ ├── EventCreatedConsumer.java
│ │ │ │ │ ├── ParticipantRegisteredConsumer.java
│ │ │ │ │ └── DistributionCompletedConsumer.java
│ │ │ │ │
│ │ │ │ └── event/
│ │ │ │ ├── EventCreatedEvent.java
│ │ │ │ ├── ParticipantRegisteredEvent.java
│ │ │ │ └── DistributionCompletedEvent.java
│ │ │ │
│ │ │ ├── client/
│ │ │ │ ├── WooriTVClient.java
│ │ │ │ ├── GenieTVClient.java
│ │ │ │ ├── RingoBizClient.java
│ │ │ │ └── SNSClient.java
│ │ │ │
│ │ │ └── config/
│ │ │ ├── SecurityConfig.java
│ │ │ ├── SwaggerConfig.java
│ │ │ ├── RedisConfig.java
│ │ │ ├── KafkaConsumerConfig.java
│ │ │ ├── FeignConfig.java
│ │ │ └── Resilience4jConfig.java
│ │ │
│ │ └── resources/
│ │ ├── application.yml
│ │ └── logback-spring.xml
│ │
│ └── test/
│ └── java/
│ └── com/
│ └── kt/
│ └── event/
│ └── analytics/
│ └── (테스트 코드 - 현재 단계에서는 작성하지 않음)
└── build.gradle
```
## 패키지 설명
### controller
- **AnalyticsDashboardController**: 통합 대시보드 조회 API
- **ChannelAnalyticsController**: 채널별 성과 분석 API
- **TimelineAnalyticsController**: 시간대별 추이 분석 API
- **RoiAnalyticsController**: ROI 상세 분석 API
### service
- **AnalyticsService**: 대시보드 데이터 통합 및 조회
- **ChannelAnalyticsService**: 채널별 분석 로직
- **TimelineAnalyticsService**: 시간대별 분석 로직
- **RoiAnalyticsService**: ROI 계산 및 분석 로직
- **ExternalChannelService**: 외부 채널 API 호출 및 Circuit Breaker 적용
- **ROICalculator**: ROI 계산 유틸리티
### repository
- **EventStatsRepository**: 이벤트 통계 데이터 저장소
- **ChannelStatsRepository**: 채널별 통계 데이터 저장소
- **TimelineDataRepository**: 시간대별 데이터 저장소
### entity
- **EventStats**: 이벤트 통계 엔티티
- **ChannelStats**: 채널 통계 엔티티
- **TimelineData**: 시간대별 데이터 엔티티
### dto/response
- API 응답 DTO 클래스들
### messaging
- **consumer**: Kafka Event Consumer 클래스
- **event**: Kafka Event DTO 클래스
### client
- **FeignClient**: 외부 API 연동 클라이언트 (우리동네TV, 지니TV, 링고비즈, SNS)
### config
- **SecurityConfig**: Spring Security 설정
- **SwaggerConfig**: Swagger/OpenAPI 설정
- **RedisConfig**: Redis 캐시 설정
- **KafkaConsumerConfig**: Kafka Consumer 설정
- **FeignConfig**: OpenFeign 설정
- **Resilience4jConfig**: Circuit Breaker 설정
## 아키텍처 패턴
- **Layered Architecture** 적용
- Service 계층에 Interface 사용