Improve 8092 cache loading and SQLite stability
This commit is contained in:
@@ -824,7 +824,7 @@
|
||||
function renderDetail(detail) {
|
||||
if (!detail) {
|
||||
detailTitle.textContent = '계약정보 표';
|
||||
detailMeta.textContent = '시공코드나 약칭을 클릭하면 DB에 저장된 계약정보를 먼저 보여줍니다.';
|
||||
detailMeta.textContent = '시공코드나 약칭을 클릭하면 DB 캐시를 먼저 보여줍니다. 최신 정보가 필요하면 새로 가져오기를 누르세요.';
|
||||
detailBody.innerHTML = '<tr><td colspan="2" class="empty">선택된 시공코드가 없습니다.</td></tr>';
|
||||
bridgeMeta.textContent = '공사규모와 공사개요를 교량명 기준으로 매칭해서 보여줍니다.';
|
||||
bridgeBody.innerHTML = '<tr><td colspan="19" class="empty">선택된 시공코드가 없습니다.</td></tr>';
|
||||
@@ -1148,10 +1148,10 @@
|
||||
}
|
||||
detailMeta.textContent = refresh
|
||||
? 'ERP 계약정보를 DB로 동기화하는 중입니다.'
|
||||
: 'DB에 저장된 계약정보를 불러오는 중입니다.';
|
||||
: 'DB 캐시에 저장된 계약정보를 불러오는 중입니다.';
|
||||
bridgeMeta.textContent = refresh
|
||||
? 'ERP 공사규모와 공사개요를 동기화하는 중입니다.'
|
||||
: 'DB에 저장된 공사규모와 공사개요를 불러오는 중입니다.';
|
||||
: 'DB 캐시에 저장된 공사규모와 공사개요를 불러오는 중입니다.';
|
||||
detailSyncButton.disabled = true;
|
||||
try {
|
||||
const detailUrl = `/api/erp-contract-detail?page=const&projectCode=${encodeURIComponent(projectCode)}&projectName=${encodeURIComponent(projectName || '')}&refresh=${refresh ? '1' : '0'}`;
|
||||
@@ -1168,37 +1168,21 @@
|
||||
|
||||
if (!detailResponse.ok) {
|
||||
if (!refresh && detailResponse.status === 404) {
|
||||
return loadDetail(projectCode, projectName, true);
|
||||
state.detail = null;
|
||||
state.bridgeOverviews = overviewResponse.ok ? (Array.isArray(overviewData.overviews) ? overviewData.overviews : []) : [];
|
||||
state.budgetPlan = budgetPlanResponse.ok ? (budgetPlanData.plan || null) : null;
|
||||
detailTitle.textContent = `${projectName || '-'} [${projectCode}]`;
|
||||
detailMeta.textContent = 'DB 캐시에 계약정보가 없습니다. 새 정보 다시 가져오기를 누르면 ERP에서 수집합니다.';
|
||||
detailBody.innerHTML = '<tr><td colspan="2" class="empty">저장된 계약정보가 없습니다. 최신 정보가 필요하면 오른쪽 상단 버튼을 눌러주세요.</td></tr>';
|
||||
renderMergedBridgeRows([], state.bridgeOverviews || [], state.budgetPlan);
|
||||
return;
|
||||
}
|
||||
throw new Error(data.error || '계약정보 조회에 실패했습니다.');
|
||||
}
|
||||
|
||||
state.detail = data.detail || null;
|
||||
if (!refresh && (!state.detail || !Array.isArray(state.detail.scaleRows) || !state.detail.scaleRows.length)) {
|
||||
return loadDetail(projectCode, projectName, true);
|
||||
}
|
||||
state.bridgeOverviews = Array.isArray(overviewData.overviews) ? overviewData.overviews : [];
|
||||
state.budgetPlan = budgetPlanResponse.ok ? (budgetPlanData.plan || null) : null;
|
||||
if (!refresh && !state.bridgeOverviews.length) {
|
||||
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) {
|
||||
state.bridgeOverviews = Array.isArray(freshOverviewData.overviews) ? freshOverviewData.overviews : [];
|
||||
}
|
||||
}
|
||||
if (!refresh && !state.budgetPlan) {
|
||||
const freshPlanResponse = await fetch(
|
||||
`/api/erp-budget-plan?page=const&projectCode=${encodeURIComponent(projectCode)}&projectName=${encodeURIComponent(projectName || '')}&refresh=1`,
|
||||
{ cache: 'no-store' }
|
||||
);
|
||||
const freshPlanData = await freshPlanResponse.json();
|
||||
if (freshPlanResponse.ok) {
|
||||
state.budgetPlan = freshPlanData.plan || null;
|
||||
}
|
||||
}
|
||||
if (state.selectedRow && state.detail) {
|
||||
state.selectedRow.contractType = state.detail.contractType || state.selectedRow.contractType || '';
|
||||
state.selectedRow.applicationType = Array.from(new Set(
|
||||
|
||||
Reference in New Issue
Block a user