diff --git a/analytics-service/Dockerfile b/analytics-service/Dockerfile index 63378a3..34c5a7d 100644 --- a/analytics-service/Dockerfile +++ b/analytics-service/Dockerfile @@ -1,7 +1,7 @@ # Multi-stage build for Spring Boot application FROM eclipse-temurin:21-jre-alpine AS builder WORKDIR /app -COPY build/libs/*.jar app.jar +COPY analytics-service/build/libs/*.jar app.jar RUN java -Djarmode=layertools -jar app.jar extract FROM eclipse-temurin:21-jre-alpine diff --git a/analytics-service/src/main/java/com/kt/event/analytics/config/SampleDataLoader.java b/analytics-service/src/main/java/com/kt/event/analytics/config/SampleDataLoader.java index 0c8c579..422ff1d 100644 --- a/analytics-service/src/main/java/com/kt/event/analytics/config/SampleDataLoader.java +++ b/analytics-service/src/main/java/com/kt/event/analytics/config/SampleDataLoader.java @@ -93,10 +93,15 @@ public class SampleDataLoader implements ApplicationRunner { // Redis 멱등성 키 삭제 (새로운 이벤트 처리를 위해) log.info("Redis 멱등성 키 삭제 중..."); - redisTemplate.delete("processed_events_v2"); - redisTemplate.delete("distribution_completed_v2"); - redisTemplate.delete("processed_participants_v2"); - log.info("✅ Redis 멱등성 키 삭제 완료"); + try { + redisTemplate.delete("processed_events_v2"); + redisTemplate.delete("distribution_completed_v2"); + redisTemplate.delete("processed_participants_v2"); + log.info("✅ Redis 멱등성 키 삭제 완료"); + } catch (Exception e) { + log.warn("⚠️ Redis 삭제 실패 (read-only replica일 수 있음): {}", e.getMessage()); + log.info("→ Redis 삭제 건너뛰고 계속 진행..."); + } try { // 1. EventCreated 이벤트 발행 (3개 이벤트) @@ -440,7 +445,7 @@ public class SampleDataLoader implements ApplicationRunner { private void createTimelineData() { log.info("📊 TimelineData 생성 시작..."); - String[] eventIds = {"1", "2", "3"}; + String[] eventIds = {"evt_2025012301", "evt_2025012302", "evt_2025012303"}; // 각 이벤트별 시간당 기준 참여자 수 (이벤트 성과에 따라 다름) int[] baseParticipantsPerHour = {4, 2, 1}; // 이벤트1(높음), 이벤트2(중간), 이벤트3(낮음) diff --git a/analytics-service/src/main/java/com/kt/event/analytics/config/SecurityConfig.java b/analytics-service/src/main/java/com/kt/event/analytics/config/SecurityConfig.java index b340f83..9ce8369 100644 --- a/analytics-service/src/main/java/com/kt/event/analytics/config/SecurityConfig.java +++ b/analytics-service/src/main/java/com/kt/event/analytics/config/SecurityConfig.java @@ -45,8 +45,8 @@ public class SecurityConfig { .requestMatchers("/swagger-ui/**", "/swagger-ui.html", "/v3/api-docs/**", "/swagger-resources/**", "/webjars/**").permitAll() // Health check .requestMatchers("/health").permitAll() - // Analytics API endpoints (테스트 및 개발 용도로 공개) - .requestMatchers("/api/**").permitAll() + // Analytics API endpoints (context-path 제거된 실제 경로) + .requestMatchers("/events/**", "/users/**").permitAll() // All other requests require authentication .anyRequest().authenticated() ) diff --git a/analytics-service/src/main/java/com/kt/event/analytics/config/SwaggerConfig.java b/analytics-service/src/main/java/com/kt/event/analytics/config/SwaggerConfig.java index 914fe72..46ae4d5 100644 --- a/analytics-service/src/main/java/com/kt/event/analytics/config/SwaggerConfig.java +++ b/analytics-service/src/main/java/com/kt/event/analytics/config/SwaggerConfig.java @@ -22,10 +22,10 @@ public class SwaggerConfig { return new OpenAPI() .info(apiInfo()) .addServersItem(new Server() - .url("http://localhost:8086") + .url("http://localhost:8086/api/v1/analytics") .description("Local Development")) .addServersItem(new Server() - .url("http://kt-event-marketing-api.20.214.196.128.nip.io") + .url("http://kt-event-marketing-api.20.214.196.128.nip.io/api/v1/analytics") .description("AKS Development")) .addServersItem(new Server() .url("{protocol}://{host}:{port}")