외부/내부 시퀀스 설계 일관성 개선
- API 엔드포인트 통일
- AI 추천: POST /api/events/{id}/ai-recommendations
- 이미지 생성: POST /api/events/{id}/content-generation
- 최종 승인: POST /api/events/{id}/publish
- Kafka 이벤트명 구분
- EventDraftCreated: 목적 선택 시 발행
- EventCreated: 최종 승인 시 발행
- 수정 파일
- design/backend/sequence/outer/이벤트생성플로우.puml
- design/backend/sequence/inner/event-목적선택.puml
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
8cb0d7bdbe
commit
b96613c067
@ -36,9 +36,9 @@ activate Cache
|
|||||||
Cache --> Service: OK
|
Cache --> Service: OK
|
||||||
deactivate Cache
|
deactivate Cache
|
||||||
|
|
||||||
Service -> Kafka: publish(EventCreated,\n{eventDraftId, userId, objective, createdAt})
|
Service -> Kafka: publish(EventDraftCreated,\n{eventDraftId, userId, objective, createdAt})
|
||||||
activate Kafka
|
activate Kafka
|
||||||
note right: Kafka Event Topic:\nevent-topic
|
note right: Kafka Event Topic:\nevent-topic\n\nEvent: EventDraftCreated\n(목적 선택 시 발행)\n\n※ EventCreated는\n최종 승인 시 발행
|
||||||
Kafka --> Service: ACK
|
Kafka --> Service: ACK
|
||||||
deactivate Kafka
|
deactivate Kafka
|
||||||
|
|
||||||
@ -46,6 +46,6 @@ Service --> Controller: EventDraftResponse\n{eventDraftId, objective, status}
|
|||||||
deactivate Service
|
deactivate Service
|
||||||
Controller --> Client: 200 OK\n{eventDraftId}
|
Controller --> Client: 200 OK\n{eventDraftId}
|
||||||
|
|
||||||
note over Controller, Kafka: 캐시 히트 시:\n1. Redis에서 조회 → 즉시 반환\n2. DB 조회 생략
|
note over Controller, Kafka: 캐시 히트 시:\n1. Redis에서 조회 → 즉시 반환\n2. DB 조회 생략\n\n※ EventDraftCreated 이벤트는\nAnalytics Service가 선택적으로 구독\n(통계 초기화는 EventCreated 시)
|
||||||
|
|
||||||
@enduml
|
@enduml
|
||||||
|
|||||||
@ -35,7 +35,7 @@ FE --> User: AI 추천 화면으로 이동
|
|||||||
|
|
||||||
== 2. AI 이벤트 추천 - 비동기 처리 (UFR-EVENT-030) ==
|
== 2. AI 이벤트 추천 - 비동기 처리 (UFR-EVENT-030) ==
|
||||||
User -> FE: AI 추천 요청
|
User -> FE: AI 추천 요청
|
||||||
FE -> Gateway: POST /events/recommendations\n{eventDraftId, 목적, 업종, 지역}
|
FE -> Gateway: POST /api/events/{eventDraftId}/ai-recommendations\n{목적, 업종, 지역}
|
||||||
Gateway -> Event: AI 추천 요청 전달
|
Gateway -> Event: AI 추천 요청 전달
|
||||||
Event -> Kafka: Publish to ai-job-topic\n{jobId, eventDraftId, 목적, 업종, 지역}
|
Event -> Kafka: Publish to ai-job-topic\n{jobId, eventDraftId, 목적, 업종, 지역}
|
||||||
Event --> Gateway: Job 생성 완료\n{jobId, status: PENDING}
|
Event --> Gateway: Job 생성 완료\n{jobId, status: PENDING}
|
||||||
@ -93,7 +93,7 @@ FE --> User: 콘텐츠 생성 화면으로 이동
|
|||||||
|
|
||||||
== 3. SNS 이미지 생성 - 비동기 처리 (UFR-CONT-010) ==
|
== 3. SNS 이미지 생성 - 비동기 처리 (UFR-CONT-010) ==
|
||||||
User -> FE: 이미지 생성 요청
|
User -> FE: 이미지 생성 요청
|
||||||
FE -> Gateway: POST /contents/images\n{eventDraftId, 이벤트정보}
|
FE -> Gateway: POST /api/events/{eventDraftId}/content-generation\n{이벤트정보}
|
||||||
Gateway -> Event: 이미지 생성 요청
|
Gateway -> Event: 이미지 생성 요청
|
||||||
Event -> Kafka: Publish to image-job-topic\n{jobId, eventDraftId, 이벤트정보}
|
Event -> Kafka: Publish to image-job-topic\n{jobId, eventDraftId, 이벤트정보}
|
||||||
Event --> Gateway: Job 생성 완료\n{jobId, status: PENDING}
|
Event --> Gateway: Job 생성 완료\n{jobId, status: PENDING}
|
||||||
@ -149,8 +149,8 @@ FE --> User: 배포 채널 선택 화면으로 이동
|
|||||||
|
|
||||||
== 4. 최종 승인 및 다중 채널 배포 - 동기 처리 (UFR-EVENT-050) ==
|
== 4. 최종 승인 및 다중 채널 배포 - 동기 처리 (UFR-EVENT-050) ==
|
||||||
User -> FE: 배포 채널 선택\n최종 승인 요청
|
User -> FE: 배포 채널 선택\n최종 승인 요청
|
||||||
FE -> Gateway: POST /events/{eventDraftId}/approve\n{선택 채널 목록, 승인}
|
FE -> Gateway: POST /api/events/{eventDraftId}/publish\n{선택 채널 목록}
|
||||||
Gateway -> Event: 최종 승인 처리
|
Gateway -> Event: 최종 승인 및 배포 처리
|
||||||
Event -> EventDB: 이벤트 상태 변경\nDRAFT → APPROVED
|
Event -> EventDB: 이벤트 상태 변경\nDRAFT → APPROVED
|
||||||
EventDB --> Event: 상태 변경 완료
|
EventDB --> Event: 상태 변경 완료
|
||||||
Event -> Kafka: Publish to event-topic\nEventCreated\n{eventId, 이벤트정보}
|
Event -> Kafka: Publish to event-topic\nEventCreated\n{eventId, 이벤트정보}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user