@startuml event-이미지결과조회 !theme mono title Event Service - 이미지 생성 결과 폴링 조회 participant "EventController" as Controller <> participant "JobService" as JobSvc <> participant "Redis Cache" as Cache <> note over Controller: GET /api/jobs/{jobId}/status Controller -> JobSvc: getJobStatus(jobId) activate JobSvc JobSvc -> Cache: get("job:" + jobId) activate Cache alt 캐시 히트 Cache --> JobSvc: Job data\n{status, result, createdAt} alt Job 완료 (status: COMPLETED) JobSvc --> Controller: JobStatusResponse\n{jobId, status: COMPLETED,\nimageUrls: {...}} Controller --> Client: 200 OK\n{status: COMPLETED,\nimageUrls: {\n simple: "https://cdn.../simple.png",\n fancy: "https://cdn.../fancy.png",\n trendy: "https://cdn.../trendy.png"\n}} else Job 진행중 (status: PROCESSING) JobSvc --> Controller: JobStatusResponse\n{jobId, status: PROCESSING,\nprogress: 33%} Controller --> Client: 200 OK\n{status: PROCESSING,\nprogress: 33%} note right: 클라이언트는 3초 후\n재요청 else Job 실패 (status: FAILED) JobSvc --> Controller: JobStatusResponse\n{jobId, status: FAILED, error} Controller --> Client: 200 OK\n{status: FAILED, error} end else 캐시 미스 Cache --> JobSvc: null JobSvc --> Controller: NotFoundError Controller --> Client: 404 Not Found\n{error: "Job not found"} end deactivate Cache deactivate JobSvc note over Controller, Cache: 최대 30초 동안 폴링\n(3초 간격, 최대 10회)\n\n타임아웃 시 클라이언트는\n에러 메시지 표시 및\n"다시 생성" 옵션 제공 @enduml