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..0d1b9af8 100644 --- a/src/apis/universities/server/getSearchUniversitiesByText.ts +++ b/src/apis/universities/server/getSearchUniversitiesByText.ts @@ -13,11 +13,17 @@ 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(""); + 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..6d936d79 100644 --- a/src/app/(home)/page.tsx +++ b/src/app/(home)/page.tsx @@ -67,8 +67,15 @@ 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(); diff --git a/src/app/community/[boardCode]/page.tsx b/src/app/community/[boardCode]/page.tsx index ebd7d7b3..8ad5defe 100644 --- a/src/app/community/[boardCode]/page.tsx +++ b/src/app/community/[boardCode]/page.tsx @@ -42,13 +42,15 @@ const CommunityPage = async ({ params }: CommunityPageProps) => { // 서버에서 데이터 prefetch (ISR - 수동 revalidate만) const result = await getPostListServer({ boardCode, category: defaultCategory, revalidate: false }); - if (result.ok) { - // React Query 캐시에 데이터 설정 (서버 fetch와 동일한 category 사용) - queryClient.setQueryData([CommunityQueryKeys.postList, boardCode, defaultCategory], { - data: result.data, - }); + if (!result.ok) { + throw new Error(`Failed to fetch posts for board: ${boardCode}`); } + // React Query 캐시에 데이터 설정 (서버 fetch와 동일한 category 사용) + queryClient.setQueryData([CommunityQueryKeys.postList, boardCode, defaultCategory], { + data: result.data, + }); + return (
diff --git a/src/app/university/[id]/page.tsx b/src/app/university/[id]/page.tsx index eae815cc..0f84aa41 100644 --- a/src/app/university/[id]/page.tsx +++ b/src/app/university/[id]/page.tsx @@ -27,9 +27,7 @@ export async function generateMetadata({ params }: MetadataProps): Promise