[ST] - 공단 오류 및 개선 요청사항 처리

This commit is contained in:
2026-08-07 16:24:39 +09:00
parent 26f64988ef
commit 85ef1805e5
24 changed files with 513 additions and 207 deletions
@@ -290,11 +290,11 @@ async function waitForImrJobCompleted(
options?.onProgress?.(Math.max(0, Math.min(100, Number(res.job_prog) || 0)));
if (res.status === "COMPLETED" && Number(res.job_prog) === 100) return;
if (res.status === "FAILED" || res.status === "ERROR" || res.status === "CANCELLED") {
throw new Error(res.error_msg || `IMR 검증이 ${res.status} 상태로 종료되었습니다.`);
throw new Error(res.error_msg || `시계열 검증이 ${res.status} 상태로 종료되었습니다.`);
}
await sleep(pollIntervalMs);
}
throw new Error("IMR 검증 완료 대기 시간이 초과되었습니다.");
throw new Error("시계열 검증 완료 대기 시간이 초과되었습니다.");
}
function createEmptyExcretaTreatmentFacilityRow(
@@ -786,7 +786,7 @@ const ExcretaTreatmentFacilityInp = () => {
if (finalStatus === "5") {
setGlobalProgress(50);
setGlobalProgressLabel("IMR 검증 진행 중...");
setGlobalProgressLabel("시계열 검증 진행 중...");
const imrParam = {
user_id: userInfo.userUnqId,
sewer_bzmn_cd: lastSearchedValues.bsnmCd ?? "",
@@ -941,10 +941,10 @@ const ExcretaTreatmentFacilityInp = () => {
.map((e) => {
const prefix =
e.vrfcCd === "IMR"
? "IMR검증 - "
? "시계열 검증 - "
: e.vrfcCd === "NV"
? "일반검증 - "
: "HB검증 -";
: "모집단 검증 -";
return `${prefix}${e.rsnExpln}
(검증 기준값: ${e.compVlCn} / 현재 입력값: ${e.nowVlCn})`;
})
@@ -305,11 +305,11 @@ async function waitForImrJobCompleted(
options?.onProgress?.(Math.max(0, Math.min(100, Number(res.job_prog) || 0)));
if (res.status === "COMPLETED" && Number(res.job_prog) === 100) return;
if (res.status === "FAILED" || res.status === "ERROR" || res.status === "CANCELLED") {
throw new Error(res.error_msg || `IMR 검증이 ${res.status} 상태로 종료되었습니다.`);
throw new Error(res.error_msg || `시계열 검증이 ${res.status} 상태로 종료되었습니다.`);
}
await sleep(pollIntervalMs);
}
throw new Error("IMR 검증 완료 대기 시간이 초과되었습니다.");
throw new Error("시계열 검증 완료 대기 시간이 초과되었습니다.");
}
function resolvePrivateSewageFacilityTab(tabKey: string) {
@@ -871,7 +871,7 @@ const PrivateSewageFacilityInp = () => {
if (finalStatus === "5") {
setGlobalProgress(50);
setGlobalProgressLabel("IMR 검증 진행 중...");
setGlobalProgressLabel("시계열 검증 진행 중...");
const imrParam = {
user_id: userInfo.userUnqId,
sewer_bzmn_cd: lastSearchedValues.bsnmCd ?? "",
@@ -1146,10 +1146,10 @@ const PrivateSewageFacilityInp = () => {
.map((e) => {
const prefix =
e.vrfcCd === "IMR"
? "IMR검증 - "
? "시계열 검증 - "
: e.vrfcCd === "NV"
? "일반검증 - "
: "HB검증 - ";
: "모집단 검증 - ";
return `${prefix}${e.rsnExpln}(검증 기준값: ${e.compVlCn} / 현재 입력값: ${e.nowVlCn})`;
})
.filter(Boolean)
@@ -122,11 +122,11 @@ async function waitForImrJobCompleted(
options?.onProgress?.(Math.max(0, Math.min(100, Number(res.job_prog) || 0)));
if (res.status === 'COMPLETED' && Number(res.job_prog) === 100) return;
if (res.status === 'FAILED' || res.status === 'ERROR' || res.status === 'CANCELLED') {
throw new Error(res.error_msg || `IMR 검증이 ${res.status} 상태로 종료되었습니다.`);
throw new Error(res.error_msg || `시계열 검증이 ${res.status} 상태로 종료되었습니다.`);
}
await sleep(pollIntervalMs);
}
throw new Error('IMR 검증 완료 대기 시간이 초과되었습니다.');
throw new Error('시계열 검증 완료 대기 시간이 초과되었습니다.');
}
type MainFacilityMappingSaveDraft = {
@@ -385,7 +385,7 @@ const PublicSewageFacilityInp = () => {
if (finalStatus === '5') {
setGlobalProgress(50);
setGlobalProgressLabel('IMR 검증 진행 중...');
setGlobalProgressLabel('시계열 검증 진행 중...');
const imrParam = {
user_id: userInfo.userUnqId,
sewer_bzmn_cd: lastSearchedValues.bsnmCd ?? '',
@@ -1416,7 +1416,7 @@ const PublicSewageFacilityInp = () => {
return errors
.map((e) => {
const prefix =
e.vrfcCd === "IMR" ? "IMR검증 - " : (e.vrfcCd === "NV" ? "일반검증 - " : "HB검증 - ");
e.vrfcCd === "IMR" ? "시계열 검증 - " : (e.vrfcCd === "NV" ? "일반검증 - " : "모집단 검증 - ");
const comp = e.compVlCn ?? "";
const now = e.nowVlCn ?? "";
return `${prefix}${e.rsnExpln}
@@ -285,11 +285,11 @@ async function waitForImrJobCompleted(
options?.onProgress?.(Math.max(0, Math.min(100, Number(res.job_prog) || 0)));
if (res.status === "COMPLETED" && Number(res.job_prog) === 100) return;
if (res.status === "FAILED" || res.status === "ERROR" || res.status === "CANCELLED") {
throw new Error(res.error_msg || `IMR 검증이 ${res.status} 상태로 종료되었습니다.`);
throw new Error(res.error_msg || `시계열 검증이 ${res.status} 상태로 종료되었습니다.`);
}
await sleep(pollIntervalMs);
}
throw new Error("IMR 검증 완료 대기 시간이 초과되었습니다.");
throw new Error("시계열 검증 완료 대기 시간이 초과되었습니다.");
}
function createEmptyPumpingStationRow(
@@ -770,7 +770,7 @@ const PumpingStationInp = () => {
if (finalStatus === "5") {
setGlobalProgress(50);
setGlobalProgressLabel("IMR 검증 진행 중...");
setGlobalProgressLabel("시계열 검증 진행 중...");
const imrParam = {
user_id: userInfo.userUnqId,
sewer_bzmn_cd: lastSearchedValues.bsnmCd ?? "",
@@ -925,10 +925,10 @@ const PumpingStationInp = () => {
.map((e) => {
const prefix =
e.vrfcCd === "IMR"
? "IMR검증 - "
? "시계열 검증 - "
: e.vrfcCd === "NV"
? "일반검증 - "
: "HB검증 -";
: "모집단 검증 -";
return `${prefix}${e.rsnExpln}
(검증 기준값: ${e.compVlCn} / 현재 입력값: ${e.nowVlCn})`;
})
@@ -521,10 +521,10 @@ function verificationCellTooltip({
.map((e) => {
const prefix =
e.vrfcCd === "IMR"
? "IMR검증 - "
? "시계열 검증 - "
: e.vrfcCd === "NV"
? "일반검증 - "
: "HB검증 - ";
: "모집단 검증 - ";
return `${prefix}${e.rsnExpln}
(검증 기준값: ${e.compVlCn} / 현재 입력값: ${e.nowVlCn})`;
})
@@ -577,11 +577,11 @@ async function waitForImrJobCompleted(
options?.onProgress?.(Math.max(0, Math.min(100, Number(res.job_prog) || 0)));
if (res.status === "COMPLETED" && Number(res.job_prog) === 100) return;
if (res.status === "FAILED" || res.status === "ERROR" || res.status === "CANCELLED") {
throw new Error(res.error_msg || `IMR 검증이 ${res.status} 상태로 종료되었습니다.`);
throw new Error(res.error_msg || `시계열 검증이 ${res.status} 상태로 종료되었습니다.`);
}
await sleep(pollIntervalMs);
}
throw new Error("IMR 검증 완료 대기 시간이 초과되었습니다.");
throw new Error("시계열 검증 완료 대기 시간이 초과되었습니다.");
}
// 하수도 통계 관리 > 12. 하수 및 분뇨관련산업
@@ -1431,7 +1431,7 @@ const SewageExcretaRelatedInp = () => {
if (finalStatus === "5") {
setGlobalProgress(50);
setGlobalProgressLabel("IMR 검증 진행 중...");
setGlobalProgressLabel("시계열 검증 진행 중...");
const imrParam = {
user_id: userInfo.userUnqId,
sewer_bzmn_cd: lastSearchedValues.bsnmCd ?? "",
@@ -136,10 +136,10 @@ function verificationCellTooltip({
.map((e) => {
const prefix =
e.vrfcCd === "IMR"
? "IMR검증 - "
? "시계열 검증 - "
: e.vrfcCd === "NV"
? "일반검증 - "
: "HB검증 - ";
: "모집단 검증 - ";
return `${prefix}${e.rsnExpln}
(검증 기준값: ${e.compVlCn} / 현재 입력값: ${e.nowVlCn})`;
})
@@ -630,11 +630,11 @@ async function waitForImrJobCompleted(
options?.onProgress?.(Math.max(0, Math.min(100, Number(res.job_prog) || 0)));
if (res.status === "COMPLETED" && Number(res.job_prog) === 100) return;
if (res.status === "FAILED" || res.status === "ERROR" || res.status === "CANCELLED") {
throw new Error(res.error_msg || `IMR 검증이 ${res.status} 상태로 종료되었습니다.`);
throw new Error(res.error_msg || `시계열 검증이 ${res.status} 상태로 종료되었습니다.`);
}
await sleep(pollIntervalMs);
}
throw new Error("IMR 검증 완료 대기 시간이 초과되었습니다.");
throw new Error("시계열 검증 완료 대기 시간이 초과되었습니다.");
}
// 하수도 통계 관리 > 11. 하수 및 분뇨찌꺼기(슬러지)처리
@@ -1437,7 +1437,7 @@ const SewageExcretaSlurgeInp = () => {
if (finalStatus === "5") {
setGlobalProgress(50);
setGlobalProgressLabel("IMR 검증 진행 중...");
setGlobalProgressLabel("시계열 검증 진행 중...");
const imrParam = {
user_id: userInfo.userUnqId,
sewer_bzmn_cd: lastSearchedValues.bsnmCd ?? "",
@@ -1898,7 +1898,7 @@ const SewageExcretaSlurgeInp = () => {
col.fieldName === "sggNm"
) {
next = buildSggNmColumn(col, canEdit, sggOptions);
} else if (col.fieldName === "sggNm" || col.fieldName === "swtrmtFcltNm") {
} else if (col.fieldName === "sggNm") {
next = { ...col, editable: false as const, styleName: "rg-cell-readonly" };
}
const guide = columnGuidesByTab[tabKey]?.[col.fieldName]?.trim();
@@ -324,11 +324,11 @@ async function waitForImrJobCompleted(
options?.onProgress?.(Math.max(0, Math.min(100, Number(res.job_prog) || 0)));
if (res.status === "COMPLETED" && Number(res.job_prog) === 100) return;
if (res.status === "FAILED" || res.status === "ERROR" || res.status === "CANCELLED") {
throw new Error(res.error_msg || `IMR 검증이 ${res.status} 상태로 종료되었습니다.`);
throw new Error(res.error_msg || `시계열 검증이 ${res.status} 상태로 종료되었습니다.`);
}
await sleep(pollIntervalMs);
}
throw new Error("IMR 검증 완료 대기 시간이 초과되었습니다.");
throw new Error("시계열 검증 완료 대기 시간이 초과되었습니다.");
}
function buildRegionalFactSubmitListFromGrid(
@@ -1428,7 +1428,7 @@ const SewagePipeInp = () => {
if (finalStatus === "5") {
setGlobalProgress(50);
setGlobalProgressLabel("IMR 검증 진행 중...");
setGlobalProgressLabel("시계열 검증 진행 중...");
const imrParam = {
user_id: userInfo.userUnqId,
sewer_bzmn_cd: values.bsnmCd ?? "",
@@ -2244,7 +2244,7 @@ const SewagePipeInp = () => {
return errors
.map((e) => {
const prefix =
e.vrfcCd === "IMR" ? "IMR검증 - " : (e.vrfcCd === "NV" ? "일반검증 - " : "HB검증 - ");
e.vrfcCd === "IMR" ? "시계열 검증 - " : (e.vrfcCd === "NV" ? "일반검증 - " : "모집단 검증 - ");
const comp = e.compVlCn ?? "";
const now = e.nowVlCn ?? "";
return `${prefix}${e.rsnExpln}
@@ -183,11 +183,11 @@ async function waitForImrJobCompleted(
options?.onProgress?.(Math.max(0, Math.min(100, Number(res.job_prog) || 0)));
if (res.status === "COMPLETED" && Number(res.job_prog) === 100) return;
if (res.status === "FAILED" || res.status === "ERROR" || res.status === "CANCELLED") {
throw new Error(res.error_msg || `IMR 검증이 ${res.status} 상태로 종료되었습니다.`);
throw new Error(res.error_msg || `시계열 검증이 ${res.status} 상태로 종료되었습니다.`);
}
await sleep(pollIntervalMs);
}
throw new Error("IMR 검증 완료 대기 시간이 초과되었습니다.");
throw new Error("시계열 검증 완료 대기 시간이 초과되었습니다.");
}
function buildColumnFormatNumber(
@@ -655,7 +655,7 @@ const SewagePipeMaintainInp = () => {
if (finalStatus === "5") {
setGlobalProgress(50);
setGlobalProgressLabel("IMR 검증 진행 중...");
setGlobalProgressLabel("시계열 검증 진행 중...");
const imrParam = {
user_id: userInfo.userUnqId,
sewer_bzmn_cd: lastSearchedValues.bsnmCd ?? "",
@@ -1099,7 +1099,7 @@ const SewagePipeMaintainInp = () => {
return errors
.map((e) => {
const prefix =
e.vrfcCd === "IMR" ? "IMR검증 - " : e.vrfcCd === "NV" ? "일반검증 - " : "HB검증 - ";
e.vrfcCd === "IMR" ? "시계열 검증 - " : e.vrfcCd === "NV" ? "일반검증 - " : "모집단 검증 - ";
return `${prefix}${e.rsnExpln}(검증 기준값: ${e.compVlCn} / 현재 입력값: ${e.nowVlCn})`;
})
.filter(Boolean)
@@ -446,11 +446,11 @@ async function waitForImrJobCompleted(
options?.onProgress?.(Math.max(0, Math.min(100, Number(res.job_prog) || 0)));
if (res.status === "COMPLETED" && Number(res.job_prog) === 100) return;
if (res.status === "FAILED" || res.status === "ERROR" || res.status === "CANCELLED") {
throw new Error(res.error_msg || `IMR 검증이 ${res.status} 상태로 종료되었습니다.`);
throw new Error(res.error_msg || `시계열 검증이 ${res.status} 상태로 종료되었습니다.`);
}
await sleep(pollIntervalMs);
}
throw new Error("IMR 검증 완료 대기 시간이 초과되었습니다.");
throw new Error("시계열 검증 완료 대기 시간이 초과되었습니다.");
}
// 하수도 통계 관리 > 04. 하수저류 시설 및 빗물 펌프장
@@ -852,7 +852,7 @@ const SewageReservoirPumpInp = () => {
if (finalStatus === "5") {
setGlobalProgress(50);
setGlobalProgressLabel("IMR 검증 진행 중...");
setGlobalProgressLabel("시계열 검증 진행 중...");
const imrParam = {
user_id: userInfo.userUnqId,
sewer_bzmn_cd: lastSearchedValues.bsnmCd ?? "",
@@ -1500,10 +1500,10 @@ const SewageReservoirPumpInp = () => {
.map((e) => {
const prefix =
e.vrfcCd === "IMR"
? "IMR검증 - "
? "시계열 검증 - "
: e.vrfcCd === "NV"
? "일반검증 - "
: "HB검증 -";
: "모집단 검증 -";
return `${prefix}${e.rsnExpln}
(검증 기준값: ${e.compVlCn} / 현재 입력값: ${e.nowVlCn})`;
})
@@ -341,11 +341,11 @@ async function waitForImrJobCompleted(
options?.onProgress?.(Math.max(0, Math.min(100, Number(res.job_prog) || 0)));
if (res.status === "COMPLETED" && Number(res.job_prog) === 100) return;
if (res.status === "FAILED" || res.status === "ERROR" || res.status === "CANCELLED") {
throw new Error(res.error_msg || `IMR 검증이 ${res.status} 상태로 종료되었습니다.`);
throw new Error(res.error_msg || `시계열 검증이 ${res.status} 상태로 종료되었습니다.`);
}
await sleep(pollIntervalMs);
}
throw new Error("IMR 검증 완료 대기 시간이 초과되었습니다.");
throw new Error("시계열 검증 완료 대기 시간이 초과되었습니다.");
}
// 하수도 통계 관리 > 09. 하수도재정
@@ -918,7 +918,7 @@ const SewerageFinanceInp = () => {
if (finalStatus === "5") {
setGlobalProgress(50);
setGlobalProgressLabel("IMR 검증 진행 중...");
setGlobalProgressLabel("시계열 검증 진행 중...");
const imrParam = {
user_id: userInfo.userUnqId,
sewer_bzmn_cd: lastSearchedValues.bsnmCd ?? "",
@@ -1212,10 +1212,10 @@ const SewerageFinanceInp = () => {
.map((e) => {
const prefix =
e.vrfcCd === "IMR"
? "IMR검증 - "
? "시계열 검증 - "
: e.vrfcCd === "NV"
? "일반검증 - "
: "HB검증 - ";
: "모집단 검증 - ";
return `${prefix}${e.rsnExpln}(검증 기준값: ${e.compVlCn} / 현재 입력값: ${e.nowVlCn})`;
})
.filter(Boolean)
@@ -87,11 +87,11 @@ async function waitForImrJobCompleted(
options?.onProgress?.(Math.max(0, Math.min(100, Number(res.job_prog) || 0)));
if (res.status === "COMPLETED" && Number(res.job_prog) === 100) return;
if (res.status === "FAILED" || res.status === "ERROR" || res.status === "CANCELLED") {
throw new Error(res.error_msg || `IMR 검증이 ${res.status} 상태로 종료되었습니다.`);
throw new Error(res.error_msg || `시계열 검증이 ${res.status} 상태로 종료되었습니다.`);
}
await sleep(pollIntervalMs);
}
throw new Error("IMR 검증 완료 대기 시간이 초과되었습니다.");
throw new Error("시계열 검증 완료 대기 시간이 초과되었습니다.");
}
function getSewerageSupplyRateParams(
@@ -507,7 +507,7 @@ const SeweragePenetrationRateInp = () => {
setGlobalProgress(50);
if (response.data.finalStatus === '5') {
setGlobalProgressLabel('IMR 검증 진행 중...');
setGlobalProgressLabel('시계열 검증 진행 중...');
const imrParam = {
user_id: userInfo.userUnqId,
sewer_bzmn_cd: searchValues?.bsnmCd ?? '',
@@ -833,7 +833,7 @@ const SeweragePenetrationRateInp = () => {
if (Array.isArray(errors) && errors.length > 0) {
return errors
.map((e) => {
const prefix = e.vrfcCd === 'IMR' ? 'IMR검증 - ' : (e.vrfcCd === 'NV' ? '일반검증 - ' : 'HB검증 -');
const prefix = e.vrfcCd === 'IMR' ? '시계열 검증 - ' : (e.vrfcCd === 'NV' ? '일반검증 - ' : '모집단 검증 -');
return `${prefix}${e.rsnExpln}
(검증 기준값: ${e.compVlCn} / 현재 입력값: ${e.nowVlCn})`;
})
@@ -271,11 +271,11 @@ async function waitForImrJobCompleted(
options?.onProgress?.(Math.max(0, Math.min(100, Number(res.job_prog) || 0)));
if (res.status === "COMPLETED" && Number(res.job_prog) === 100) return;
if (res.status === "FAILED" || res.status === "ERROR" || res.status === "CANCELLED") {
throw new Error(res.error_msg || `IMR 검증이 ${res.status} 상태로 종료되었습니다.`);
throw new Error(res.error_msg || `시계열 검증이 ${res.status} 상태로 종료되었습니다.`);
}
await sleep(pollIntervalMs);
}
throw new Error("IMR 검증 완료 대기 시간이 초과되었습니다.");
throw new Error("시계열 검증 완료 대기 시간이 초과되었습니다.");
}
// 하수도 통계 관리 > 13. 하수도 서비스 수준
@@ -791,7 +791,7 @@ const SewerageServiceLevelInp = () => {
if (finalStatus === "5") {
setGlobalProgress(50);
setGlobalProgressLabel("IMR 검증 진행 중...");
setGlobalProgressLabel("시계열 검증 진행 중...");
const imrParam = {
user_id: userInfo.userUnqId,
sewer_bzmn_cd: lastSearchedValues.bsnmCd ?? "",
@@ -1110,10 +1110,10 @@ const SewerageServiceLevelInp = () => {
.map((e) => {
const prefix =
e.vrfcCd === "IMR"
? "IMR검증 - "
? "시계열 검증 - "
: e.vrfcCd === "NV"
? "일반검증 - "
: "HB검증 - ";
: "모집단 검증 - ";
return `${prefix}${e.rsnExpln}(검증 기준값: ${e.compVlCn} / 현재 입력값: ${e.nowVlCn})`;
})
.filter(Boolean)
@@ -508,11 +508,11 @@ async function waitForImrJobCompleted(
options?.onProgress?.(Math.max(0, Math.min(100, Number(res.job_prog) || 0)));
if (res.status === "COMPLETED" && Number(res.job_prog) === 100) return;
if (res.status === "FAILED" || res.status === "ERROR" || res.status === "CANCELLED") {
throw new Error(res.error_msg || `IMR 검증이 ${res.status} 상태로 종료되었습니다.`);
throw new Error(res.error_msg || `시계열 검증이 ${res.status} 상태로 종료되었습니다.`);
}
await sleep(pollIntervalMs);
}
throw new Error("IMR 검증 완료 대기 시간이 초과되었습니다.");
throw new Error("시계열 검증 완료 대기 시간이 초과되었습니다.");
}
// 하수도 통계 관리 > 10. 물 재이용
@@ -1318,7 +1318,7 @@ const WaterReuseInp = () => {
if (finalStatus === "5") {
setGlobalProgress(50);
setGlobalProgressLabel("IMR 검증 진행 중...");
setGlobalProgressLabel("시계열 검증 진행 중...");
const imrParam = {
user_id: userInfo.userUnqId,
sewer_bzmn_cd: lastSearchedValues.bsnmCd ?? "",
@@ -2053,10 +2053,10 @@ const WaterReuseInp = () => {
.map((e) => {
const prefix =
e.vrfcCd === "IMR"
? "IMR검증 - "
? "시계열 검증 - "
: e.vrfcCd === "NV"
? "일반검증 - "
: "HB검증 - ";
: "모집단 검증 - ";
return `${prefix}${e.rsnExpln}(검증 기준값: ${e.compVlCn} / 현재 입력값: ${e.nowVlCn})`;
})
.filter(Boolean)