diff --git a/src/contexts/budget/hooks/useBudgetState.ts b/src/contexts/budget/hooks/useBudgetState.ts index a6ac4eb..41924fb 100644 --- a/src/contexts/budget/hooks/useBudgetState.ts +++ b/src/contexts/budget/hooks/useBudgetState.ts @@ -8,8 +8,11 @@ import { safelyLoadBudgetData } from '../budgetUtils'; */ export const useBudgetState = () => { // 초기 데이터 로드 시 safelyLoadBudgetData 함수 사용 - const [budgetData, setBudgetData] = useState(safelyLoadBudgetData()); - const [selectedTab, setSelectedTab] = useState("daily"); // 초기값을 daily로 변경 + const initialBudgetData = safelyLoadBudgetData(); + console.log('초기 예산 데이터 로드:', initialBudgetData); + + const [budgetData, setBudgetData] = useState(initialBudgetData); + const [selectedTab, setSelectedTab] = useState("daily"); // 초기값은 daily const [isInitialized, setIsInitialized] = useState(false); const [lastUpdateTime, setLastUpdateTime] = useState(0); diff --git a/src/contexts/budget/utils/spendingCalculation.ts b/src/contexts/budget/utils/spendingCalculation.ts index 9fde989..7f9e446 100644 --- a/src/contexts/budget/utils/spendingCalculation.ts +++ b/src/contexts/budget/utils/spendingCalculation.ts @@ -13,19 +13,26 @@ export const calculateSpentAmounts = ( // 오늘 지출 계산 const todayExpenses = expenseTransactions.filter(t => { - if (t.date.includes('오늘')) return true; + if (t.date && (t.date.includes('오늘') || t.date.includes('today'))) return true; return false; }); const dailySpent = todayExpenses.reduce((sum, t) => sum + t.amount, 0); // 이번 주 지출 계산 (단순화된 버전) const weeklyExpenses = expenseTransactions.filter(t => { - if (t.date.includes('오늘') || t.date.includes('어제') || t.date.includes('이번주')) return true; - return true; + if (t.date && ( + t.date.includes('오늘') || + t.date.includes('today') || + t.date.includes('어제') || + t.date.includes('yesterday') || + t.date.includes('이번주') || + t.date.includes('this week') + )) return true; + return false; }); const weeklySpent = weeklyExpenses.reduce((sum, t) => sum + t.amount, 0); - // 이번 달 총 지출 계산 + // 이번 달 총 지출 계산 (모든 지출 트랜잭션) const monthlySpent = expenseTransactions.reduce((sum, t) => sum + t.amount, 0); // 기존 예산 목표 유지 (없으면 기본값 0) @@ -33,6 +40,12 @@ export const calculateSpentAmounts = ( const weeklyTarget = prevBudgetData?.weekly?.targetAmount || 0; const monthlyTarget = prevBudgetData?.monthly?.targetAmount || 0; + console.log("예산 목표 확인:", { + 일일: dailyTarget, + 주간: weeklyTarget, + 월간: monthlyTarget + }); + // 예산 데이터 업데이트 const updatedBudget = { daily: { diff --git a/src/hooks/transactions/useTransactionsLoader.ts b/src/hooks/transactions/useTransactionsLoader.ts index 585a1f5..340d444 100644 --- a/src/hooks/transactions/useTransactionsLoader.ts +++ b/src/hooks/transactions/useTransactionsLoader.ts @@ -2,8 +2,7 @@ import { useCallback } from 'react'; import { toast } from '@/hooks/useToast.wrapper'; import { - loadTransactionsFromStorage, - loadBudgetFromStorage + loadTransactionsFromStorage } from './storageUtils'; /** @@ -25,11 +24,28 @@ export const useTransactionsLoader = ( const localTransactions = loadTransactionsFromStorage(); setTransactions(localTransactions); - // 예산 가져오기 (월간 예산만 설정) - const budgetAmount = loadBudgetFromStorage(); - setTotalBudget(budgetAmount); - - console.log('로드된 예산 금액:', budgetAmount); + // 예산 데이터에서 직접 월간 예산 값을 가져옴 + try { + const budgetDataStr = localStorage.getItem('budgetData'); + if (budgetDataStr) { + const budgetData = JSON.parse(budgetDataStr); + // 월간 예산 값만 사용 + if (budgetData && budgetData.monthly && typeof budgetData.monthly.targetAmount === 'number') { + const monthlyBudget = budgetData.monthly.targetAmount; + setTotalBudget(monthlyBudget); + console.log('월간 예산 설정:', monthlyBudget); + } else { + console.log('유효한 월간 예산 데이터가 없습니다. 기본값 0 사용'); + setTotalBudget(0); + } + } else { + console.log('예산 데이터가 없습니다. 기본값 0 사용'); + setTotalBudget(0); + } + } catch (budgetErr) { + console.error('예산 데이터 파싱 오류:', budgetErr); + setTotalBudget(0); + } } catch (err) { console.error('트랜잭션 로드 중 오류:', err); setError('데이터를 불러오는 중 문제가 발생했습니다.');