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