From 5b55bfd976f8a010b7b4c6f32503993c52adf67e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=A1=B0=EB=AF=BC=EC=A3=BC?= Date: Sat, 30 Aug 2025 14:30:52 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20levelId=20->=20levelName=20=EA=B8=B0?= =?UTF-8?q?=EC=A4=80=EC=9C=BC=EB=A1=9C=20=EB=A7=A4=ED=95=91=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/entities/user/ui/my-profile-card.tsx | 4 +-- src/entities/user/ui/user-profile-modal.tsx | 6 ++-- src/features/my-page/ui/profile.tsx | 4 +-- src/shared/config/sincerity-temp-presets.tsx | 34 +++++++++----------- 4 files changed, 23 insertions(+), 25 deletions(-) diff --git a/src/entities/user/ui/my-profile-card.tsx b/src/entities/user/ui/my-profile-card.tsx index 13dfe550..cd2eac19 100644 --- a/src/entities/user/ui/my-profile-card.tsx +++ b/src/entities/user/ui/my-profile-card.tsx @@ -5,7 +5,7 @@ import React, { useState } from 'react'; import { usePatchAutoMatchingMutation } from '@/entities/user/model/use-user-profile-query'; import { useReviewReminder } from '@/features/study/lib/use-reminder-review'; import StudyReviewModal from '@/features/study/ui/study-review-modal'; -import { getSincerityPresetByLevelId } from '@/shared/config/sincerity-temp-presets'; +import { getSincerityPresetByLevelName } from '@/shared/config/sincerity-temp-presets'; import { cn } from '@/shared/shadcn/lib/utils'; import UserAvatar from '@/shared/ui/avatar'; import { ToggleSwitch } from '@/shared/ui/toggle'; @@ -41,7 +41,7 @@ export default function MyProfileCard({ const { showReviewReminder, setShowReviewReminder } = useReviewReminder(); const [enabled, setEnabled] = useState(matching); - const temperPreset = getSincerityPresetByLevelId(sincerityTemp.levelId); + const temperPreset = getSincerityPresetByLevelName(sincerityTemp.levelName); const { mutate: patchAutoMatching, isPending } = usePatchAutoMatchingMutation(); diff --git a/src/entities/user/ui/user-profile-modal.tsx b/src/entities/user/ui/user-profile-modal.tsx index 7bbc47d7..a9ab7436 100644 --- a/src/entities/user/ui/user-profile-modal.tsx +++ b/src/entities/user/ui/user-profile-modal.tsx @@ -9,7 +9,7 @@ import GithubIcon from '@/features/my-page/ui/icon/github-logo.svg'; import GlobeIcon from '@/features/my-page/ui/icon/globe-simple.svg'; import PhoneIcon from '@/features/my-page/ui/icon/phone.svg'; import { useUserPositiveKeywordsQuery } from '@/features/study/model/use-review-query'; -import { getSincerityPresetByLevelId } from '@/shared/config/sincerity-temp-presets'; +import { getSincerityPresetByLevelName } from '@/shared/config/sincerity-temp-presets'; import UserAvatar from '@/shared/ui/avatar'; import Badge from '@/shared/ui/badge'; import { Modal } from '@/shared/ui/modal'; @@ -31,8 +31,8 @@ export default function UserProfileModal({ if (isLoading || isError || !profile || !positiveKeywordsData) return null; const positiveKeywords = positiveKeywordsData?.keywords || []; - const temperPreset = getSincerityPresetByLevelId( - profile.sincerityTemp.levelId, + const temperPreset = getSincerityPresetByLevelName( + profile.sincerityTemp.levelName, ); return ( diff --git a/src/features/my-page/ui/profile.tsx b/src/features/my-page/ui/profile.tsx index 8b5eedc1..f1db1e9e 100644 --- a/src/features/my-page/ui/profile.tsx +++ b/src/features/my-page/ui/profile.tsx @@ -5,7 +5,7 @@ import GithubIcon from '@/features/my-page/ui/icon/github-logo.svg'; import GlobeIcon from '@/features/my-page/ui/icon/globe-simple.svg'; import PhoneIcon from '@/features/my-page/ui/icon/phone.svg'; import ProfileEditModal from '@/features/my-page/ui/profile-edit-modal'; -import { getSincerityPresetByLevelId } from '@/shared/config/sincerity-temp-presets'; +import { getSincerityPresetByLevelName } from '@/shared/config/sincerity-temp-presets'; import { cn } from '@/shared/shadcn/lib/utils'; import UserAvatar from '@/shared/ui/avatar'; import Badge from '@/shared/ui/badge'; @@ -22,7 +22,7 @@ export default function Profile({ memberProfile, sincerityTemp, }: ProfileProps) { - const temperPreset = getSincerityPresetByLevelId(sincerityTemp.levelId); + const temperPreset = getSincerityPresetByLevelName(sincerityTemp.levelName); return (
diff --git a/src/shared/config/sincerity-temp-presets.tsx b/src/shared/config/sincerity-temp-presets.tsx index e78c10d2..a915d0c3 100644 --- a/src/shared/config/sincerity-temp-presets.tsx +++ b/src/shared/config/sincerity-temp-presets.tsx @@ -3,7 +3,7 @@ import TempType2 from '@/shared/icons/temp_2.svg'; import TempType3 from '@/shared/icons/temp_3.svg'; import TempType4 from '@/shared/icons/temp_4.svg'; -export type SincerityType = 'type1' | 'type2' | 'type3' | 'type4'; +export type SincerityLabel = '1단계' | '2단계' | '3단계' | '4단계'; export interface SincerityPreset { indicatorClass: string; @@ -13,8 +13,8 @@ export interface SincerityPreset { label?: string; } -export const SINCERITY_TEMP_PRESETS: Record = { - type1: { +export const SINCERITY_TEMP_PRESETS: Record = { + '1단계': { // todo: Figma에 헥스코드로만 존재. 디자인 시스템 X. 현재 코드에서는 헥스값 인식을 하지 못하기 때문에 임의 컬러로 설정 // 현재 기획 여쭤본 상태, 컬러값에 따라 global에 추가후 변경 가능성 O. // indicatorClass: '#F5C400', @@ -25,21 +25,21 @@ export const SINCERITY_TEMP_PRESETS: Record = { Icon: TempType1, label: '노란불씨', }, - type2: { + '2단계': { indicatorClass: 'bg-orange-400', textClass: 'text-orange-400', bgClass: 'bg-orange-50', Icon: TempType2, label: '주황불꽃', }, - type3: { + '3단계': { indicatorClass: 'bg-rose-500', textClass: 'text-rose-500', bgClass: 'bg-rose-50', Icon: TempType3, label: '불꽃', }, - type4: { + '4단계': { indicatorClass: 'bg-indigo-500', textClass: 'text-indigo-500', bgClass: 'bg-indigo-50', @@ -48,18 +48,16 @@ export const SINCERITY_TEMP_PRESETS: Record = { }, } as const; -const LEVEL_ID_TO_TYPE: Record = { - 5: 'type1', // 1단계 - 6: 'type2', // 2단계 - 7: 'type3', // 3단계 - 8: 'type4', // 4단계 -}; +export function toLevelLabel(levelName?: string): SincerityLabel { + const n = Number((levelName ?? '').match(/\d+/)?.[0] ?? 1); + const clamped = Math.min(4, Math.max(1, n || 1)); -// 매핑 안되는 값이 들어왔을 경우 FALLBACK -const FALLBACK_TYPE: SincerityType = 'type1'; - -export function getSincerityPresetByLevelId(levelId: number): SincerityPreset { - const type = LEVEL_ID_TO_TYPE[levelId] ?? FALLBACK_TYPE; + return `${clamped}단계` as SincerityLabel; +} - return SINCERITY_TEMP_PRESETS[type]; +// 매핑 안되는 값이 들어왔을 경우 FALLBACK +export function getSincerityPresetByLevelName( + levelName?: string, +): SincerityPreset { + return SINCERITY_TEMP_PRESETS[toLevelLabel(levelName)]; }