주요 변경사항:
- event-service KafkaConfig: JsonSerializer로 변경, 타입 헤더 비활성화
- ai-service application.yml: 타입 헤더 사용 안 함, 기본 타입 지정
- AIEventGenerationJobMessage: region, targetAudience, budget 필드 추가
- AiRecommendationRequest: region, targetAudience, budget 필드 추가
- AIJobKafkaProducer: 객체 직접 전송으로 변경 (이중 직렬화 문제 해결)
- AIJobKafkaConsumer: 양방향 통신 이슈로 비활성화 (.bak)
- EventService: Kafka producer 호출 시 새 필드 전달
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
주요 변경사항:
- AI Service Kafka 브로커 설정 수정 (4.230.50.63:9092 → 20.249.182.13:9095,4.217.131.59:9095)
- IntelliJ 실행 프로파일 Kafka 환경 변수 수정 (3개 파일)
- Kafka 메시지 DTO 필드명 snake_case → camelCase 변경
- @JsonProperty 어노테이션 제거로 코드 간결성 향상 (18줄 감소)
개선 효과:
- Event-AI Kafka 연동 정상 작동 확인
- 메시지 필드 매핑 성공률 0% → 100%
- jobId, eventId, storeName 등 모든 필드 정상 매핑
- AI 추천 생성 로직 정상 실행
테스트 결과:
- Kafka 메시지 발행/수신: Offset 34로 정상 동작 확인
- AI Service에서 메시지 처리 완료 (COMPLETED)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- EventIdGenerator 추가: EVT-{storeId}-{yyyyMMddHHmmss}-{random8} 형식
- JobIdGenerator 추가: JOB-{type}-{timestamp}-{random8} 형식
- EventService, JobService에 Generator 주입 및 사용
- AIJobKafkaProducer에 eventId 및 메시지 필드 추가
- AIEventGenerationJobMessage DTO 필드 확장
- Javadoc에서 UUID 표현 제거 및 실제 형식 명시
- Event.java의 UUID 백업 생성 로직 제거
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- CORS 설정 업데이트 (모든 서비스)
- Swagger UI 경로 및 설정 수정
- Kubernetes 배포 설정 개선 (Ingress, Deployment)
- distribution-service SecurityConfig 및 Controller 개선
- IntelliJ 실행 프로파일 업데이트
- 컨테이너 이미지 빌드 문서화 (deployment/container/build-image.md)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- EventService에 EventKafkaProducer 의존성 주입
- publishEvent 메서드에서 event-created 토픽으로 메시지 발행
- Event 엔티티의 selectedImageId 검증 임시 비활성화
- Kafka 메시지 발행 테스트 결과 문서 추가
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- GitHub Actions workflow로 백엔드 서비스 자동 빌드/배포 구성
- Kustomize를 통한 dev/staging/prod 환경별 설정 관리
- 각 마이크로서비스별 Dockerfile 추가
- 배포 자동화 스크립트 및 환경 변수 설정
- CI/CD 가이드 문서 작성
🔧 Backend 변경사항:
- Event 엔티티에 participants, targetParticipants, roi 필드 추가
- EventDetailResponse DTO 및 EventService 매퍼 업데이트
- ROI 자동 계산 비즈니스 로직 구현
- SecurityConfig CORS 설정 추가 (localhost:3000 허용)
🎨 Frontend 변경사항:
- TypeScript EventDetail 타입 정의 업데이트
- Events 페이지 실제 API 데이터 연동 (Mock 데이터 제거)
- 참여자 수 및 ROI 기반 통계 계산 로직 개선
📝 문서:
- Event 필드 추가 및 API 통합 테스트 결과서 작성
✅ 테스트 완료:
- Backend API 응답 검증
- CORS 설정 검증
- Frontend-Backend 통합 테스트 성공
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Kubernetes 매니페스트 파일 생성 (7개 서비스)
* user-service, event-service, ai-service, content-service
* participation-service, analytics-service, distribution-service
* 공통 리소스: Ingress, ConfigMap, Secret, ImagePullSecret
- analytics-service 배포 문제 해결
* Hibernate PostgreSQL dialect 추가
* DB 자격증명 수정 (eventuser/Hi5Jessica!)
* analytics_db 데이터베이스 생성
- content-service Probe 경로 수정
* Context path 포함 (/api/v1/content/actuator/health)
- distribution-service 신규 배포
* Docker 이미지 빌드 및 ACR 푸시
* K8s 매니페스트 생성 및 배포
* Ingress 경로 추가 (/distribution)
- Gradle bootJar 설정 추가
* 5개 서비스에 archiveFileName 설정
- 배포 가이드 문서 추가
* deployment/k8s/deploy-k8s-guide.md
* claude/deploy-k8s-back.md
* deployment/container/build-image.md 업데이트
배포 완료: 모든 백엔드 서비스(7개) 정상 실행 중
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
변경 내역:
- EventCreatedMessage: eventId, userId 타입을 Long에서 UUID로 변경
- EventKafkaProducer: publishEventCreated 메소드 파라미터 타입을 UUID로 변경
변경 이유:
- Event Entity는 UUID 타입을 사용하지만 Kafka 메시지는 Long을 사용하여 타입 불일치 발생
- Entity와 Kafka 메시지 간 타입 일관성 확보
- 런타임 타입 변환 오류 방지
영향:
- Event Service 내부 일관성 확보
- 향후 타 서비스와의 통합 시 UUID 표준 준비
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- UserPrincipal userId/storeId 타입을 Long에서 UUID로 변경
- JwtTokenProvider UUID 파싱 로직 수정
- event-service build.gradle에 bootJar 설정 추가
- Docker 이미지 빌드 성공 (event-service:latest, 1.08GB)
- 컨테이너 이미지 빌드 가이드 문서 작성
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- 백엔드 API 테스트 완료 (8/8 성공)
- Redis, PostgreSQL, Kafka 연동 검증
- ErrorHandlingDeserializer를 통한 Kafka Consumer 안정화
- 테스트 결과 보고서 작성 (develop/dev/test-backend.md)
- 실행 프로파일 추가 (event-service/.run/)
- 설정 일치 검증 완료 (application.yml ↔ run.xml)
- Event Service API 엔드포인트 추가 (이벤트 생성, 조회, 수정, AI 추천, 배포)
- DTO 클래스 추가 (요청/응답 모델)
- Kafka Producer 구성 (AI 작업 비동기 처리)
- Content Service Feign 클라이언트 구성
- Redis 설정 추가 및 테스트 컨트롤러 작성
- Docker Compose 설정 (Redis, Kafka, Zookeeper)
- 백엔드 API 테스트 완료 및 결과 문서 작성
- JWT 테스트 토큰 생성 스크립트 추가
- Event Service 실행 스크립트 추가
테스트 결과: 6개 주요 API 모두 정상 작동 확인
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- EventController: /api/events -> /api/v1/events
- JobController: /api/jobs -> /api/v1/jobs
- 모든 API 엔드포인트 테스트 완료
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
## 변경사항
### 보안 강화
- gradle.properties를 .gitignore에 추가 (로컬 환경 설정 제외)
### 공통 모듈
- ErrorCode에 Legacy 호환용 에러 코드 추가 (NOT_FOUND, INVALID_INPUT_VALUE)
### Event Service
- hibernate-types 라이브러리 제거 (Hibernate 6 네이티브 지원으로 대체)
### Kafka 인프라 추가
- Kafka 메시지 DTO 3개 추가
* AIEventGenerationJobMessage: AI 이벤트 생성 작업 메시지
* EventCreatedMessage: 이벤트 생성 완료 메시지
* ImageGenerationJobMessage: 이미지 생성 작업 메시지
- Kafka Producer/Consumer 3개 추가
* EventKafkaProducer: 이벤트 메시지 발행
* AIJobKafkaConsumer: AI 작업 메시지 소비
* ImageJobKafkaConsumer: 이미지 작업 메시지 소비
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
주요 변경사항:
- UserPrincipal 및 JWT 인증 시스템을 Long에서 UUID로 변경
- Event 엔티티 JPA 설정 최적화 (Lazy loading 및 fetch 전략 개선)
- 개발 환경용 DevAuthenticationFilter 추가 (User Service 구현 전까지 임시 사용)
- EventServiceApplication 문법 오류 수정
- Hibernate multiple bags 문제 해결 (List를 Set으로 변경)
기술 세부사항:
- common/UserPrincipal: Long → UUID 타입 변경, @Builder 어노테이션 추가
- common/JwtTokenProvider: UUID 지원 추가
- event-service/Event: Set 컬렉션 사용, Lazy loading 최적화
- event-service/EventService: Hibernate.initialize()로 컬렉션 초기화
- event-service/EventRepository: fetch join 쿼리 최적화
- event-service/SecurityConfig: DevAuthenticationFilter 통합
테스트 결과:
- 모든 Event CRUD API 정상 작동 확인
- PostgreSQL 연결 정상
- 비즈니스 로직 검증 정상 작동
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Critical 및 High 우선순위 이슈 수정:
1. Event 엔티티 nullable 필드 변경
- eventName: nullable로 변경 (AI 추천 후 설정)
- startDate, endDate: nullable로 변경 (AI 추천 후 설정)
2. Event.publish() 검증 로직 강화
- eventName 필수 검증 추가
- startDate, endDate 필수 검증 추가
- 기간 유효성 검증 추가 (시작일 <= 종료일)
3. DDL 스키마 수정
- event_name NOT NULL 제거
- start_date, end_date NOT NULL 제거
- chk_event_period 제약조건 수정 (NULL 허용)
4. jobs 테이블 외래키 추가
- event_id에 대한 외래키 제약조건 추가
- ON DELETE CASCADE 설정으로 데이터 무결성 보장
영향:
- 이벤트 생성 시 eventName, startDate, endDate를 NULL로 허용
- 배포(publish) 시점에 필수 필드 검증으로 데이터 무결성 보장
- 이벤트 삭제 시 관련 Job 자동 삭제로 고아 레코드 방지
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- JWT 토큰에 매장 ID(storeId) 필드 추가
- event-service 구현 (이벤트 생성/조회 API)
- hibernate-types 의존성 추가 (UUID 지원)
- API 매핑 문서 추가
- IntelliJ 실행 프로파일 추가
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>