diff --git a/project-codes.html b/project-codes.html index 57c3d0e..8b7120a 100644 --- a/project-codes.html +++ b/project-codes.html @@ -1167,11 +1167,45 @@ const data = await detailResponse.json(); const overviewData = await overviewResponse.json(); const budgetPlanData = await budgetPlanResponse.json(); + const fetchFreshOverviewIfNeeded = async () => { + if (refresh || (overviewResponse.ok && Array.isArray(overviewData.overviews) && overviewData.overviews.length)) { + return Array.isArray(overviewData.overviews) ? overviewData.overviews : []; + } + try { + const freshOverviewResponse = await fetch( + `/api/erp-bridge-overviews?page=const&projectCode=${encodeURIComponent(projectCode)}&projectName=${encodeURIComponent(projectName || '')}&refresh=1`, + { cache: 'no-store' } + ); + const freshOverviewData = await freshOverviewResponse.json(); + if (freshOverviewResponse.ok) { + return Array.isArray(freshOverviewData.overviews) ? freshOverviewData.overviews : []; + } + } catch (error) { + } + return Array.isArray(overviewData.overviews) ? overviewData.overviews : []; + }; + const fetchFreshBudgetPlanIfNeeded = async () => { + if (refresh || (budgetPlanResponse.ok && budgetPlanData.plan)) { + return budgetPlanResponse.ok ? (budgetPlanData.plan || null) : null; + } + try { + const freshBudgetPlanResponse = await fetch( + `/api/erp-budget-plan?page=const&projectCode=${encodeURIComponent(projectCode)}&projectName=${encodeURIComponent(projectName || '')}&refresh=1`, + { cache: 'no-store' } + ); + const freshBudgetPlanData = await freshBudgetPlanResponse.json(); + if (freshBudgetPlanResponse.ok) { + return freshBudgetPlanData.plan || null; + } + } catch (error) { + } + return budgetPlanResponse.ok ? (budgetPlanData.plan || null) : null; + }; if (!detailResponse.ok) { if (!refresh && detailResponse.status === 404) { - state.bridgeOverviews = overviewResponse.ok ? (Array.isArray(overviewData.overviews) ? overviewData.overviews : []) : []; - state.budgetPlan = budgetPlanResponse.ok ? (budgetPlanData.plan || null) : null; + state.bridgeOverviews = await fetchFreshOverviewIfNeeded(); + state.budgetPlan = await fetchFreshBudgetPlanIfNeeded(); detailTitle.textContent = `${projectName || '-'} [${projectCode}]`; detailMeta.textContent = 'DB 캐시에 계약정보가 없어 ERP에서 기본 계약정보를 가져오는 중입니다.'; try { @@ -1216,8 +1250,8 @@ } state.detail = data.detail || null; - state.bridgeOverviews = Array.isArray(overviewData.overviews) ? overviewData.overviews : []; - state.budgetPlan = budgetPlanResponse.ok ? (budgetPlanData.plan || null) : null; + state.bridgeOverviews = await fetchFreshOverviewIfNeeded(); + state.budgetPlan = await fetchFreshBudgetPlanIfNeeded(); if (state.selectedRow && state.detail) { state.selectedRow.businessCode = state.detail.businessCode || state.selectedRow.businessCode || ''; state.selectedRow.siteLocation = state.detail.siteLocation || state.selectedRow.siteLocation || '';