- 이벤트 참여 API 구현
- 참여자 목록/상세 조회 API 구현
- 당첨자 추첨 및 조회 API 구현
- PostgreSQL 데이터베이스 연동
- Kafka 이벤트 발행 연동
- 로깅 설정 및 실행 프로파일 추가
- .gradle 폴더 Git 추적 제거
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
모든 테이블의 외래키 제약조건을 주석처리:
- event_channels.fk_event_channels_event
- generated_images.fk_generated_images_event
- ai_recommendations.fk_ai_recommendations_event
- jobs.fk_jobs_event
사유:
- JPA에서 연관관계 관리로 충분
- 개발 환경에서 유연성 확보
- 필요시 운영 환경에서 활성화 가능
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- application.yml에 로그 파일 Rolling 설정 추가
- .run 폴더를 Git 추적에 포함하도록 .gitignore 수정
- logs 디렉토리는 Git에서 제외
- IntelliJ 실행 프로파일 구조 개선
🤖 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>
- events 테이블: 이벤트 마스터
- event_channels 테이블: 배포 채널
- generated_images 테이블: 생성된 이미지
- ai_recommendations 테이블: AI 추천 기획안
- jobs 테이블: 비동기 작업 관리
- updated_at 자동 업데이트 트리거 추가
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
주요 변경사항:
- JPA Entity 3개 삭제 (JobEntity, GeneratedImageEntity, ContentEntity)
- JPA Repository 3개 삭제 (JobJpaRepository, GeneratedImageJpaRepository, ContentJpaRepository)
- JPA Gateway 2개 삭제 (JobGateway, ContentGateway)
- Port 인터페이스 정리: backward compatibility 메서드 제거
- Service 레이어 Redis DTO 전환 (JobManagementService, MockGenerateImagesService, MockRegenerateImageService)
- MockRedisGateway에 ContentReader/ContentWriter 구현 추가 및 Immutable 패턴 처리
- application.yml에서 JPA/H2 설정 제거
- build.gradle에서 JPA 의존성 exclude 처리
- ContentApplication에서 JPA 어노테이션 제거
서비스는 이제 순수 Redis 기반 스토리지로 동작합니다.
🤖 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>
Phase 2 작업으로 Clean Architecture의 의존성 역전 원칙을 적용하여
Service 계층이 Port 인터페이스에만 의존하도록 구조를 개선했습니다.
주요 변경사항:
1. Redis DTO 생성 (Phase 1)
- RedisAIEventData: AI 이벤트 데이터 DTO
- RedisImageData: 이미지 데이터 DTO
- RedisJobData: Job 데이터 DTO
2. Port 인터페이스 생성
- ImageWriter: 이미지 저장 Port
- ImageReader: 이미지 조회 Port
- JobWriter: Job 저장 Port
- JobReader: Job 조회 Port
3. Gateway 구현
- RedisGateway: 4개 Port 인터페이스 구현 (Production용)
- MockRedisGateway: 4개 Port 인터페이스 구현 (Local/Test용)
- JobGateway: 2개 Port 인터페이스 구현 + @Primary 추가 (Phase 3 삭제 예정)
4. 하위 호환성 유지
- Port 인터페이스에 레거시 메서드 추가 (save, findById)
- Service 계층 코드 변경 없이 점진적 마이그레이션
- "Phase 3에서 삭제 예정" 주석 표시
검증 완료:
- 컴파일 성공
- 서비스 정상 시작 (포트 8084)
- API 정상 작동 확인
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
주요 구현 사항:
- 이벤트 참여 등록 및 중복 검증 (Redis Cache + DB)
- 참여자 목록 조회 (필터링, 검색, 페이징)
- 당첨자 추첨 (Fisher-Yates Shuffle 알고리즘)
- Kafka 이벤트 발행 (ParticipantRegistered)
- Redis 캐싱으로 성능 최적화
- 전화번호 마스킹 (개인정보 보호)
- 전역 예외 처리 및 검증
기술 스택:
- Spring Boot 3.x + JPA
- MySQL (참여자, 추첨 로그)
- Redis (캐싱, 중복 검증)
- Kafka (이벤트 발행)
API 엔드포인트:
- POST /events/{eventId}/participate
- GET /events/{eventId}/participants
- GET /events/{eventId}/participants/search
- POST /events/{eventId}/draw-winners
- GET /events/{eventId}/winners
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
주요 구현 사항:
- 이벤트 참여 등록 및 중복 검증 (Redis Cache + DB)
- 참여자 목록 조회 (필터링, 검색, 페이징)
- 당첨자 추첨 (Fisher-Yates Shuffle 알고리즘)
- Kafka 이벤트 발행 (ParticipantRegistered)
- Redis 캐싱으로 성능 최적화
- 전화번호 마스킹 (개인정보 보호)
- 전역 예외 처리 및 검증
기술 스택:
- Spring Boot 3.x + JPA
- MySQL (참여자, 추첨 로그)
- Redis (캐싱, 중복 검증)
- Kafka (이벤트 발행)
API 엔드포인트:
- POST /events/{eventId}/participate
- GET /events/{eventId}/participants
- GET /events/{eventId}/participants/search
- POST /events/{eventId}/draw-winners
- GET /events/{eventId}/winners
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- RedisConfig.java: Production용 Redis 설정 추가
- RedisGateway.java: Redis 읽기/쓰기 Gateway 구현
- application-local.yml: Redis/Kafka auto-configuration 제외 설정
- test-backend.md: 7개 API 테스트 결과서 작성 (100% 성공)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- REST API Controller 구현 (이미지 생성, Job 조회, 콘텐츠 조회 등)
- Gateway 어댑터 구현 (ContentGateway, JobGateway)
- Mock Gateway 구현 (Redis, CDN, AI 이미지 생성기)
- Mock UseCase 구현 (실제 이미지 생성 시뮬레이션)
- Security 및 Swagger 설정 추가
- 로컬 테스트를 위한 H2 데이터베이스 설정 (application-local.yml)
- 비동기 처리를 위한 @EnableAsync 설정
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Spring Boot 설정 관리 가이드 추가
- 개발 워크플로우 핵심 원칙 추가
- 설정 파일 구조 및 환경 변수 관리 방법 명시
- 컴파일 및 서버 시작 프로세스 정리
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- 공통 OpenAPI 3.0.3 컨벤션 문서 작성 (design/backend/api/API_CONVENTION.md)
- 7개 서비스 API 명세서 표준화 완료:
* User Service (8081)
* Event Service (8080)
* Content Service (8082)
* AI Service (8083)
* Participation Service (8084)
* Distribution Service (8085)
* Analytics Service (8086)
주요 변경사항:
- API 경로에서 /api prefix 제거 (/api/users → /users)
- 서버 URL 패턴 통일 (Local → Dev → Prod)
- 연락처 정보 표준화 (Digital Garage Team)
- ErrorResponse 스키마 통일 (error → message, details 추가)
- securitySchemes 이름 통일 (BearerAuth)
- 포트 번호 명확히 할당
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- User Service API (7 APIs, 31KB)
- Event Service API (14 APIs, 41KB)
- AI Service API (3 APIs, 26KB)
- Content Service API (6 APIs, 37KB)
- Distribution Service API (2 APIs, 21KB)
- Participation Service API (5 APIs, 25KB)
- Analytics Service API (4 APIs, 28KB)
총 41개 API 엔드포인트, 6,912줄, OpenAPI 3.0 표준 준수
유저스토리 기반 설계, JWT 인증, Kafka/Redis 통합 문서화
API 설계서 작성 완료 (종합 가이드 포함)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Kafka 브로커 정보 추가 (4.230.50.63:9092)
- Consumer Group ID 설정 (ai, analytic)
- Spring Boot 연결 설정 예시 포함
- 토픽 설정 및 연결 테스트 방법 추가
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
변경 이유:
- outer sequence 기준으로 이미지 생성은 Content Service 담당
- 파일명을 서비스 소유권에 맞게 변경
변경 파일:
- event-이미지생성요청.puml → content-이미지생성요청.puml
- event-이미지결과조회.puml → content-이미지결과조회.puml
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
주요 변경사항:
- event-이미지생성요청.puml: Kafka 제거, ContentService 내부 Job 관리로 변경
- event-이미지결과조회.puml: ContentService 패턴으로 업데이트
- event-AI추천요청.puml: Gateway 패턴 추가, 한글화
아키텍처 구분:
- AI 추천: Kafka 사용 (ai-job-topic)
- 이미지 생성: 내부 Job 관리 (Kafka 사용 안 함)
모든 파일:
- Gateway 패턴 적용
- 레이어 아키텍처 (<<API Layer>>, <<Business Layer>>)
- 한글 요청/응답
- Redis 키 패턴 표준화
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- CDNUploader를 BlobStorageUploader로 교체
- SAS Token 기반 접근 제어 추가 (유효기간 7일)
- Blob Storage Retry 로직 추가 (최대 3회, Exponential Backoff)
- 보안 강화: Public Access 비활성화, 읽기 전용 SAS Token
- Redis 캐싱에 Blob SAS URL 저장 (TTL 7일)
- 성능 영향 최소화 (+0.05-0.1초, 전체의 1-2%)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
변경 사항:
- 이벤트생성플로우 outer: FE → Gateway → User Service 호출 패턴 추가
- user-로그인 inner: 전화번호 → 이메일 기반 인증으로 변경
- user-회원가입 inner: 국세청 API 제거, 이메일 중복검사 추가
- event-목적선택 inner: Gateway 경유, 요청/응답 한글화
- ai-트렌드분석및추천 inner: 과거 이벤트 데이터 제거, Timeout 5분으로 변경
- analytics-대시보드조회 inner: Redis TTL 5분 → 1시간으로 변경
모든 파일에 Repository CRUD 작업 한글 설명 적용 (SQL 제거)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
1. 고객참여플로우
- 재추첨 버튼 UI 요소 제거
2. 사용자인증플로우
- 로그인 input 전화번호 → 이메일/비밀번호로 변경
- 회원가입 시 이메일 중복검사 로직 추가
- 전화번호 중복검사도 유지 (이메일 검사 후 수행)
3. 성과분석플로우
- Redis Cache TTL 5분 → 1시간으로 변경
- 배치 수집 주기 10분 → 5분으로 변경
4. 이벤트생성플로우
- 회원/매장정보 조회를 FE에서 직접 수행 후 전달
- 이벤트 초안 데이터 Redis 저장 (draft:event 키)
- 최종 승인 시에만 Event DB에 영구 저장
- AI Service 과거 이벤트 데이터 조회 로직 삭제
- 이미지 생성 요청 FE → Content Service 다이렉트 호출
- Job 상태 확인도 Content Service로 직접 조회
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>