mirror of
https://github.com/ktds-dg0501/kt-event-marketing.git
synced 2025-12-06 20:06:23 +00:00
🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
154 lines
7.6 KiB
Markdown
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 사용
|