diff --git a/src/components/CategoryBudgetInputs.tsx b/src/components/CategoryBudgetInputs.tsx index 7d01d85..de6f21a 100644 --- a/src/components/CategoryBudgetInputs.tsx +++ b/src/components/CategoryBudgetInputs.tsx @@ -1,3 +1,4 @@ + import React from 'react'; import { Input } from '@/components/ui/input'; import { EXPENSE_CATEGORIES, categoryIcons } from '@/constants/categoryIcons'; diff --git a/src/components/transaction/TransactionFormFields.tsx b/src/components/transaction/TransactionFormFields.tsx index 568428d..a12d939 100644 --- a/src/components/transaction/TransactionFormFields.tsx +++ b/src/components/transaction/TransactionFormFields.tsx @@ -10,7 +10,7 @@ import { categoryIcons, EXPENSE_CATEGORIES } from '@/constants/categoryIcons'; export const transactionFormSchema = z.object({ title: z.string().min(1, '제목을 입력해주세요'), amount: z.string().min(1, '금액을 입력해주세요'), - category: z.enum(['식비', '생활비', '교통비']), + category: z.enum(['음식', '쇼핑', '교통비']), }); export type TransactionFormValues = z.infer; diff --git a/src/constants/categoryIcons.tsx b/src/constants/categoryIcons.tsx index c361090..3d314c4 100644 --- a/src/constants/categoryIcons.tsx +++ b/src/constants/categoryIcons.tsx @@ -4,19 +4,19 @@ import { Coffee, Home, Car, Banknote } from 'lucide-react'; // 카테고리와 아이콘 매핑 정의 export const categoryIcons: Record = { - 식비: , - 생활비: , + 음식: , + 쇼핑: , 교통비: , 수입: , }; // 지출 카테고리 목록 - 3개로 제한 -export const EXPENSE_CATEGORIES = ['식비', '생활비', '교통비']; +export const EXPENSE_CATEGORIES = ['음식', '쇼핑', '교통비']; // 기본 카테고리 예산 설정 export const DEFAULT_CATEGORY_BUDGETS = { - 식비: 400000, - 생활비: 600000, + 음식: 400000, + 쇼핑: 600000, 교통비: 200000 }; diff --git a/src/contexts/budget/budgetUtils.ts b/src/contexts/budget/budgetUtils.ts index e40fbb3..6d8263c 100644 --- a/src/contexts/budget/budgetUtils.ts +++ b/src/contexts/budget/budgetUtils.ts @@ -4,8 +4,8 @@ import { EXPENSE_CATEGORIES } from '@/constants/categoryIcons'; // 기본 데이터 상수 (기본값을 0으로 설정) export const DEFAULT_CATEGORY_BUDGETS: Record = { - 식비: 0, - 생활비: 0, + 음식: 0, + 쇼핑: 0, 교통비: 0 }; @@ -41,8 +41,8 @@ export const calculateCategorySpending = ( // 지원되는 카테고리이지만 초기화되지 않은 경우 categorySpending[t.category] = t.amount; } else { - // 지원되지 않는 카테고리는 '생활비'로 집계 - categorySpending['생활비'] = (categorySpending['생활비'] || 0) + t.amount; + // 지원되지 않는 카테고리는 '쇼핑'으로 집계 + categorySpending['쇼핑'] = (categorySpending['쇼핑'] || 0) + t.amount; } }); diff --git a/src/contexts/budget/storage/categoryStorage.ts b/src/contexts/budget/storage/categoryStorage.ts index 33e7928..2213fd9 100644 --- a/src/contexts/budget/storage/categoryStorage.ts +++ b/src/contexts/budget/storage/categoryStorage.ts @@ -17,7 +17,14 @@ export const loadCategoryBudgetsFromStorage = (): Record => { // 3개 카테고리만 유지 const filteredBudgets: Record = {}; EXPENSE_CATEGORIES.forEach(category => { - filteredBudgets[category] = parsed[category] || 0; + // 이전 카테고리명이 있을 경우 새 카테고리명으로 값 이전 + if (category === '음식' && parsed['식비'] !== undefined) { + filteredBudgets[category] = parsed['식비']; + } else if (category === '쇼핑' && parsed['생활비'] !== undefined) { + filteredBudgets[category] = parsed['생활비']; + } else { + filteredBudgets[category] = parsed[category] || 0; + } }); return filteredBudgets; @@ -32,7 +39,14 @@ export const loadCategoryBudgetsFromStorage = (): Record => { // 3개 카테고리만 유지 const filteredBudgets: Record = {}; EXPENSE_CATEGORIES.forEach(category => { - filteredBudgets[category] = parsedBackup[category] || 0; + // 이전 카테고리명이 있을 경우 새 카테고리명으로 값 이전 + if (category === '음식' && parsedBackup['식비'] !== undefined) { + filteredBudgets[category] = parsedBackup['식비']; + } else if (category === '쇼핑' && parsedBackup['생활비'] !== undefined) { + filteredBudgets[category] = parsedBackup['생활비']; + } else { + filteredBudgets[category] = parsedBackup[category] || 0; + } }); // 메인 스토리지도 복구 diff --git a/src/hooks/transactions/storageUtils.ts b/src/hooks/transactions/storageUtils.ts index c154559..0a8e726 100644 --- a/src/hooks/transactions/storageUtils.ts +++ b/src/hooks/transactions/storageUtils.ts @@ -14,14 +14,17 @@ export const loadTransactionsFromStorage = (): Transaction[] => { try { const localData = JSON.parse(localDataStr); - // 지원되는 카테고리로 필터링 + // 지원되는 카테고리로 필터링 및 카테고리명 변환 const filteredData = localData.map((transaction: Transaction) => { - // 트랜잭션의 카테고리가 현재 지원되는 카테고리가 아니면 '생활비'로 변경 - if (transaction.type === 'expense' && !EXPENSE_CATEGORIES.includes(transaction.category)) { - return { - ...transaction, - category: '생활비' // 기본값으로 '생활비' 사용 - }; + if (transaction.type === 'expense') { + // 기존 카테고리명 변환 + if (transaction.category === '식비') { + return { ...transaction, category: '음식' }; + } else if (transaction.category === '생활비') { + return { ...transaction, category: '쇼핑' }; + } else if (!EXPENSE_CATEGORIES.includes(transaction.category)) { + return { ...transaction, category: '쇼핑' }; // 지원되지 않는 카테고리는 '쇼핑'으로 + } } return transaction; });