diff --git a/src/contexts/budget/budgetUtils.ts b/src/contexts/budget/budgetUtils.ts index 73825b1..3270f30 100644 --- a/src/contexts/budget/budgetUtils.ts +++ b/src/contexts/budget/budgetUtils.ts @@ -62,7 +62,7 @@ export const calculateUpdatedBudgetData = ( console.log(`예산 업데이트 계산: 타입=${type}, 금액=${amount}`); if (type === 'monthly') { - // 월간 예산을 기준으로 일일, 주간 예산 계산 (30일, 4.3주 기준) + // 문제 수정: 일일 예산은 월간/30, 주간 예산은 월간/4.3으로 계산 const dailyAmount = Math.round(amount / 30); const weeklyAmount = Math.round(amount / 4.3); @@ -80,13 +80,13 @@ export const calculateUpdatedBudgetData = ( remainingAmount: Math.max(0, weeklyAmount - prevBudgetData.weekly.spentAmount) }, monthly: { - targetAmount: amount, // 원래 입력한 금액 그대로 사용 + targetAmount: amount, spentAmount: prevBudgetData.monthly.spentAmount, remainingAmount: Math.max(0, amount - prevBudgetData.monthly.spentAmount) } }; } else if (type === 'weekly') { - // 주간 예산이 설정되면 월간 예산은 주간 * 4.3, 일일 예산은 주간 / 7 + // 문제 수정: 월간 예산은 주간*4.3, 일일 예산은 주간/7로 계산 const monthlyAmount = Math.round(amount * 4.3); const dailyAmount = Math.round(amount / 7); @@ -99,7 +99,7 @@ export const calculateUpdatedBudgetData = ( remainingAmount: Math.max(0, dailyAmount - prevBudgetData.daily.spentAmount) }, weekly: { - targetAmount: amount, // 원래 입력한 금액 그대로 사용 + targetAmount: amount, spentAmount: prevBudgetData.weekly.spentAmount, remainingAmount: Math.max(0, amount - prevBudgetData.weekly.spentAmount) }, @@ -110,7 +110,7 @@ export const calculateUpdatedBudgetData = ( } }; } else { - // 일일 예산이 설정되면 주간 예산은 일일 * 7, 월간 예산은 일일 * 30 + // 문제 수정: 주간 예산은 일일*7, 월간 예산은 일일*30으로 계산 const weeklyAmount = Math.round(amount * 7); const monthlyAmount = Math.round(amount * 30); @@ -118,7 +118,7 @@ export const calculateUpdatedBudgetData = ( return { daily: { - targetAmount: amount, // 원래 입력한 금액 그대로 사용 + targetAmount: amount, spentAmount: prevBudgetData.daily.spentAmount, remainingAmount: Math.max(0, amount - prevBudgetData.daily.spentAmount) }, diff --git a/src/hooks/transactions/useTransactionsLoader.ts b/src/hooks/transactions/useTransactionsLoader.ts index ef2780d..585a1f5 100644 --- a/src/hooks/transactions/useTransactionsLoader.ts +++ b/src/hooks/transactions/useTransactionsLoader.ts @@ -25,9 +25,11 @@ export const useTransactionsLoader = ( const localTransactions = loadTransactionsFromStorage(); setTransactions(localTransactions); - // 예산 가져오기 + // 예산 가져오기 (월간 예산만 설정) const budgetAmount = loadBudgetFromStorage(); setTotalBudget(budgetAmount); + + console.log('로드된 예산 금액:', budgetAmount); } catch (err) { console.error('트랜잭션 로드 중 오류:', err); setError('데이터를 불러오는 중 문제가 발생했습니다.'); diff --git a/src/utils/sync/budget/downloadBudget.ts b/src/utils/sync/budget/downloadBudget.ts index 2a7be49..117106f 100644 --- a/src/utils/sync/budget/downloadBudget.ts +++ b/src/utils/sync/budget/downloadBudget.ts @@ -124,11 +124,10 @@ async function processBudgetData(budgetData: any, localBudgetDataStr: string | n }; // 서버 데이터로 업데이트 (지출 금액은 유지) - // 여기서 문제 발생: total_budget이 30과 4.3으로 나눠져서 너무 큰 값이 됨 - // 올바른 계산법으로 수정 + // 수정: 올바른 예산 계산 방식으로 변경 const monthlyBudget = budgetData.total_budget; - const dailyBudget = Math.round(monthlyBudget / 30); - const weeklyBudget = Math.round(monthlyBudget / 4.3); + const dailyBudget = Math.round(monthlyBudget / 30); // 월간 예산 / 30일 + const weeklyBudget = Math.round(monthlyBudget / 4.3); // 월간 예산 / 4.3주 const updatedBudgetData = { daily: {