Fix data initialization issues
Addresses problems with budget display and data reset: - Ensures budget data is correctly displayed after initialization. - Fixes issue where daily and weekly budget data were missing. - Corrects data reset to properly clear transaction data.
This commit is contained in:
@@ -33,8 +33,8 @@ const BudgetTabContent: React.FC<BudgetTabContentProps> = ({
|
||||
const actualPercentage = targetAmount > 0 ? Math.round(spentAmount / targetAmount * 100) : 0;
|
||||
const percentage = actualPercentage;
|
||||
|
||||
// 예산이 설정되었는지 여부 확인 (0이면 미설정으로 간주)
|
||||
const isBudgetSet = targetAmount > 0;
|
||||
// 예산이 설정되었는지 여부 확인 (정확히 0이면 미설정으로 간주)
|
||||
const isBudgetSet = targetAmount !== 0;
|
||||
|
||||
// 예산 초과 여부 계산
|
||||
const isOverBudget = spentAmount > targetAmount && targetAmount > 0;
|
||||
|
||||
@@ -111,7 +111,7 @@ export const calculateUpdatedBudgetData = (
|
||||
};
|
||||
};
|
||||
|
||||
// 지출액 계산 (일일, 주간, 월간)
|
||||
// 지출액 계산 (일일, 주간, 월간) - 문제 수정
|
||||
export const calculateSpentAmounts = (
|
||||
transactions: Transaction[],
|
||||
prevBudgetData: BudgetData
|
||||
@@ -136,22 +136,27 @@ export const calculateSpentAmounts = (
|
||||
// 이번 달 총 지출 계산
|
||||
const monthlySpent = expenseTransactions.reduce((sum, t) => sum + t.amount, 0);
|
||||
|
||||
// 기존 예산 목표 유지
|
||||
const dailyTarget = prevBudgetData.daily.targetAmount;
|
||||
const weeklyTarget = prevBudgetData.weekly.targetAmount;
|
||||
const monthlyTarget = prevBudgetData.monthly.targetAmount;
|
||||
|
||||
// 예산 데이터 업데이트
|
||||
return {
|
||||
daily: {
|
||||
targetAmount: prevBudgetData.daily.targetAmount,
|
||||
targetAmount: dailyTarget,
|
||||
spentAmount: dailySpent,
|
||||
remainingAmount: Math.max(0, prevBudgetData.daily.targetAmount - dailySpent)
|
||||
remainingAmount: Math.max(0, dailyTarget - dailySpent)
|
||||
},
|
||||
weekly: {
|
||||
targetAmount: prevBudgetData.weekly.targetAmount,
|
||||
targetAmount: weeklyTarget,
|
||||
spentAmount: weeklySpent,
|
||||
remainingAmount: Math.max(0, prevBudgetData.weekly.targetAmount - weeklySpent)
|
||||
remainingAmount: Math.max(0, weeklyTarget - weeklySpent)
|
||||
},
|
||||
monthly: {
|
||||
targetAmount: prevBudgetData.monthly.targetAmount,
|
||||
targetAmount: monthlyTarget,
|
||||
spentAmount: monthlySpent,
|
||||
remainingAmount: Math.max(0, prevBudgetData.monthly.targetAmount - monthlySpent)
|
||||
remainingAmount: Math.max(0, monthlyTarget - monthlySpent)
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
@@ -28,6 +28,18 @@ export const useExtendedBudgetUpdate = (
|
||||
delete newCategoryBudgets['교통비'];
|
||||
}
|
||||
|
||||
// 식비 값이 있으면 음식으로 통합
|
||||
if (newCategoryBudgets['식비'] && !newCategoryBudgets['음식']) {
|
||||
newCategoryBudgets['음식'] = newCategoryBudgets['식비'];
|
||||
delete newCategoryBudgets['식비'];
|
||||
}
|
||||
|
||||
// 생활비 값이 있으면 쇼핑으로 통합
|
||||
if (newCategoryBudgets['생활비'] && !newCategoryBudgets['쇼핑']) {
|
||||
newCategoryBudgets['쇼핑'] = newCategoryBudgets['생활비'];
|
||||
delete newCategoryBudgets['생활비'];
|
||||
}
|
||||
|
||||
// 카테고리 예산 저장
|
||||
updateCategoryBudgets(newCategoryBudgets);
|
||||
|
||||
|
||||
@@ -22,6 +22,8 @@ export const loadCategoryBudgetsFromStorage = (): Record<string, number> => {
|
||||
filteredBudgets[category] = parsed['식비'];
|
||||
} else if (category === '교통' && parsed['교통비'] !== undefined) {
|
||||
filteredBudgets[category] = parsed['교통비'];
|
||||
} else if (category === '쇼핑' && parsed['생활비'] !== undefined) {
|
||||
filteredBudgets[category] = parsed['생활비'];
|
||||
} else {
|
||||
filteredBudgets[category] = parsed[category] || 0;
|
||||
}
|
||||
@@ -44,6 +46,8 @@ export const loadCategoryBudgetsFromStorage = (): Record<string, number> => {
|
||||
filteredBudgets[category] = parsedBackup['식비'];
|
||||
} else if (category === '교통' && parsedBackup['교통비'] !== undefined) {
|
||||
filteredBudgets[category] = parsedBackup['교통비'];
|
||||
} else if (category === '쇼핑' && parsedBackup['생활비'] !== undefined) {
|
||||
filteredBudgets[category] = parsedBackup['생활비'];
|
||||
} else {
|
||||
filteredBudgets[category] = parsedBackup[category] || 0;
|
||||
}
|
||||
@@ -89,6 +93,10 @@ export const saveCategoryBudgetsToStorage = (categoryBudgets: Record<string, num
|
||||
// 교통비 -> 교통으로 표준화
|
||||
if (category === '교통') {
|
||||
filteredBudgets[category] = categoryBudgets[category] || categoryBudgets['교통비'] || 0;
|
||||
} else if (category === '음식') {
|
||||
filteredBudgets[category] = categoryBudgets[category] || categoryBudgets['식비'] || 0;
|
||||
} else if (category === '쇼핑') {
|
||||
filteredBudgets[category] = categoryBudgets[category] || categoryBudgets['생활비'] || 0;
|
||||
} else {
|
||||
filteredBudgets[category] = categoryBudgets[category] || 0;
|
||||
}
|
||||
|
||||
@@ -20,8 +20,11 @@ export const resetAllData = (): void => {
|
||||
// 모든 관련 데이터 키 목록 (분석 페이지의 데이터 포함)
|
||||
const dataKeys = [
|
||||
'transactions',
|
||||
'transactions_backup',
|
||||
'categoryBudgets',
|
||||
'categoryBudgets_backup',
|
||||
'budgetData',
|
||||
'budgetData_backup',
|
||||
'budget',
|
||||
'monthlyExpenses',
|
||||
'categorySpending',
|
||||
@@ -42,7 +45,6 @@ export const resetAllData = (): void => {
|
||||
dataKeys.forEach(key => {
|
||||
console.log(`삭제 중: ${key}`);
|
||||
localStorage.removeItem(key);
|
||||
localStorage.removeItem(`${key}_backup`); // 백업 키도 함께 삭제
|
||||
});
|
||||
|
||||
// 파일별 초기화 함수 호출
|
||||
|
||||
Reference in New Issue
Block a user