From 2c840703aaec7fc0148f22cd001f6850bac3226f Mon Sep 17 00:00:00 2001 From: manNomi Date: Sat, 21 Feb 2026 02:23:03 +0900 Subject: [PATCH 1/3] =?UTF-8?q?fix:=20=EB=8C=80=ED=95=99=20=EA=B2=80?= =?UTF-8?q?=EC=83=89=20=EC=A1=B0=EA=B1=B4=EC=97=90=20=EC=A4=91=EA=B5=AD?= =?UTF-8?q?=EA=B6=8C=20=ED=95=84=ED=84=B0=20=EC=98=B5=EC=85=98=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/web/src/constants/university.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/web/src/constants/university.ts b/apps/web/src/constants/university.ts index d5248acd..5a89afe3 100644 --- a/apps/web/src/constants/university.ts +++ b/apps/web/src/constants/university.ts @@ -7,7 +7,7 @@ import { type TestScoreInfo, } from "@/types/university"; -export const REGIONS_SEARCH = ["유럽권", "미주권", "아시아권"] as const; +export const REGIONS_SEARCH = ["유럽권", "미주권", "아시아권", "중국권"] as const; export const REGIONS_KO = ["유럽권", "미주권", "아시아권", "중국권"]; From e87a3a89685ca158753aa9f2c669d7f38833c702 Mon Sep 17 00:00:00 2001 From: manNomi Date: Sat, 21 Feb 2026 02:23:12 +0900 Subject: [PATCH 2/3] =?UTF-8?q?fix:=20=EB=8C=80=ED=95=99=20=EC=A1=B0?= =?UTF-8?q?=EA=B1=B4=20=EA=B2=80=EC=83=89=EC=97=90=EC=84=9C=20=EC=9C=A0?= =?UTF-8?q?=ED=9A=A8=ED=95=9C=20=ED=95=84=ED=84=B0=20=EC=BF=BC=EB=A6=AC?= =?UTF-8?q?=EB=A7=8C=20=EC=A0=84=EB=8B=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../[homeUniversity]/search/_ui/SearchPageContent.tsx | 3 ++- apps/web/src/app/university/search/PageContent.tsx | 7 ++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/apps/web/src/app/university/[homeUniversity]/search/_ui/SearchPageContent.tsx b/apps/web/src/app/university/[homeUniversity]/search/_ui/SearchPageContent.tsx index 80050f0a..0b533495 100644 --- a/apps/web/src/app/university/[homeUniversity]/search/_ui/SearchPageContent.tsx +++ b/apps/web/src/app/university/[homeUniversity]/search/_ui/SearchPageContent.tsx @@ -54,13 +54,14 @@ const SearchPageContent = ({ homeUniversitySlug }: SearchPageContentProps) => { // 필터 검색 const onSubmit: SubmitHandler = (data) => { const queryParams = new URLSearchParams(); + const availableCountryCodeSet = new Set(availableCountries.map(([code]) => code as CountryCode)); if (data.languageTestType) { queryParams.append("languageTestType", data.languageTestType); } [data.country1, data.country2, data.country3].forEach((code) => { - if (code) { + if (code && availableCountryCodeSet.has(code)) { queryParams.append("countryCode", code); } }); diff --git a/apps/web/src/app/university/search/PageContent.tsx b/apps/web/src/app/university/search/PageContent.tsx index b6e8966a..25dd7acf 100644 --- a/apps/web/src/app/university/search/PageContent.tsx +++ b/apps/web/src/app/university/search/PageContent.tsx @@ -48,6 +48,7 @@ const SchoolSearchForm = ({ homeUniversitySlug }: SchoolSearchFormProps) => { const onSubmit: SubmitHandler = (data) => { const queryParams = new URLSearchParams(); + const availableCountryCodeSet = new Set(availableCountries.map(([code]) => code as CountryCode)); if (data.searchText) { queryParams.append("searchText", data.searchText); @@ -57,11 +58,15 @@ const SchoolSearchForm = ({ homeUniversitySlug }: SchoolSearchFormProps) => { } [data.country1, data.country2, data.country3].forEach((code) => { - if (code) { + if (code && availableCountryCodeSet.has(code)) { queryParams.append("countryCode", code); } }); + if (data.regions && data.regions.length > 0) { + data.regions.forEach((region) => queryParams.append("region", region)); + } + const queryString = queryParams.toString(); router.push(`/university/${homeUniversitySlug}?${queryString}`); }; From 08be12ec4500b49f8e23a8a91dfb9b8d1a3593f4 Mon Sep 17 00:00:00 2001 From: manNomi Date: Sat, 21 Feb 2026 02:23:22 +0900 Subject: [PATCH 3/3] =?UTF-8?q?fix:=20=EB=8C=80=ED=95=99=20=EA=B2=80?= =?UTF-8?q?=EC=83=89=20=EA=B2=B0=EA=B3=BC=EC=9D=98=20=ED=95=84=ED=84=B0=20?= =?UTF-8?q?=EB=B6=84=EA=B8=B0=20=EC=A1=B0=EA=B1=B4=20=EB=B3=B4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/web/src/app/university/SearchResultsContent.tsx | 8 ++++++-- .../list/[homeUniversityName]/SearchResultsContent.tsx | 8 ++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/apps/web/src/app/university/SearchResultsContent.tsx b/apps/web/src/app/university/SearchResultsContent.tsx index 877c229a..81415e86 100644 --- a/apps/web/src/app/university/SearchResultsContent.tsx +++ b/apps/web/src/app/university/SearchResultsContent.tsx @@ -11,6 +11,7 @@ import { import CloudSpinnerPage from "@/components/ui/CloudSpinnerPage"; import FloatingUpBtn from "@/components/ui/FloatingUpBtn"; import UniversityCards from "@/components/university/UniversityCards"; +import { COUNTRY_CODE_MAP } from "@/constants/university"; import { type CountryCode, type LanguageTestType, RegionEnumExtend } from "@/types/university"; import RegionFilter from "./RegionFilter"; import SearchBar from "./SearchBar"; @@ -32,9 +33,12 @@ const SearchResultsContent = () => { const countries = searchParams.getAll("countryCode"); // URL에서 전달된 국가 목록을 기본으로 사용 - const filteredCountries = countries as CountryCode[]; + const filteredCountries = countries.filter((country): country is CountryCode => + Object.hasOwn(COUNTRY_CODE_MAP, country), + ); + const hasFilterParams = Boolean(lang) || filteredCountries.length > 0; - if (!lang || !countries) { + if (!hasFilterParams) { return { isTextSearch: true, searchText: text, diff --git a/apps/web/src/app/university/list/[homeUniversityName]/SearchResultsContent.tsx b/apps/web/src/app/university/list/[homeUniversityName]/SearchResultsContent.tsx index 8bba124d..537c6b66 100644 --- a/apps/web/src/app/university/list/[homeUniversityName]/SearchResultsContent.tsx +++ b/apps/web/src/app/university/list/[homeUniversityName]/SearchResultsContent.tsx @@ -11,6 +11,7 @@ import { import CloudSpinnerPage from "@/components/ui/CloudSpinnerPage"; import FloatingUpBtn from "@/components/ui/FloatingUpBtn"; import UniversityCards from "@/components/university/UniversityCards"; +import { COUNTRY_CODE_MAP } from "@/constants/university"; import { type CountryCode, type HomeUniversityName, type LanguageTestType, RegionEnumExtend } from "@/types/university"; import RegionFilter from "../../RegionFilter"; import SearchBar from "../../SearchBar"; @@ -36,9 +37,12 @@ const SearchResultsContentInner = ({ homeUniversityName }: SearchResultsContentI const countries = searchParams.getAll("countryCode"); // URL에서 전달된 국가 목록을 기본으로 사용 - const filteredCountries = countries as CountryCode[]; + const filteredCountries = countries.filter((country): country is CountryCode => + Object.hasOwn(COUNTRY_CODE_MAP, country), + ); + const hasFilterParams = Boolean(lang) || filteredCountries.length > 0; - if (!lang || !countries) { + if (!hasFilterParams) { return { isTextSearch: true, searchText: text,