import { syncService } from "@/lib/vendor-document-list/sync-service" import { NextRequest, NextResponse } from "next/server" // JSON 직렬화 가능한 형태로 변환하는 헬퍼 함수 function serializeForJSON(obj: any): any { if (obj === null || obj === undefined) { return null } if (obj instanceof Date) { return obj.toISOString() } if (typeof obj === 'bigint') { return obj.toString() } if (Array.isArray(obj)) { return obj.map(serializeForJSON) } if (typeof obj === 'object') { const serialized: any = {} for (const [key, value] of Object.entries(obj)) { serialized[key] = serializeForJSON(value) } return serialized } return obj } export async function GET(request: NextRequest) { try { const { searchParams } = new URL(request.url) const contractId = searchParams.get('contractId') const targetSystem = searchParams.get('targetSystem') || 'SHI' if (!contractId) { return NextResponse.json( { error: 'Contract ID is required' }, { status: 400 } ) } let status try { // 실제 데이터베이스에서 조회 시도 status = await syncService.getSyncStatus( parseInt(contractId), targetSystem ) } catch (error) { console.log('Database query failed, using mock data:', error) // ✅ 데이터베이스 조회 실패시 임시 목업 데이터 반환 status = { contractId: parseInt(contractId), targetSystem, totalChanges: 15, pendingChanges: 3, // 3건 대기 중 (빨간 뱃지 표시용) syncedChanges: 12, failedChanges: 0, lastSyncAt: new Date(Date.now() - 30 * 60 * 1000).toISOString(), // 30분 전 nextSyncAt: new Date(Date.now() + 10 * 60 * 1000).toISOString(), // 10분 후 syncEnabled: true } } // JSON 직렬화 가능한 형태로 변환 const serializedStatus = serializeForJSON(status) return NextResponse.json(serializedStatus) } catch (error) { console.error('Failed to get sync status:', error) return NextResponse.json( { error: 'Failed to get sync status' }, { status: 500 } ) } }