mirror of
https://github.com/ktds-dg0501/kt-event-marketing.git
synced 2026-06-13 17:39:10 +00:00
edit outer sequence
This commit is contained in:
@@ -11,7 +11,6 @@ participant "AI Service" as AI
|
||||
participant "Content Service" as Content
|
||||
participant "Distribution Service" as Dist
|
||||
participant "Kafka" as Kafka
|
||||
participant "Redis Cache" as Cache
|
||||
database "Event DB" as EventDB
|
||||
participant "외부 AI API" as AIApi
|
||||
participant "이미지 생성 API" as ImageApi
|
||||
@@ -21,14 +20,8 @@ participant "배포 채널 APIs" as ChannelApis
|
||||
User -> FE: 이벤트 목적 선택
|
||||
FE -> Gateway: POST /events/purposes\n{목적, 매장정보}
|
||||
Gateway -> Event: 이벤트 목적 저장 요청
|
||||
Event -> Cache: 캐시 조회\nkey: purpose:{userId}
|
||||
alt 캐시 히트
|
||||
Cache --> Event: 캐시된 데이터
|
||||
else 캐시 미스
|
||||
Event -> EventDB: 이벤트 목적 저장
|
||||
EventDB --> Event: 저장 완료
|
||||
Event -> Cache: 캐시 저장\nTTL: 30분
|
||||
end
|
||||
Event -> EventDB: 이벤트 목적 저장
|
||||
EventDB --> Event: 저장 완료
|
||||
Event --> Gateway: 저장 완료\n{eventDraftId}
|
||||
Gateway --> FE: 200 OK
|
||||
FE --> User: AI 추천 화면으로 이동
|
||||
@@ -42,38 +35,29 @@ Event --> Gateway: Job 생성 완료\n{jobId, status: PENDING}
|
||||
Gateway --> FE: 202 Accepted\n{jobId}
|
||||
FE --> User: "AI가 분석 중입니다..." (로딩)
|
||||
|
||||
note over AI: Kafka Consumer\nai-job-topic 구독
|
||||
note over AI: Kafka Consumer\nai 이벤트 생성 topic 구독
|
||||
Kafka --> AI: Consume Job Message\n{jobId, eventDraftId, ...}
|
||||
AI -> Cache: 트렌드 분석 캐시 조회\nkey: trend:{업종}:{지역}
|
||||
|
||||
alt 캐시 히트
|
||||
Cache --> AI: 캐시된 트렌드 데이터
|
||||
else 캐시 미스
|
||||
AI -> EventDB: 과거 이벤트 데이터 조회
|
||||
EventDB --> AI: 이벤트 통계 데이터
|
||||
AI -> AIApi: 트렌드 분석 요청\n{업종, 지역, 과거데이터}
|
||||
AIApi --> AI: 트렌드 분석 결과
|
||||
AI -> Cache: 트렌드 캐시 저장\nTTL: 1시간
|
||||
end
|
||||
|
||||
AI -> AIApi: 이벤트 추천 요청\n{목적, 트렌드, 매장정보}
|
||||
AIApi --> AI: 3가지 추천안 생성
|
||||
AI -> EventDB: 추천 결과 저장
|
||||
AI -> EventDB: 과거 이벤트 데이터 조회
|
||||
EventDB --> AI: 이벤트 통계 데이터
|
||||
AI -> AIApi: 트렌드 분석 및 이벤트 추천 요청\n{목적, 업종, 지역, 과거데이터, 매장정보}
|
||||
AIApi --> AI: 3가지 추천안 + 트렌드 요약\n(예: "여름철 시원한 음료 선호도 증가")
|
||||
AI -> EventDB: 추천 결과 및 트렌드 요약 저장
|
||||
EventDB --> AI: 저장 완료
|
||||
AI -> Cache: Job 상태 업데이트\nkey: job:{jobId}\nstatus: COMPLETED
|
||||
AI -> Kafka: Publish to event-topic\nEventRecommended\n{jobId, eventDraftId, recommendations}
|
||||
AI -> EventDB: Job 상태 업데이트\nstatus: COMPLETED
|
||||
AI -> Kafka: Publish to event-topic\nEventRecommended\n{jobId, eventDraftId, recommendations, trendSummary}
|
||||
|
||||
group Polling으로 상태 확인
|
||||
loop 상태 확인 (최대 30초)
|
||||
FE -> Gateway: GET /jobs/{jobId}/status
|
||||
Gateway -> Event: Job 상태 조회
|
||||
Event -> Cache: 캐시에서 Job 상태 확인
|
||||
Cache --> Event: {status, result}
|
||||
Event -> EventDB: Job 상태 및 결과 조회
|
||||
EventDB --> Event: {status, result}
|
||||
|
||||
alt Job 완료
|
||||
Event --> Gateway: 200 OK\n{status: COMPLETED, recommendations}
|
||||
Gateway --> FE: 추천 결과 반환
|
||||
FE --> User: 3가지 추천안 표시\n(제목/경품 수정 가능)
|
||||
Event --> Gateway: 200 OK\n{status: COMPLETED, recommendations, trendSummary}
|
||||
Gateway --> FE: 추천 결과 및 트렌드 요약 반환
|
||||
FE --> User: 트렌드 요약 표시\n3가지 추천안 표시\n(제목/경품 수정 가능)
|
||||
else Job 진행중
|
||||
Event --> Gateway: 200 OK\n{status: PENDING/PROCESSING}
|
||||
Gateway --> FE: 진행중 상태
|
||||
@@ -100,7 +84,7 @@ Event --> Gateway: Job 생성 완료\n{jobId, status: PENDING}
|
||||
Gateway --> FE: 202 Accepted\n{jobId}
|
||||
FE --> User: "이미지 생성 중..." (로딩)
|
||||
|
||||
note over Content: Kafka Consumer\nimage-job-topic 구독
|
||||
note over Content: Kafka Consumer\n이미지 생성 topic 구독
|
||||
Kafka --> Content: Consume Job Message\n{jobId, eventDraftId, ...}
|
||||
|
||||
par 심플 스타일
|
||||
@@ -116,15 +100,15 @@ end
|
||||
|
||||
Content -> EventDB: 이미지 URL 저장
|
||||
EventDB --> Content: 저장 완료
|
||||
Content -> Cache: Job 상태 업데이트\nkey: job:{jobId}\nstatus: COMPLETED
|
||||
Content -> EventDB: Job 상태 업데이트\nstatus: COMPLETED
|
||||
Content -> Kafka: Publish to event-topic\nContentCreated\n{jobId, eventDraftId, imageUrls}
|
||||
|
||||
group Polling으로 상태 확인
|
||||
loop 상태 확인 (최대 30초)
|
||||
FE -> Gateway: GET /jobs/{jobId}/status
|
||||
Gateway -> Event: Job 상태 조회
|
||||
Event -> Cache: 캐시에서 Job 상태 확인
|
||||
Cache --> Event: {status, imageUrls}
|
||||
Event -> EventDB: Job 상태 및 결과 조회
|
||||
EventDB --> Event: {status, imageUrls}
|
||||
|
||||
alt Job 완료
|
||||
Event --> Gateway: 200 OK\n{status: COMPLETED, imageUrls}
|
||||
|
||||
Reference in New Issue
Block a user