From 317cd6151968313defaf024442fc10e320ea6c33 Mon Sep 17 00:00:00 2001 From: Mina Choi Date: Wed, 20 May 2026 11:50:30 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20useAnalysisPipeline=20=EC=8B=9C?= =?UTF-8?q?=EA=B0=84=20=EA=B8=B0=EB=B0=98=20=EB=B6=84=ED=95=A0=20=EC=A0=9C?= =?UTF-8?q?=EA=B1=B0=20=E2=86=92=20=EB=B0=B1=EC=97=94=EB=93=9C=20planning?= =?UTF-8?q?=20=EB=8B=A8=EA=B3=84=20=EC=A7=81=EC=A0=91=20=EB=A7=A4=ED=95=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 기존엔 analyzing 한 단계가 길어서 30초 경과 시점에 generating → planning 으로 시간 기반 분할했지만, 백엔드가 planning 을 별도 상태로 분리하면서 불필요해짐. --- src/features/report/hooks/useAnalysisPipeline.ts | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/src/features/report/hooks/useAnalysisPipeline.ts b/src/features/report/hooks/useAnalysisPipeline.ts index 89a3a2e..d188c3f 100644 --- a/src/features/report/hooks/useAnalysisPipeline.ts +++ b/src/features/report/hooks/useAnalysisPipeline.ts @@ -56,9 +56,8 @@ function clearSession() { Object.values(SESSION_KEYS).forEach((k) => sessionStorage.removeItem(k)); } -// 백엔드 AnalysisStatus 4단계를 UI 5단계로 매핑. -// analyzing 한 단계는 길어서 generating → planning 으로 시간 기반 분할. -const ANALYZING_SPLIT_MS = 30_000; +// 백엔드 6단계(discovering/collecting/analyzing/planning/completed/failed)를 +// UI 4단계로 매핑. analyzing + planning 은 사용자 입장에서 같은 "생성" 단계라 합침. interface UseAnalysisPipelineResult { phase: Phase; @@ -101,15 +100,11 @@ export function useAnalysisPipeline(): UseAnalysisPipelineResult { let clinicId = resumeFrom?.clinicId; let runId = resumeFrom?.runId; - // analyzing 진입 시각을 기록해서 generating → planning 시점을 시간으로 판단 - let analyzingStartedAt: number | null = null; const mapPhase = (s: AnalysisStatus): Phase => { if (s === AnalysisStatus.discovering) return 'discovering'; if (s === AnalysisStatus.collecting) return 'collecting'; - if (s === AnalysisStatus.analyzing) { - if (analyzingStartedAt === null) analyzingStartedAt = Date.now(); - return Date.now() - analyzingStartedAt > ANALYZING_SPLIT_MS ? 'planning' : 'generating'; - } + if (s === AnalysisStatus.analyzing) return 'generating'; + if (s === AnalysisStatus.planning) return 'planning'; if (s === AnalysisStatus.completed) return 'complete'; return 'discovering'; };