sn: 침수예측현황 분석시각 조건 초기화

This commit is contained in:
2026-09-30 18:09:20 +09:00
parent 8b5a2b713c
commit 735bb397ec
2 changed files with 50 additions and 16 deletions
@@ -0,0 +1,39 @@
# 침수예측현황 분석시각 초기화 구현기록
## 작업 목적
- 침수예측현황 팝업을 처음 열거나 검색조건을 초기화할 때 분석시각 범위를 자동 입력하지 않는다.
- 분석시각 제한 없이 조회한 결과는 최근 분석 데이터부터 표시한다.
## 원본 및 변경 근거
- 요구사항정의서 `SFR-011-008 위험도 산정`
- 화면설계서 슬라이드 24, `SN_MN010205 침수예측현황`
- 사용자 승인사항: 분석시각 기본 검색조건 제거 및 최근 데이터 우선 표시
## 변경 내용
- 최초·초기화 검색조건의 `analysisFrom`, `analysisTo`를 빈 값으로 변경했다.
- 목록과 Excel 전체 조회에 `analysisDateTime,desc` 정렬을 명시했다.
- 사용자가 필요할 때 직접 분석시각 범위를 입력할 수 있도록 검색 입력란은 유지했다.
## 영향 범위
- `apps/sn/src/features/fldngPredcPrst/ui/FldngPredcPrstPopupContent.tsx`
- 백엔드 API와 응답 구조는 변경하지 않는다.
- 시도, 시군구, 강우시각, 초과 빈도 검색조건은 기존 동작을 유지한다.
## 검증
- `pnpm --filter sn run typecheck` 통과
- `git diff --check` 통과
- 실행 중인 개발 서버를 유지하기 위해 별도 빌드는 수행하지 않는다.
## 롤백
- `buildInitialFilters`에서 분석시각의 금일 기본 범위를 다시 생성하고 명시적 최신순 정렬 파라미터를 제거한다.
## 남은 확인
- 팝업 최초 진입 시 분석시각 입력란이 비어 있는지 확인한다.
- 초기화 버튼을 누르면 분석시각이 비워지고 첫 페이지에 최신 분석 데이터가 표시되는지 확인한다.
@@ -17,7 +17,6 @@ import MapPopupDataTable from "@/features/windowPopup/ui/MapPopupDataTable";
import PopupSearchPanel from "@/features/windowPopup/ui/PopupSearchPanel";
import { useAlertStore } from "@/shared/lib";
import useStore from "@/store/useStore";
import { createPredictionAnalysisTimeRange } from "../model/analysisTimeRange";
import { fetchAllPages } from "@/shared/lib/fetch-all-pages";
import { downloadFloodPredictionStatusExcel } from "../lib/fldng-predc-prst-excel";
@@ -111,21 +110,16 @@ const HEADS: UiHeadProps[] = [
{ id: "floodRiskGrade", title: "침수위험도", widthPercent: 10 },
];
/** 최초·초기화 조회조건은 금일 분석결과를 기준으로 생성한다. */
const buildInitialFilters = (): Filters => {
const range = createPredictionAnalysisTimeRange();
const toDateTimeLocal = (value: string) =>
`${value.slice(0, 4)}-${value.slice(4, 6)}-${value.slice(6, 8)}T${value.slice(8, 10)}:${value.slice(10, 12)}`;
return {
ctpvCd: "0",
sggCd: "0",
rainBgngFrom: "",
rainBgngTo: "",
analysisFrom: toDateTimeLocal(range.analysisFrom),
analysisTo: toDateTimeLocal(range.analysisTo),
frequencyYear: "0",
};
};
/** 최초·초기화 시 시각 범위를 제한하지 않고 최신 침수예측 데이터부터 조회한다. */
const buildInitialFilters = (): Filters => ({
ctpvCd: "0",
sggCd: "0",
rainBgngFrom: "",
rainBgngTo: "",
analysisFrom: "",
analysisTo: "",
frequencyYear: "0",
});
const apiDate = (value: string) => value.replace(/[^0-9]/g, "").slice(0, 12);
@@ -151,6 +145,7 @@ const buildQuery = (filters: Filters, page?: number, size = PAGE_SIZE) => {
if (page !== undefined) {
params.set("page", String(page - 1));
params.set("size", String(size));
params.set("sort", "analysisDateTime,desc");
}
appendApiSearchParams(params, {
ctpvCd: filters.ctpvCd === "0" ? "0" : filters.ctpvCd.slice(0, 2),