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

7.6 KiB

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 사용