문서 파일 정리

This commit is contained in:
hansoo
2025-03-21 16:08:43 +09:00
parent 86c0035561
commit 2d08a7962b
64 changed files with 8460 additions and 45 deletions

View File

@@ -3,6 +3,7 @@ import { supabase } from '@/lib/supabase';
import { Transaction } from '@/components/TransactionCard';
import { isSyncEnabled } from '../syncSettings';
import { formatDateForDisplay } from './dateUtils';
import { getDeletedTransactions } from './deletedTransactionsTracker';
/**
* Download transaction data from Supabase to local storage
@@ -30,40 +31,53 @@ export const downloadTransactions = async (userId: string): Promise<void> => {
console.log(`서버에서 ${data.length}개의 트랜잭션 다운로드`);
// 서버 데이터를 로컬 형식으로 변환
const serverTransactions = data.map(t => {
// 날짜 형식 변환 시 오류 방지 처리
let formattedDate = '날짜 없음';
try {
if (t.date) {
// ISO 형식이 아닌 경우 기본 변환 수행
if (!t.date.match(/^\d{4}-\d{2}-\d{2}T/)) {
console.log(`비표준 날짜 형식 감지: ${t.date}, ID: ${t.transaction_id || t.id}`);
// 유효한 Date 객체로 변환 가능한지 확인
const testDate = new Date(t.date);
if (isNaN(testDate.getTime())) {
console.warn(`잘못된 날짜 형식 감지, 현재 날짜 사용: ${t.date}`);
t.date = new Date().toISOString(); // 잘못된 날짜는 현재 날짜로 대체
}
}
formattedDate = formatDateForDisplay(t.date);
// 삭제된 트랜잭션 ID 목록 가져오기
const deletedIds = getDeletedTransactions();
console.log(`[동기화] 삭제된 트랜잭션 ${deletedIds.length}개 필터링 적용`);
// 서버 데이터를 로컬 형식으로 변환 (삭제된 항목 제외)
const serverTransactions = data
.filter(t => {
const transactionId = t.transaction_id || t.id;
const isDeleted = deletedIds.includes(transactionId);
if (isDeleted) {
console.log(`[동기화] 삭제된 트랜잭션 필터링: ${transactionId}`);
}
} catch (err) {
console.error(`날짜 변환 오류 (ID: ${t.transaction_id || t.id}):`, err);
// 오류 발생 시 기본값 사용
formattedDate = new Date().toLocaleString('ko-KR');
}
return {
id: t.transaction_id || t.id,
title: t.title,
amount: t.amount,
date: formattedDate,
category: t.category,
type: t.type,
notes: t.notes
};
});
return !isDeleted; // 삭제된 항목 제외
})
.map(t => {
// 날짜 형식 변환 시 오류 방지 처리
let formattedDate = '날짜 없음';
try {
if (t.date) {
// ISO 형식이 아닌 경우 기본 변환 수행
if (!t.date.match(/^\d{4}-\d{2}-\d{2}T/)) {
console.log(`비표준 날짜 형식 감지: ${t.date}, ID: ${t.transaction_id || t.id}`);
// 유효한 Date 객체로 변환 가능한지 확인
const testDate = new Date(t.date);
if (isNaN(testDate.getTime())) {
console.warn(`잘못된 날짜 형식 감지, 현재 날짜 사용: ${t.date}`);
t.date = new Date().toISOString(); // 잘못된 날짜는 현재 날짜로 대체
}
}
formattedDate = formatDateForDisplay(t.date);
}
} catch (err) {
console.error(`날짜 변환 오류 (ID: ${t.transaction_id || t.id}):`, err);
// 오류 발생 시 기본값 사용
formattedDate = new Date().toLocaleString('ko-KR');
}
return {
id: t.transaction_id || t.id,
title: t.title,
amount: t.amount,
date: formattedDate,
category: t.category,
type: t.type,
notes: t.notes
};
});
// 기존 로컬 데이터 불러오기
const localDataStr = localStorage.getItem('transactions');