Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions apps/university-web/src/apis/universities/api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ export interface RecommendedUniversitiesResponseRecommendedUniversitiesItem {
country: string;
logoImageUrl: string;
backgroundImageUrl: string;
studentCapacity: number;
studentCapacity: number | null;
languageRequirements: RecommendedUniversitiesResponseRecommendedUniversitiesItemLanguageRequirementsItem[];
}

Expand All @@ -52,7 +52,7 @@ export interface WishListResponseItem {
country: string;
logoImageUrl: string;
backgroundImageUrl: string;
studentCapacity: number;
studentCapacity: number | null;
languageRequirements: WishListResponseItemLanguageRequirementsItem[];
}

Expand Down Expand Up @@ -91,7 +91,7 @@ export interface UniversityDetailResponse {
logoImageUrl: string;
backgroundImageUrl: string;
detailsForLocal: string;
studentCapacity: number;
studentCapacity: number | null;
tuitionFeeType: string;
semesterAvailableForDispatch: string;
languageRequirements: UniversityDetailResponseLanguageRequirementsItem[];
Expand All @@ -116,7 +116,7 @@ export interface SearchTextResponseUnivApplyInfoPreviewsItem {
country: string;
logoImageUrl: string;
backgroundImageUrl: string;
studentCapacity: number;
studentCapacity: number | null;
languageRequirements: SearchTextResponseUnivApplyInfoPreviewsItemLanguageRequirementsItem[];
homeUniversityName?: HomeUniversityName;
}
Expand All @@ -138,7 +138,7 @@ export interface SearchFilterResponseUnivApplyInfoPreviewsItem {
country: string;
logoImageUrl: string;
backgroundImageUrl: string;
studentCapacity: number;
studentCapacity: number | null;
languageRequirements: SearchFilterResponseUnivApplyInfoPreviewsItemLanguageRequirementsItem[];
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@ interface UniversityDetailProps {
}

const UniversityDetail = ({ university, koreanName }: UniversityDetailProps) => {
const capacityLabel =
university.studentCapacity === null || university.studentCapacity === undefined
? "모집 인원 미정"
: `모집 ${university.studentCapacity}명`;

return (
<div className="relative">
<div className="absolute top-4 flex w-full justify-between gap-3 px-5">
Expand All @@ -39,7 +44,7 @@ const UniversityDetail = ({ university, koreanName }: UniversityDetailProps) =>
<div className="mb-7 mt-10 flex justify-center divide-x">
<span className="px-[30px] text-k-900 typo-sb-9">{}0회 파견</span>
<span className="px-[30px] text-k-900 typo-sb-9">{university.country}</span>
<span className="px-[30px] text-k-900 typo-sb-9">모집 {university.studentCapacity}명</span>
<span className="px-[30px] text-k-900 typo-sb-9">{capacityLabel}</span>
</div>
<LanguageSection
detailsForLanguage={university.detailsForLanguage}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,11 @@ export async function generateMetadata({ params }: PageProps): Promise<Metadata>
const imageUrl = resolveMetadataImageUrl(universityData.backgroundImageUrl);

const countryExchangeKeyword = `${universityData.country} 교환학생`;
const description = `${convertedKoreanName}(${universityData.englishName}) ${countryExchangeKeyword} 프로그램. 모집인원 ${universityData.studentCapacity}명. ${homeUniversityInfo?.shortName || ""} 학생을 위한 교환학생 정보.`;
const capacityDescription =
universityData.studentCapacity === null || universityData.studentCapacity === undefined
? "모집인원 미정"
: `모집인원 ${universityData.studentCapacity}명`;
const description = `${convertedKoreanName}(${universityData.englishName}) ${countryExchangeKeyword} 프로그램. ${capacityDescription}. ${homeUniversityInfo?.shortName || ""} 학생을 위한 교환학생 정보.`;
const title = `${convertedKoreanName} - ${countryExchangeKeyword} 정보 | 솔리드커넥션`;

return {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@ type UniversityCardProps = {

const UniversityCard = ({ university, showCapacity = true, linkPrefix = "/university" }: UniversityCardProps) => {
const convertedKoreanName = university.koreanName;
const capacityLabel =
university.studentCapacity === null || university.studentCapacity === undefined
? "모집 인원 미정"
: `모집 ${university.studentCapacity}명`;

const mappedHomeUniversitySlug = getHomeUniversitySlugByName(university.homeUniversityName);
const hasExplicitPrefix = linkPrefix !== "/university";
Expand Down Expand Up @@ -51,7 +55,7 @@ const UniversityCard = ({ university, showCapacity = true, linkPrefix = "/univer
<span className="text-k-500 typo-medium-4">
{university.country} | {university.region}
</span>
{showCapacity && <span className="text-primary typo-sb-11">모집 {university.studentCapacity}명</span>}
{showCapacity && <span className="text-primary typo-sb-11">{capacityLabel}</span>}
</div>
<div className="flex gap-4">
{university.languageRequirements.slice(0, 3).map((requirement) => {
Expand Down
4 changes: 2 additions & 2 deletions apps/university-web/src/types/university.ts
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ export interface University {
backgroundImageUrl: string;
detailsForLocal: string; // 지역 정보

studentCapacity: number;
studentCapacity: number | null;
tuitionFeeType: string; // 등록금 납부 유형
semesterAvailableForDispatch: string; // 파견 가능 학기

Expand Down Expand Up @@ -85,7 +85,7 @@ export interface ListUniversity {
country: string;
logoImageUrl: string;
backgroundImageUrl: string;
studentCapacity: number;
studentCapacity: number | null;
languageRequirements: LanguageRequirement[];
}

Expand Down
10 changes: 5 additions & 5 deletions apps/web/src/apis/universities/api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ export interface RecommendedUniversitiesResponseRecommendedUniversitiesItem {
country: string;
logoImageUrl: string;
backgroundImageUrl: string;
studentCapacity: number;
studentCapacity: number | null;
languageRequirements: RecommendedUniversitiesResponseRecommendedUniversitiesItemLanguageRequirementsItem[];
}

Expand All @@ -52,7 +52,7 @@ export interface WishListResponseItem {
country: string;
logoImageUrl: string;
backgroundImageUrl: string;
studentCapacity: number;
studentCapacity: number | null;
languageRequirements: WishListResponseItemLanguageRequirementsItem[];
}

Expand Down Expand Up @@ -91,7 +91,7 @@ export interface UniversityDetailResponse {
logoImageUrl: string;
backgroundImageUrl: string;
detailsForLocal: string;
studentCapacity: number;
studentCapacity: number | null;
tuitionFeeType: string;
semesterAvailableForDispatch: string;
languageRequirements: UniversityDetailResponseLanguageRequirementsItem[];
Expand All @@ -116,7 +116,7 @@ export interface SearchTextResponseUnivApplyInfoPreviewsItem {
country: string;
logoImageUrl: string;
backgroundImageUrl: string;
studentCapacity: number;
studentCapacity: number | null;
languageRequirements: SearchTextResponseUnivApplyInfoPreviewsItemLanguageRequirementsItem[];
homeUniversityName?: HomeUniversityName;
}
Expand All @@ -138,7 +138,7 @@ export interface SearchFilterResponseUnivApplyInfoPreviewsItem {
country: string;
logoImageUrl: string;
backgroundImageUrl: string;
studentCapacity: number;
studentCapacity: number | null;
languageRequirements: SearchFilterResponseUnivApplyInfoPreviewsItemLanguageRequirementsItem[];
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,9 @@ const useSortedUniversities = (): UseSortedUniversitiesReturn => {
switch (sequence) {
// '모집인원 순'일 경우 studentCapacity를 기준으로 내림차순 정렬
case filterType.NUMBER_OF_RECRUIT:
return newWishUniversity.sort((a: University, b: University) => b.studentCapacity - a.studentCapacity);
return newWishUniversity.sort(
(a: University, b: University) => (b.studentCapacity ?? -1) - (a.studentCapacity ?? -1),
);
default:
return wishUniversity; // 원본 순서(최신순) 그대로 반환
}
Expand Down
6 changes: 5 additions & 1 deletion apps/web/src/components/ui/UniverSityCard/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@ type UniversityCardProps = {

const UniversityCard = ({ university, showCapacity = true, linkPrefix = "/university" }: UniversityCardProps) => {
const convertedKoreanName = university.koreanName;
const capacityLabel =
university.studentCapacity === null || university.studentCapacity === undefined
? "모집 인원 미정"
: `모집 ${university.studentCapacity}명`;

const mappedHomeUniversitySlug = getHomeUniversitySlugByName(university.homeUniversityName);
const hasExplicitPrefix = linkPrefix !== "/university";
Expand Down Expand Up @@ -55,7 +59,7 @@ const UniversityCard = ({ university, showCapacity = true, linkPrefix = "/univer
<span className="text-k-500 typo-medium-4">
{university.country} | {university.region}
</span>
{showCapacity && <span className="text-primary typo-sb-11">모집 {university.studentCapacity}명</span>}
{showCapacity && <span className="text-primary typo-sb-11">{capacityLabel}</span>}
</div>
<div className="flex gap-4">
{university.languageRequirements.slice(0, 3).map((requirement) => {
Expand Down
4 changes: 2 additions & 2 deletions apps/web/src/types/university.ts
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ export interface University {
backgroundImageUrl: string;
detailsForLocal: string; // 지역 정보

studentCapacity: number;
studentCapacity: number | null;
tuitionFeeType: string; // 등록금 납부 유형
semesterAvailableForDispatch: string; // 파견 가능 학기

Expand Down Expand Up @@ -85,7 +85,7 @@ export interface ListUniversity {
country: string;
logoImageUrl: string;
backgroundImageUrl: string;
studentCapacity: number;
studentCapacity: number | null;
languageRequirements: LanguageRequirement[];
}

Expand Down
Loading