diff --git a/apps/sn/app/(map-layout)/map/components/rdiiResult/RdiiResultPopupPage.tsx b/apps/sn/app/(map-layout)/map/components/rdiiResult/RdiiResultPopupPage.tsx index 03802477f..4f0ff5e15 100644 --- a/apps/sn/app/(map-layout)/map/components/rdiiResult/RdiiResultPopupPage.tsx +++ b/apps/sn/app/(map-layout)/map/components/rdiiResult/RdiiResultPopupPage.tsx @@ -27,7 +27,7 @@ const RDII_RESULT_HEADLIST = [ { id: "drtwSwtcRt", title: "오수 전환율" }, { id: "srcNm", title: "RTK 계수 출처" }, { id: "cntbArea", title: "RDII 기여면적" }, - { id: "anlsInfo", title: "RDII 분석정보" }, + { id: "anlsInfo", title: "RDII\n분석정보" }, { id: "regDt", title: "분석일자" }, { id: "rgtrNm", title: "분석자" }, { id: "scsYn", title: "분석성공여부" }, @@ -323,6 +323,11 @@ export default function RdiiResultPopupPage() { pageSize={RDII_RESULT_PAGE_SIZE} total={total} cellClick={(index) => handleRowClick(index)} + cellClassName={(_, headId) => + headId === "anlsInfo" + ? "whitespace-normal break-all leading-[1.35]" + : "" + } onPageChange={(page) => void handleSearch(page)} curPage={currentPage} index={selectedIndex} diff --git a/apps/sn/app/(with-base-layout)/ii/rdii/page.tsx b/apps/sn/app/(with-base-layout)/ii/rdii/page.tsx index d7f597574..70d1080a7 100644 --- a/apps/sn/app/(with-base-layout)/ii/rdii/page.tsx +++ b/apps/sn/app/(with-base-layout)/ii/rdii/page.tsx @@ -147,6 +147,11 @@ export default function RTKForm() { buildStatusUrl: (analysisSn) => `v1/rdiiAnls/${analysisSn}/status`, successMessage: 'RDII 분석이 완료되었습니다.', failureMessage: 'RDII 분석이 실패했습니다. 로그를 확인해주세요.', + analysisType: 'RDII', + analysisName: 'RDII 분석', + initialProgressPercent: 10, + initialProgressStep: 'REQUEST_ACCEPTED', + initialProgressMessage: '요청 접수 완료', }); // form 인스턴스 생성 diff --git a/apps/sn/app/(with-base-layout)/ii/useAnalysisCompletionWatcher.tsx b/apps/sn/app/(with-base-layout)/ii/useAnalysisCompletionWatcher.tsx index 970675d23..8f5d98095 100644 --- a/apps/sn/app/(with-base-layout)/ii/useAnalysisCompletionWatcher.tsx +++ b/apps/sn/app/(with-base-layout)/ii/useAnalysisCompletionWatcher.tsx @@ -66,6 +66,11 @@ const DEFAULT_ANALYSIS_NAME = "분석 진행"; const DEFAULT_POLLING_INTERVAL_MS = 3000; const DEFAULT_PROGRESS_MESSAGE = "진행 상태를 확인하는 중입니다."; const INFTWT_ANALYSIS_TYPE = "INFTWT"; +const RDII_ANALYSIS_TYPE = "RDII"; +const PROGRESS_OVERLAY_ANALYSIS_TYPES = new Set([ + INFTWT_ANALYSIS_TYPE, + RDII_ANALYSIS_TYPE, +]); const PENDING_ANALYSIS_WATCHES_STORAGE_KEY = "SN_PENDING_ANALYSIS_WATCHES"; const PENDING_ANALYSIS_WATCHES_CHANGED_EVENT = "sn-pending-analysis-watches-changed"; @@ -200,7 +205,7 @@ const toOverlayItem = (items: PendingAnalysisWatch[]) => { continue; } - if (item.analysisType !== INFTWT_ANALYSIS_TYPE) { + if (!PROGRESS_OVERLAY_ANALYSIS_TYPES.has(item.analysisType)) { continue; } diff --git a/apps/sn/docs/작업내용/SN-RDII분석결과-지도연계유지보수/001-fe-SN-RDII분석결과-지도연계유지보수-통합구현기록.md b/apps/sn/docs/작업내용/SN-RDII분석결과-지도연계유지보수/001-fe-SN-RDII분석결과-지도연계유지보수-통합구현기록.md index 12df15080..554bced1c 100644 --- a/apps/sn/docs/작업내용/SN-RDII분석결과-지도연계유지보수/001-fe-SN-RDII분석결과-지도연계유지보수-통합구현기록.md +++ b/apps/sn/docs/작업내용/SN-RDII분석결과-지도연계유지보수/001-fe-SN-RDII분석결과-지도연계유지보수-통합구현기록.md @@ -62,4 +62,28 @@ - `ii/rdii/page.tsx`는 `savewithfile` 성공 직후 `분석 요청이 접수되었습니다. 완료 시 안내됩니다.` 문구를 먼저 보여주고, 응답의 `rainInfwtAnlsSn`으로 완료 감시를 시작하도록 바꿨다. - 감시는 공통 `ii/useAnalysisCompletionWatcher.ts`를 재사용해 `GET /api/v1/rdiiAnls/{rainInfwtAnlsSn}/status` polling과 `Y/N` 종료 alert를 처리한다. - `app/(with-base-layout)/layout.tsx`에 `GlobalAnalysisCompletionWatcher`를 mount해 사용자가 RDII 화면을 떠난 뒤에도 같은 레이아웃 범위 안에서는 완료 alert가 이어지도록 보강했다. -- FE 정적 검증은 `node node_modules\typescript\bin\tsc --noEmit --ignoreDeprecations 5.0 -p tsconfig.json`까지 수행했고, 이번 RDII 완료 alert 변경 파일 기준 신규 오류는 없고 기존 선행 오류만 남았다. \ No newline at end of file +- FE 정적 검증은 `node node_modules\typescript\bin\tsc --noEmit --ignoreDeprecations 5.0 -p tsconfig.json`까지 수행했고, 이번 RDII 완료 alert 변경 파일 기준 신규 오류는 없고 기존 선행 오류만 남았다. + +## 12. 2026-07-13 RDII 분석 progress overlay 이관 + +- `ii/rdii/page.tsx`의 완료 watcher 등록에 `analysisType=RDII`, `analysisName=RDII 분석`, 초기 `10% REQUEST_ACCEPTED` 상태를 추가했다. +- 공통 `useAnalysisCompletionWatcher.tsx`는 overlay 허용 분석유형을 `INFTWT`, `RDII`로 확장해 기존 좌측 하단 UI와 localStorage 감시 흐름을 그대로 재사용한다. +- RDII status API의 `progressPercent`, `progressStep`, `progressMessage`, `updatedAt`을 기존 공통 polling 로직이 받아 화면에 반영한다. +- TypeScript 전체 검사는 기존 지도·HTML·공통 차트 선행 오류로 실패했으며, 이번 RDII 변경 파일에서 새 오류는 확인되지 않았다. +- 실제 브라우저에서 RDII 실행 후 단계 전환과 페이지 이동 중 overlay 유지 여부를 수동 확인해야 한다. + +## 13. 2026-07-13 RDII 분석정보 헤더/내용 줄바꿈 보정 + +- 지도 `RDII 분석결과` 팝업의 `anlsInfo` 헤더를 `RDII\n분석정보`로 변경했다. +- 공통 `UiTable`의 `white-space: pre-line` 렌더링을 재사용해 `RDII`와 `분석정보`가 두 줄로 표시되도록 맞췄다. +- 긴 분석정보 값이 다음 열과 겹치지 않도록 RDII `UiTable`의 `anlsInfo` 데이터 셀에 침입수와 동일한 `whitespace-normal break-all leading-[1.35]` 클래스를 적용했다. +- 레거시 `ii/rdiiResult` 화면과 공통 테이블 컴포넌트는 수정하지 않았다. +- TypeScript 전체 검사는 기존 선행 오류로 실패했으며, `RdiiResultPopupPage.tsx` 관련 신규 오류는 없었다. + +## 14. 2026-07-13 최종 코드 재검토 및 마감 + +- RDII 분석 실행 후 watcher 등록값, 전역 overlay의 `INFTWT/RDII` 필터, status 응답 반영과 `Y/N` 종료 alert 흐름을 다시 대조했다. +- RDII 분석결과 팝업은 헤더 줄바꿈과 `anlsInfo` 데이터 셀의 `break-all` 처리가 침입수 팝업 패턴과 동일함을 확인했다. +- 최종 TypeScript 전체 검사는 기존 지도·HTML·공통 차트 선행 오류로 실패했으며, RDII 변경 파일의 신규 오류는 없었다. +- `git diff --check`를 통과했고 자동 검증 기준 추가 수정이 필요한 프론트 결함은 발견되지 않아 구현 범위를 마감한다. +- 실제 단계 전환과 긴 분석정보 표시 상태는 배포 환경 브라우저 smoke test 항목으로 남긴다.