From 468b6757a9c24ed08692289bc3ab93b8560dcf22 Mon Sep 17 00:00:00 2001 From: manNomi Date: Mon, 29 Dec 2025 00:06:50 +0900 Subject: [PATCH 1/3] =?UTF-8?q?feat=20:=20=EC=84=9C=EB=B2=84=20=ED=8E=98?= =?UTF-8?q?=EC=B9=98=20=EC=8B=A4=ED=8C=A8=EC=8B=9C=20=EB=B9=8C=EB=93=9C=20?= =?UTF-8?q?=EB=A7=89=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/apis/mentor/legacy/patchConfirmMentoring.ts | 13 +++++++++++++ .../server/getRecommendedUniversity.ts | 4 ++++ .../server/getSearchUniversitiesByText.ts | 15 +++++++++++++-- .../universities/server/getUniversityDetail.ts | 4 ++++ src/app/(home)/page.tsx | 15 +++++++++++++-- src/app/community/[boardCode]/page.tsx | 12 +++++++----- src/app/university/[id]/page.tsx | 8 +++++--- 7 files changed, 59 insertions(+), 12 deletions(-) create mode 100644 src/apis/mentor/legacy/patchConfirmMentoring.ts diff --git a/src/apis/mentor/legacy/patchConfirmMentoring.ts b/src/apis/mentor/legacy/patchConfirmMentoring.ts new file mode 100644 index 00000000..45ef91b9 --- /dev/null +++ b/src/apis/mentor/legacy/patchConfirmMentoring.ts @@ -0,0 +1,13 @@ +import { AxiosError } from "axios"; + +import { ConfirmMentoringRequest, ConfirmMentoringResponse, mentorApi } from "../api"; + +import { useMutation } from "@tanstack/react-query"; + +const usePatchConfirmMentoring = () => { + return useMutation({ + mutationFn: (data) => mentorApi.patchConfirmMentoring({ data }), + }); +}; + +export default usePatchConfirmMentoring; diff --git a/src/apis/universities/server/getRecommendedUniversity.ts b/src/apis/universities/server/getRecommendedUniversity.ts index 64813b4c..dd805f83 100644 --- a/src/apis/universities/server/getRecommendedUniversity.ts +++ b/src/apis/universities/server/getRecommendedUniversity.ts @@ -4,6 +4,10 @@ import { ListUniversity } from "@/types/university"; type GetRecommendedUniversityResponse = { recommendedUniversities: ListUniversity[] }; +/** + * 추천 대학 목록을 가져옵니다. + * @returns ServerFetchResult - 호출 측에서 result.ok 체크 필요 + */ const getRecommendedUniversity = async () => { const endpoint = "/univ-apply-infos/recommend"; diff --git a/src/apis/universities/server/getSearchUniversitiesByText.ts b/src/apis/universities/server/getSearchUniversitiesByText.ts index c6da3522..8b6c1185 100644 --- a/src/apis/universities/server/getSearchUniversitiesByText.ts +++ b/src/apis/universities/server/getSearchUniversitiesByText.ts @@ -13,11 +13,22 @@ export const getUniversitiesByText = async (value: string): Promise(endpoint); - return response.ok ? response.data.univApplyInfoPreviews : []; + + if (!response.ok) { + throw new Error(`Failed to fetch universities by text: ${response.error}`); + } + + return response.data.univApplyInfoPreviews; }; export const getAllUniversities = async (): Promise => { - return getUniversitiesByText(""); + const universities = await getUniversitiesByText(""); + + if (!universities || universities.length === 0) { + throw new Error("Failed to fetch universities: empty response"); + } + + return universities; }; export const getCategorizedUniversities = async (): Promise => { diff --git a/src/apis/universities/server/getUniversityDetail.ts b/src/apis/universities/server/getUniversityDetail.ts index 548082d7..3312c655 100644 --- a/src/apis/universities/server/getUniversityDetail.ts +++ b/src/apis/universities/server/getUniversityDetail.ts @@ -5,5 +5,9 @@ import { University } from "@/types/university"; export const getUniversityDetail = async (universityInfoForApplyId: number): Promise => { const result = await serverFetch(`/univ-apply-infos/${universityInfoForApplyId}`); + if (!result.ok) { + throw new Error(`Failed to fetch university detail for id ${universityInfoForApplyId}: ${result.error}`); + } + return result.data; }; diff --git a/src/app/(home)/page.tsx b/src/app/(home)/page.tsx index 8b6c4c09..a08eb568 100644 --- a/src/app/(home)/page.tsx +++ b/src/app/(home)/page.tsx @@ -67,11 +67,22 @@ const structuredData = { const HomePage = async () => { const newsList = await fetchAllNews(); - const { data } = await getRecommendedUniversity(); - const recommendedUniversities = data?.recommendedUniversities || []; + const recommendedUniversitiesResponse = await getRecommendedUniversity(); + + // 빌드 시 필수 데이터 검증 + if (!recommendedUniversitiesResponse.ok) { + throw new Error("Failed to fetch recommended universities for home page"); + } + + const recommendedUniversities = recommendedUniversitiesResponse.data.recommendedUniversities; + // 권역별 전체 대학 리스트를 미리 가져와 빌드합니다 const allRegionsUniversityList = await getCategorizedUniversities(); + if (!allRegionsUniversityList || Object.keys(allRegionsUniversityList).length === 0) { + throw new Error("Failed to fetch categorized universities for home page"); + } + return ( <>