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 || '';