From 03762bbdefba074c3b80e6a9a0ba7bd58c12b093 Mon Sep 17 00:00:00 2001 From: TTOCHIwas <95687307+TTOCHIwas@users.noreply.github.com> Date: Tue, 24 Mar 2026 11:21:09 +0900 Subject: [PATCH 1/3] =?UTF-8?q?feat:=20=EC=A7=84=ED=96=89=20=EC=A4=91?= =?UTF-8?q?=EC=9D=B8=20=ED=94=84=EB=A1=9C=EC=A0=9D=ED=8A=B8=20=ED=81=B4?= =?UTF-8?q?=EB=A6=AD=20=EC=8B=9C=20=EC=97=85=EB=A1=9C=EB=93=9C=20=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=20=EC=9D=B4=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mypage/ui/section/ProjectListSection.tsx | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/features/mypage/ui/section/ProjectListSection.tsx b/src/features/mypage/ui/section/ProjectListSection.tsx index 60d1e5a..13f6077 100644 --- a/src/features/mypage/ui/section/ProjectListSection.tsx +++ b/src/features/mypage/ui/section/ProjectListSection.tsx @@ -70,9 +70,17 @@ export const ProjectListSection = () => { - navigate(DYNAMIC_ROUTE_PATHS.PROJECT_DETAIL(project.projectId)) - } + onClick={() => { + if (project.status === "IN_PROGRESS") { + navigate( + `${ROUTE_PATHS.UPLOAD_STEP_BASE}/${project.projectId}/1`, + ); + } else { + navigate( + DYNAMIC_ROUTE_PATHS.PROJECT_DETAIL(project.projectId), + ); + } + }} updatedAt={project.createdAt} status={project.status} roadmapType={project.roadmapType} From f51497397879cc8630ab7ce6326b058667673feb Mon Sep 17 00:00:00 2001 From: TTOCHIwas <95687307+TTOCHIwas@users.noreply.github.com> Date: Wed, 25 Mar 2026 21:50:47 +0900 Subject: [PATCH 2/3] =?UTF-8?q?feat:=20=EC=A7=84=ED=96=89=20=EC=A4=91?= =?UTF-8?q?=EC=9D=B8=20=ED=94=84=EB=A1=9C=EC=A0=9D=ED=8A=B8=20=ED=81=B4?= =?UTF-8?q?=EB=A6=AD=20=EC=8B=9C=20=EC=97=85=EB=A1=9C=EB=93=9C=20=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=20=EC=9D=B4=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/upload/_step/UploadStepPage.tsx | 31 +++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/src/pages/upload/_step/UploadStepPage.tsx b/src/pages/upload/_step/UploadStepPage.tsx index 50e3166..0652a55 100644 --- a/src/pages/upload/_step/UploadStepPage.tsx +++ b/src/pages/upload/_step/UploadStepPage.tsx @@ -165,6 +165,7 @@ function UploadStepContent({ const [stepData, setStepData] = useState(null); const [isStepLoading, setIsStepLoading] = useState(false); + const [isStepResolved, setIsStepResolved] = useState(false); const [isSaving, setIsSaving] = useState(false); const [isCompleting, setIsCompleting] = useState(false); @@ -175,7 +176,33 @@ function UploadStepContent({ const isLastStep = stepNum >= steps.length; useEffect(() => { - if (!projectId || !stepCode) return; + if (!project) return; + + const stepResponses = project.stepResponses ?? []; + + if (stepResponses.length === 0) { + setIsStepResolved(true); + return; + } + + const nextStepIndex = stepResponses.findIndex( + (step) => !step.userSubmittedResult, + ); + + const targetStep = + nextStepIndex === -1 ? stepResponses.length : nextStepIndex + 1; + + if (stepNum !== targetStep) { + navigate(`${ROUTE_PATHS.UPLOAD_STEP_BASE}/${projectId}/${targetStep}`, { + replace: true, + }); + } else { + setIsStepResolved(true); + } + }, [project, stepNum, projectId, navigate]); + + useEffect(() => { + if (!isStepResolved || !projectId || !stepCode) return; const fetchStep = async () => { setIsStepLoading(true); @@ -193,7 +220,7 @@ function UploadStepContent({ }; fetchStep(); - }, [projectId, stepCode]); + }, [isStepResolved, projectId, stepCode]); const copyToClipboard = (text: string, setter: (v: boolean) => void) => { if (!navigator?.clipboard?.writeText) { From b18de7b607115789323e8a7b615f4b5c7c61b878 Mon Sep 17 00:00:00 2001 From: TTOCHIwas <95687307+TTOCHIwas@users.noreply.github.com> Date: Wed, 25 Mar 2026 22:52:14 +0900 Subject: [PATCH 3/3] =?UTF-8?q?fix:=20=EC=9D=B4=EC=A0=84=20=EB=8B=A8?= =?UTF-8?q?=EA=B3=84=20=EC=9D=B4=EB=8F=99=20=EC=B0=A8=EB=8B=A8=20=EB=AC=B8?= =?UTF-8?q?=EC=A0=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/upload/_step/UploadStepPage.tsx | 30 +++++++++++------------ 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/src/pages/upload/_step/UploadStepPage.tsx b/src/pages/upload/_step/UploadStepPage.tsx index 0652a55..f6d66d0 100644 --- a/src/pages/upload/_step/UploadStepPage.tsx +++ b/src/pages/upload/_step/UploadStepPage.tsx @@ -180,25 +180,23 @@ function UploadStepContent({ const stepResponses = project.stepResponses ?? []; - if (stepResponses.length === 0) { - setIsStepResolved(true); - return; - } + if (stepNum === 1 && stepResponses.length > 0) { + const nextStepIndex = stepResponses.findIndex( + (step) => !step.userSubmittedResult, + ); - const nextStepIndex = stepResponses.findIndex( - (step) => !step.userSubmittedResult, - ); + const targetStep = + nextStepIndex === -1 ? stepResponses.length : nextStepIndex + 1; - const targetStep = - nextStepIndex === -1 ? stepResponses.length : nextStepIndex + 1; - - if (stepNum !== targetStep) { - navigate(`${ROUTE_PATHS.UPLOAD_STEP_BASE}/${projectId}/${targetStep}`, { - replace: true, - }); - } else { - setIsStepResolved(true); + if (targetStep !== stepNum) { + navigate(`${ROUTE_PATHS.UPLOAD_STEP_BASE}/${projectId}/${targetStep}`, { + replace: true, + }); + return; + } } + + setIsStepResolved(true); }, [project, stepNum, projectId, navigate]); useEffect(() => {