From 2ba8fdc31beb14ca9e8f8a3c98c5767a4327b9d6 Mon Sep 17 00:00:00 2001 From: "gpt-engineer-app[bot]" <159125892+gpt-engineer-app[bot]@users.noreply.github.com> Date: Sat, 15 Mar 2025 22:59:37 +0000 Subject: [PATCH] Clear persistent data Clear data that persists and is displayed in monthly graphs for analysis. --- src/contexts/budget/storageUtils.ts | 28 +++++++++++++-- src/pages/Index.tsx | 4 ++- src/utils/storageUtils.ts | 54 ++++++++++------------------- 3 files changed, 47 insertions(+), 39 deletions(-) diff --git a/src/contexts/budget/storageUtils.ts b/src/contexts/budget/storageUtils.ts index 92f1f56..753ebaa 100644 --- a/src/contexts/budget/storageUtils.ts +++ b/src/contexts/budget/storageUtils.ts @@ -92,13 +92,19 @@ export const clearAllBudgetData = (): void => { // 모든 데이터 초기화 (첫 로그인 상태) export const resetAllData = (): void => { - // 모든 관련 데이터 키 목록 + // 모든 관련 데이터 키 목록 (분석 페이지의 데이터 포함) const dataKeys = [ 'transactions', 'categoryBudgets', 'budgetData', 'budget', - 'hasVisitedBefore' + 'hasVisitedBefore', + 'monthlyExpenses', // 월간 지출 데이터 + 'categorySpending', // 카테고리별 지출 데이터 + 'expenseAnalytics', // 지출 분석 데이터 + 'expenseHistory', // 지출 이력 + 'budgetHistory', // 예산 이력 + 'analyticsCache' // 분석 캐시 데이터 ]; // 모든 관련 데이터 키 삭제 @@ -108,5 +114,23 @@ export const resetAllData = (): void => { clearAllTransactions(); clearAllCategoryBudgets(); clearAllBudgetData(); + + // 추가적으로 사용자 기기에 저장된 모든 데이터 검사 + for (let i = 0; i < localStorage.length; i++) { + const key = localStorage.key(i); + if (key && ( + key.includes('expense') || + key.includes('budget') || + key.includes('transaction') || + key.includes('analytics') || + key.includes('spending') || + key.includes('financial') + )) { + console.log(`추가 데이터 삭제: ${key}`); + localStorage.removeItem(key); + } + } + + console.log('모든 데이터가 초기화되었습니다.'); }; diff --git a/src/pages/Index.tsx b/src/pages/Index.tsx index 776d8d5..e904d3a 100644 --- a/src/pages/Index.tsx +++ b/src/pages/Index.tsx @@ -11,6 +11,7 @@ import { formatCurrency, calculatePercentage } from '@/utils/formatters'; import { useBudget } from '@/contexts/BudgetContext'; import { useAuth } from '@/contexts/auth'; import { resetAllData } from '@/contexts/budget/storageUtils'; +import { resetAllStorageData } from '@/utils/storageUtils'; // 메인 컴포넌트 const Index = () => { @@ -29,8 +30,9 @@ const Index = () => { // 화면이 처음 로드될 때 데이터 초기화 useEffect(() => { - // 데이터를 완전히 초기화 + // 데이터를 완전히 초기화 (두 가지 초기화 함수 모두 호출) resetAllData(); + resetAllStorageData(); // 환영 다이얼로그 표시 여부 결정 const dontShowWelcome = localStorage.getItem('dontShowWelcome') === 'true'; diff --git a/src/utils/storageUtils.ts b/src/utils/storageUtils.ts index 5458484..695acda 100644 --- a/src/utils/storageUtils.ts +++ b/src/utils/storageUtils.ts @@ -12,42 +12,8 @@ export const loadTransactionsFromStorage = (): Transaction[] => { // 기본 샘플 데이터 생성 export const createSampleTransactions = (selectedMonth: string): Transaction[] => { - return [{ - id: '1', - title: '식료품 구매', - amount: 25000, - date: `${selectedMonth} 25일, 12:30 PM`, - category: '식비', - type: 'expense' - }, { - id: '2', - title: '주유소', - amount: 50000, - date: `${selectedMonth} 24일, 3:45 PM`, - category: '교통비', - type: 'expense' - }, { - id: '4', - title: '생필품 구매', - amount: 35000, - date: `${selectedMonth} 18일, 6:00 AM`, - category: '생활비', - type: 'expense' - }, { - id: '5', - title: '월세', - amount: 650000, - date: `${selectedMonth} 15일, 10:00 AM`, - category: '생활비', - type: 'expense' - }, { - id: '6', - title: '식당', - amount: 15500, - date: `${selectedMonth} 12일, 2:15 PM`, - category: '식비', - type: 'expense' - }]; + // 샘플 데이터는 생성하지 않고 빈 배열 반환 (초기 상태에서는 데이터가 없어야 함) + return []; }; // 트랜잭션 데이터 저장하기 @@ -64,3 +30,19 @@ export const loadBudgetFromStorage = (): number => { } return 1000000; // 기본 예산 }; + +// 모든 데이터 완전히 초기화 +export const resetAllStorageData = (): void => { + // 트랜잭션 초기화 + localStorage.removeItem('transactions'); + localStorage.setItem('transactions', JSON.stringify([])); + + // 월별 지출 데이터 초기화 + localStorage.removeItem('monthlyExpenses'); + + // 예산 초기화 + localStorage.removeItem('budget'); + + console.log('모든 저장소 데이터가 초기화되었습니다.'); +}; +