From 1ddfe8779ca3127100ace80aa5c54a25a6e529fe Mon Sep 17 00:00:00 2001 From: lepitaaar Date: Mon, 23 Feb 2026 15:31:41 +0900 Subject: [PATCH 1/4] =?UTF-8?q?feat:=20@=EB=8F=99=EC=95=84=EB=A6=AC?= =?UTF-8?q?=ED=95=9C=EA=B8=80=EC=9D=B4=EB=A6=84=20=EB=9D=BC=EC=9A=B0?= =?UTF-8?q?=ED=8C=85=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/App.tsx | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index c706e136e..ec708e871 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -55,6 +55,11 @@ const App = () => { path='/clubDetail/:clubId' element={} /> + {/*한국어핸들 */} + } + /> {/*새로 빌드해서 배포할 앱 주소 url*/} Date: Mon, 23 Feb 2026 15:33:06 +0900 Subject: [PATCH 2/4] =?UTF-8?q?feat:=20=EB=8F=99=EC=95=84=EB=A6=AC=20?= =?UTF-8?q?=EC=83=81=EC=84=B8=ED=8E=98=EC=9D=B4=EC=A7=80=20=ED=95=9C?= =?UTF-8?q?=EA=B8=80=EC=9D=B4=EB=A6=84=EA=B3=BC=20id=EB=A1=9C=20=EC=A1=B0?= =?UTF-8?q?=ED=9A=8C=ED=95=98=EA=B2=8C=20=EB=A1=9C=EC=A7=81=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/constants/queryKeys.ts | 2 +- frontend/src/hooks/Queries/useClub.ts | 8 ++++---- frontend/src/pages/ClubDetailPage/ClubDetailPage.tsx | 9 +++++++-- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/frontend/src/constants/queryKeys.ts b/frontend/src/constants/queryKeys.ts index 6fbef4d09..e54b250f2 100644 --- a/frontend/src/constants/queryKeys.ts +++ b/frontend/src/constants/queryKeys.ts @@ -11,7 +11,7 @@ export const queryKeys = { }, club: { all: ['clubs'] as const, - detail: (clubId: string) => ['clubDetail', clubId] as const, + detail: (clubParam: string) => ['clubDetail', clubParam] as const, list: ( keyword: string, recruitmentStatus: string, diff --git a/frontend/src/hooks/Queries/useClub.ts b/frontend/src/hooks/Queries/useClub.ts index 0f67c6273..5e57e9dd3 100644 --- a/frontend/src/hooks/Queries/useClub.ts +++ b/frontend/src/hooks/Queries/useClub.ts @@ -21,12 +21,12 @@ interface UseGetCardListProps { division: string; } -export const useGetClubDetail = (clubId: string) => { +export const useGetClubDetail = (clubParam: string) => { return useQuery({ - queryKey: queryKeys.club.detail(clubId), - queryFn: () => getClubDetail(clubId as string), + queryKey: queryKeys.club.detail(clubParam), + queryFn: () => getClubDetail(clubParam as string), staleTime: 60 * 1000, - enabled: !!clubId, + enabled: !!clubParam, select: (data) => ({ ...data, diff --git a/frontend/src/pages/ClubDetailPage/ClubDetailPage.tsx b/frontend/src/pages/ClubDetailPage/ClubDetailPage.tsx index 0064b63f0..8724c5260 100644 --- a/frontend/src/pages/ClubDetailPage/ClubDetailPage.tsx +++ b/frontend/src/pages/ClubDetailPage/ClubDetailPage.tsx @@ -36,11 +36,16 @@ const ClubDetailPage = () => { ? tabParam : TAB_TYPE.INTRO; - const { clubId } = useParams<{ clubId: string }>(); + const { clubId, clubName } = useParams<{ + clubId: string; + clubName: string; + }>(); const { isMobile, isTablet, isLaptop, isDesktop } = useDevice(); const showTopBar = isMobile || isTablet; - const { data: clubDetail, error } = useGetClubDetail(clubId || ''); + const { data: clubDetail, error } = useGetClubDetail( + (clubName ?? clubId) || '', + ); useTrackPageView(PAGE_VIEW.CLUB_DETAIL_PAGE, clubDetail?.name, !clubDetail); From fdd80dbf3653717afa74cc01a6703fc4c049dd9a Mon Sep 17 00:00:00 2001 From: lepitaaar Date: Mon, 23 Feb 2026 15:36:14 +0900 Subject: [PATCH 3/4] =?UTF-8?q?feat:=20=EB=84=A4=EB=B9=84=EA=B2=8C?= =?UTF-8?q?=EC=9D=B4=EC=85=98=20=EC=A3=BC=EC=86=8C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/pages/ApplicationFormPage/ApplicationFormPage.tsx | 4 ++-- frontend/src/pages/MainPage/components/ClubCard/ClubCard.tsx | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/frontend/src/pages/ApplicationFormPage/ApplicationFormPage.tsx b/frontend/src/pages/ApplicationFormPage/ApplicationFormPage.tsx index a2fe744f0..e5f8469e5 100644 --- a/frontend/src/pages/ApplicationFormPage/ApplicationFormPage.tsx +++ b/frontend/src/pages/ApplicationFormPage/ApplicationFormPage.tsx @@ -60,7 +60,7 @@ const ApplicationFormPage = () => { if (isLoading) return ; if (isError || clubError) { alert(applicationError?.message || '문제가 발생했어요.'); - navigate(`/clubDetail/${clubId}`); + navigate(`/clubDetail/@${clubDetail?.name}`); return null; } if (!formData || !clubDetail || !formData.questions) { @@ -111,7 +111,7 @@ const ApplicationFormPage = () => { alert( `"${clubDetail.name}" 동아리에 성공적으로 지원되었습니다.\n좋은 결과 있으시길 바랍니다`, ); - navigate(`/clubDetail/${clubId}`, { replace: true }); + navigate(`/clubDetail/@${clubDetail.name}`, { replace: true }); } catch (error) { alert( '답변 제출에 실패했어요.\n네트워크 상태를 확인하거나 잠시 후 다시 시도해 주세요.', diff --git a/frontend/src/pages/MainPage/components/ClubCard/ClubCard.tsx b/frontend/src/pages/MainPage/components/ClubCard/ClubCard.tsx index 4b8a17533..f2c75be4e 100644 --- a/frontend/src/pages/MainPage/components/ClubCard/ClubCard.tsx +++ b/frontend/src/pages/MainPage/components/ClubCard/ClubCard.tsx @@ -23,7 +23,7 @@ const ClubCard = ({ club }: { club: Club }) => { setTimeout(() => { setIsClicked(false); - navigate(`/clubDetail/${club.id}`); + navigate(`/clubDetail/@${club.name}`); }, 150); }; From 8c35678c16e58e748ae335ad2dc7517f1b34efc2 Mon Sep 17 00:00:00 2001 From: lepitaaar Date: Mon, 23 Feb 2026 16:03:49 +0900 Subject: [PATCH 4/4] =?UTF-8?q?feat:=20clubDetail=20name=20fallback=20?= =?UTF-8?q?=EB=A1=9C=EC=A7=81=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/pages/ApplicationFormPage/ApplicationFormPage.tsx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/frontend/src/pages/ApplicationFormPage/ApplicationFormPage.tsx b/frontend/src/pages/ApplicationFormPage/ApplicationFormPage.tsx index e5f8469e5..149a0b40d 100644 --- a/frontend/src/pages/ApplicationFormPage/ApplicationFormPage.tsx +++ b/frontend/src/pages/ApplicationFormPage/ApplicationFormPage.tsx @@ -60,7 +60,11 @@ const ApplicationFormPage = () => { if (isLoading) return ; if (isError || clubError) { alert(applicationError?.message || '문제가 발생했어요.'); - navigate(`/clubDetail/@${clubDetail?.name}`); + if (clubDetail?.name) { + navigate(`/clubDetail/@${clubDetail?.name}`); + } else { + navigate(`/`); + } return null; } if (!formData || !clubDetail || !formData.questions) {