kt-event-marketing/develop/dev/event-api-mapping.md
merrycoral e2179daaf7 Event Service API 매핑 문서 현행화 (v2.0)
- 구현률 100% 달성: 14개 API 전체 구현 완료
- 신규 구현 API 문서화 (5개):
  * AI 추천 요청/선택 API
  * 이미지 편집 API
  * 배포 채널 선택 API
  * 이벤트 수정 API
- 문서 구조 개선:
  * 미구현 API 계획 섹션 제거
  * 서비스 간 연동 가이드 추가
  * 통합 테스트 시나리오 추가
- Controller 라인 번호 정확도 향상
- .gitignore에 heap dump 파일 추가

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-28 13:22:22 +09:00

15 KiB

Event Service API 매핑표

문서 정보


1. 매핑 현황 요약

구현 현황

  • 설계된 API: 14개
  • 구현된 API: 14개 (100%)
  • 미구현 API: 0개 (0%)

구현률 세부

카테고리 설계 구현 미구현 구현률
Dashboard & Event List 2 2 0 100%
Event Creation Flow 8 8 0 100%
Event Management 3 3 0 100%
Job Status 1 1 0 100%

🎉 모든 API 구현 완료! Event Service의 설계된 14개 API가 모두 구현되었습니다.


2. 상세 매핑표

2.1 Dashboard & Event List (구현률 100%)

설계서 API Controller 메서드 경로 구현 여부 비고
이벤트 목록 조회 EventController GET /api/v1/events 구현 EventController:87
이벤트 상세 조회 EventController GET /api/v1/events/{eventId} 구현 EventController:133

2.2 Event Creation Flow (구현률 100% )

Step 1: 이벤트 목적 선택

설계서 API Controller 메서드 경로 구현 여부 비고
이벤트 목적 선택 EventController POST /api/v1/events/objectives 구현 EventController:51

Step 2: AI 추천 (구현률 100% )

설계서 API Controller 메서드 경로 구현 여부 비고
AI 추천 요청 EventController POST /api/v1/events/{eventId}/ai-recommendations 구현 EventController:272
AI 추천 선택 EventController PUT /api/v1/events/{eventId}/recommendations 구현 EventController:300

구현 내용:

  • AI 추천 요청: Kafka Topic ai-event-generation-job에 메시지 발행, Job ID 반환
  • AI 추천 선택: 사용자가 AI 추천 중 하나를 선택하고 커스터마이징하여 이벤트에 적용

Step 3: 이미지 생성 (구현률 100% )

설계서 API Controller 메서드 경로 구현 여부 비고
이미지 생성 요청 EventController POST /api/v1/events/{eventId}/images 구현 EventController:214
이미지 선택 EventController PUT /api/v1/events/{eventId}/images/{imageId}/select 구현 EventController:243
이미지 편집 EventController PUT /api/v1/events/{eventId}/images/{imageId}/edit 구현 EventController:328

구현 내용:

  • 이미지 생성 요청: Kafka Topic image-generation-job에 메시지 발행, Job ID 반환
  • 이미지 선택: 사용자가 생성된 이미지 중 하나를 선택하여 이벤트에 연결
  • 이미지 편집: 선택된 이미지를 편집하고 Content Service를 통해 재생성

Step 4: 배포 채널 선택 (구현률 100% )

설계서 API Controller 메서드 경로 구현 여부 비고
배포 채널 선택 EventController PUT /api/v1/events/{eventId}/channels 구현 EventController:357

구현 내용:

  • 이벤트를 배포할 채널(SMS, KakaoTalk, App Push 등)을 선택
  • Distribution Service와의 연동은 추후 추가 예정

Step 5: 최종 승인 및 배포

설계서 API Controller 메서드 경로 구현 여부 비고
최종 승인 및 배포 EventController POST /api/v1/events/{eventId}/publish 구현 EventController:175

구현 내용:

  • 이벤트 상태를 DRAFT → PUBLISHED로 변경
  • Distribution Service 동기 호출은 추후 추가 예정
  • 현재는 상태 변경만 처리

2.3 Event Management (구현률 100% )

설계서 API Controller 메서드 경로 구현 여부 비고
이벤트 수정 EventController PUT /api/v1/events/{eventId} 구현 EventController:384
이벤트 삭제 EventController DELETE /api/v1/events/{eventId} 구현 EventController:150
이벤트 조기 종료 EventController POST /api/v1/events/{eventId}/end 구현 EventController:192

구현 내용:

  • 이벤트 수정: 기존 이벤트의 정보를 수정합니다. DRAFT 상태만 수정 가능
  • 이벤트 삭제: DRAFT 상태의 이벤트만 삭제 가능
  • 이벤트 조기 종료: PUBLISHED 상태의 이벤트를 ENDED 상태로 변경

2.4 Job Status (구현률 100%)

설계서 API Controller 메서드 경로 구현 여부 비고
Job 상태 폴링 JobController GET /api/v1/jobs/{jobId} 구현 JobController:42

3. 구현된 API 상세

3.1 EventController (13개 API)

1. POST /api/v1/events/objectives

  • 설명: 이벤트 생성의 첫 단계로 목적을 선택
  • 유저스토리: UFR-EVENT-020
  • 요청: SelectObjectiveRequest (objective)
  • 응답: EventCreatedResponse (eventId, status, objective, createdAt)
  • 비즈니스 로직:
    • Long userId/storeId를 UUID로 변환하여 Event 엔티티 생성
    • 초기 상태는 DRAFT
    • EventService.createEvent() 호출

2. GET /api/v1/events

  • 설명: 사용자의 이벤트 목록 조회 (페이징, 필터링, 정렬)
  • 유저스토리: UFR-EVENT-010, UFR-EVENT-070
  • 요청 파라미터:
    • status (EventStatus, 선택)
    • search (String, 선택)
    • objective (String, 선택)
    • page, size, sort, order (페이징/정렬)
  • 응답: PageResponse
  • 비즈니스 로직:
    • Long userId를 UUID로 변환
    • Repository에서 필터링 및 페이징 처리
    • EventService.getEvents() 호출

3. GET /api/v1/events/{eventId}

  • 설명: 특정 이벤트의 상세 정보 조회
  • 유저스토리: UFR-EVENT-060
  • 요청: eventId (UUID)
  • 응답: EventDetailResponse (이벤트 정보 + 생성된 이미지 + AI 추천)
  • 비즈니스 로직:
    • Long userId를 UUID로 변환
    • 사용자 소유 이벤트만 조회 가능 (보안)
    • EventService.getEvent() 호출

4. DELETE /api/v1/events/{eventId}

  • 설명: 이벤트 삭제 (DRAFT 상태만 가능)
  • 유저스토리: UFR-EVENT-070
  • 요청: eventId (UUID)
  • 응답: ApiResponse
  • 비즈니스 로직:
    • DRAFT 상태만 삭제 가능 검증 (Event.isDeletable())
    • 다른 상태(PUBLISHED, ENDED)는 삭제 불가
    • EventService.deleteEvent() 호출

5. POST /api/v1/events/{eventId}/publish

  • 설명: 이벤트 배포 (DRAFT → PUBLISHED)
  • 유저스토리: UFR-EVENT-050
  • 요청: eventId (UUID)
  • 응답: ApiResponse
  • 비즈니스 로직:
    • Event.publish() 메서드로 상태 전환
    • Distribution Service 호출은 추후 추가 예정
    • EventService.publishEvent() 호출

6. POST /api/v1/events/{eventId}/end

  • 설명: 이벤트 조기 종료 (PUBLISHED → ENDED)
  • 유저스토리: UFR-EVENT-060
  • 요청: eventId (UUID)
  • 응답: ApiResponse
  • 비즈니스 로직:
    • Event.end() 메서드로 상태 전환
    • PUBLISHED 상태만 종료 가능
    • EventService.endEvent() 호출

7. POST /api/v1/events/{eventId}/images

  • 설명: AI를 통해 이벤트 이미지를 생성 요청
  • 유저스토리: UFR-CONT-010
  • 요청: ImageGenerationRequest (prompt, style, count)
  • 응답: ImageGenerationResponse (jobId)
  • 비즈니스 로직:
    • Kafka Topic image-generation-job에 메시지 발행
    • 비동기 작업을 위한 Job 엔티티 생성 및 반환
    • EventService.requestImageGeneration() 호출

8. PUT /api/v1/events/{eventId}/images/{imageId}/select

  • 설명: 생성된 이미지 중 하나를 선택
  • 유저스토리: UFR-CONT-020
  • 요청: SelectImageRequest (imageId)
  • 응답: ApiResponse
  • 비즈니스 로직:
    • 선택한 이미지를 이벤트에 연결
    • 이미지 URL을 Event 엔티티에 저장
    • EventService.selectImage() 호출

9. POST /api/v1/events/{eventId}/ai-recommendations

  • 설명: AI 서비스에 이벤트 추천 생성을 요청
  • 유저스토리: UFR-EVENT-030
  • 요청: AiRecommendationRequest (이벤트 컨텍스트 정보)
  • 응답: JobAcceptedResponse (jobId)
  • 비즈니스 로직:
    • Kafka Topic ai-event-generation-job에 메시지 발행
    • 비동기 작업을 위한 Job 엔티티 생성 및 반환
    • EventService.requestAiRecommendations() 호출

10. PUT /api/v1/events/{eventId}/recommendations

  • 설명: AI가 생성한 추천 중 하나를 선택하고 커스터마이징
  • 유저스토리: UFR-EVENT-030
  • 요청: SelectRecommendationRequest (recommendationId, customizations)
  • 응답: ApiResponse
  • 비즈니스 로직:
    • 선택한 AI 추천을 이벤트에 적용
    • 사용자 커스터마이징 반영
    • EventService.selectRecommendation() 호출

11. PUT /api/v1/events/{eventId}/images/{imageId}/edit

  • 설명: 선택된 이미지를 편집
  • 유저스토리: UFR-CONT-030
  • 요청: ImageEditRequest (editInstructions)
  • 응답: ImageEditResponse (editedImageUrl, jobId)
  • 비즈니스 로직:
    • Content Service와 연동하여 이미지 편집 요청
    • 편집된 이미지를 다시 생성하고 CDN에 업로드
    • EventService.editImage() 호출

12. PUT /api/v1/events/{eventId}/channels

  • 설명: 이벤트를 배포할 채널을 선택
  • 유저스토리: UFR-EVENT-040
  • 요청: SelectChannelsRequest (channels: List)
  • 응답: ApiResponse
  • 비즈니스 로직:
    • 배포 채널(SMS, KakaoTalk, App Push 등) 선택
    • Event 엔티티의 channels 필드 업데이트
    • EventService.selectChannels() 호출

13. PUT /api/v1/events/{eventId}

  • 설명: 기존 이벤트의 정보를 수정
  • 유저스토리: UFR-EVENT-080
  • 요청: UpdateEventRequest (이벤트 수정 정보)
  • 응답: EventDetailResponse (수정된 이벤트 정보)
  • 비즈니스 로직:
    • DRAFT 상태의 이벤트만 수정 가능
    • 이벤트 기본 정보, AI 추천, 이미지, 채널 등 수정
    • EventService.updateEvent() 호출

3.2 JobController (1개 API)

1. GET /api/v1/jobs/{jobId}

  • 설명: 비동기 작업의 상태를 조회 (폴링 방식)
  • 유저스토리: UFR-EVENT-030, UFR-CONT-010
  • 요청: jobId (UUID)
  • 응답: JobStatusResponse (jobId, jobType, status, progress, resultKey, errorMessage)
  • 비즈니스 로직:
    • Job 엔티티 조회
    • 상태: PENDING, PROCESSING, COMPLETED, FAILED
    • JobService.getJobStatus() 호출

4. 추가 구현된 API (설계서에 없음)

현재 추가 구현된 API는 없습니다. 모든 구현은 설계서를 기준으로 진행되었습니다.


5. 다음 단계

5.1 즉시 가능한 작업

  1. 서버 시작 테스트:

  2. 구현된 전체 API 테스트 (14개):

    • POST /api/v1/events/objectives (이벤트 목적 선택)
    • GET /api/v1/events (이벤트 목록 조회)
    • GET /api/v1/events/{eventId} (이벤트 상세 조회)
    • DELETE /api/v1/events/{eventId} (이벤트 삭제)
    • PUT /api/v1/events/{eventId} (이벤트 수정)
    • POST /api/v1/events/{eventId}/ai-recommendations (AI 추천 요청)
    • PUT /api/v1/events/{eventId}/recommendations (AI 추천 선택)
    • POST /api/v1/events/{eventId}/images (이미지 생성 요청)
    • PUT /api/v1/events/{eventId}/images/{imageId}/select (이미지 선택)
    • PUT /api/v1/events/{eventId}/images/{imageId}/edit (이미지 편집)
    • PUT /api/v1/events/{eventId}/channels (배포 채널 선택)
    • POST /api/v1/events/{eventId}/publish (이벤트 배포)
    • POST /api/v1/events/{eventId}/end (이벤트 종료)
    • GET /api/v1/jobs/{jobId} (Job 상태 조회)

5.2 서비스 간 연동 완성 필요

  1. AI Service 연동:

    • Kafka Consumer에서 ai-event-generation-job 처리
    • Redis를 통한 AI 추천 결과 캐싱
    • AI 추천 API 완전 통합 테스트
  2. Content Service 연동:

    • 이미지 생성/편집 API 통합
    • CDN 업로드 로직 연동
    • 이미지 편집 API 완전 통합 테스트
  3. Distribution Service 연동:

    • 배포 채널 검증 로직 추가
    • 이벤트 배포 시 Distribution Service 동기 호출
    • 채널별 배포 상태 추적

5.3 통합 테스트 시나리오

전체 이벤트 생성 플로우를 End-to-End로 테스트:

  1. 이벤트 목적 선택
  2. AI 추천 요청 및 선택
  3. 이미지 생성 및 선택/편집
  4. 배포 채널 선택
  5. 최종 배포 및 모니터링

부록

A. 개발 완료 요약

Event Service API 개발 현황:

  • 전체 API 구현 완료: 설계된 14개 API 모두 구현
  • 핵심 생명주기 관리: 이벤트 생성, 조회, 수정, 삭제, 상태 변경
  • AI 추천 플로우: AI 추천 요청 및 선택 API 완성
  • 이미지 관리: 생성, 선택, 편집 API 완성
  • 배포 관리: 채널 선택 및 배포 API 완성
  • 비동기 작업 추적: Job 상태 조회 API 완성

다음 단계:

  • AI Service, Content Service, Distribution Service와의 완전한 통합 테스트
  • End-to-End 시나리오 기반 통합 검증
  • 성능 최적화 및 에러 핸들링 강화

문서 버전: 2.0 최종 수정일: 2025-10-28 작성자: Event Service Team


변경 이력

v2.0 (2025-10-28) - 🎉 전체 API 구현 완료

  • 구현 현황 업데이트: 9개 → 14개 API (100% 구현 완료!)
  • 신규 구현 API 추가 (5개):
    1. POST /api/v1/events/{eventId}/ai-recommendations - AI 추천 요청
    2. PUT /api/v1/events/{eventId}/recommendations - AI 추천 선택
    3. PUT /api/v1/events/{eventId}/images/{imageId}/edit - 이미지 편집
    4. PUT /api/v1/events/{eventId}/channels - 배포 채널 선택
    5. PUT /api/v1/events/{eventId} - 이벤트 수정
  • 구현률 100% 달성:
    • Event Creation Flow: 37.5% → 100%
    • Event Management: 66.7% → 100%
    • 모든 카테고리 100% 완성
  • 문서 구조 개선:
    • 미구현 API 계획 섹션 제거
    • 서비스 간 연동 완성 가이드 추가
    • 통합 테스트 시나리오 추가
  • 라인 번호 업데이트: 모든 Controller 메서드의 정확한 라인 번호 반영

v1.1 (2025-10-27)

  • 구현 현황 업데이트: 7개 → 9개 API (64.3% 구현)
  • 신규 구현 API 추가:
    • POST /api/v1/events/{eventId}/images - 이미지 생성 요청
    • PUT /api/v1/events/{eventId}/images/{imageId}/select - 이미지 선택
  • API 경로 수정: /api/events → /api/v1/events (버전 명시)
  • 구현률 재계산:
    • Event Creation Flow: 12.5% → 37.5%
    • Event Management: 100% → 66.7% (이벤트 수정 미구현 반영)
  • 미구현 API 계획 업데이트: Content Service 연동 우선순위 조정

v1.0 (2025-10-24)

  • 초기 문서 작성
  • 설계된 14개 API 목록 정리
  • 초기 구현 상태 기록 (7개 API)