From 5234448ae53e930c2c882e12420841838b22173d Mon Sep 17 00:00:00 2001 From: jcchoi Date: Thu, 15 Oct 2026 15:53:38 +0900 Subject: [PATCH] =?UTF-8?q?=EA=B8=B0=EB=B3=B8=EA=B3=84=ED=9A=8D=20?= =?UTF-8?q?=EC=A1=B0=ED=9A=8C=20=EC=A0=84=EC=B2=B4=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/as/src/entities/dc/api/dc-service.ts | 6 ++- .../ui/sections/basic-info-form-section.tsx | 8 ++-- .../ui/sections/basic-info-section.tsx | 2 + .../ui/sections/basic-info-form-section.tsx | 8 ++-- .../ui/sections/basic-info-section.tsx | 2 + .../ui/sections/basic-info-form-section.tsx | 8 ++-- .../ui/sections/basic-info-section.tsx | 2 + .../ui/sections/outline-form-section.tsx | 26 +--------- .../ui/sections/outline-section.tsx | 6 ++- .../ui/sewer-bsc-plan-view-page.tsx | 7 ++- .../src/widgets/previous-plan-lookup/index.ts | 4 ++ .../lib/previous-plan-table-utils.ts | 0 .../ui/previous-plan-lookup-button.tsx | 46 ++++++++++++++++++ .../ui/previous-plan-lookup-dialog.tsx | 47 +++++++++++++------ .../previous-plan-area-table.tsx | 0 .../previous-plan-file-section.tsx | 0 .../previous-plan-search-filters.tsx | 0 .../previous-plan-summary-table.tsx | 0 18 files changed, 122 insertions(+), 50 deletions(-) create mode 100644 apps/as/src/widgets/previous-plan-lookup/index.ts rename apps/as/src/{pages/sewer-bsc-plan => widgets/previous-plan-lookup}/lib/previous-plan-table-utils.ts (100%) create mode 100644 apps/as/src/widgets/previous-plan-lookup/ui/previous-plan-lookup-button.tsx rename apps/as/src/{pages/sewer-bsc-plan => widgets/previous-plan-lookup}/ui/previous-plan-lookup-dialog.tsx (82%) rename apps/as/src/{pages/sewer-bsc-plan => widgets/previous-plan-lookup}/ui/previous-plan/previous-plan-area-table.tsx (100%) rename apps/as/src/{pages/sewer-bsc-plan => widgets/previous-plan-lookup}/ui/previous-plan/previous-plan-file-section.tsx (100%) rename apps/as/src/{pages/sewer-bsc-plan => widgets/previous-plan-lookup}/ui/previous-plan/previous-plan-search-filters.tsx (100%) rename apps/as/src/{pages/sewer-bsc-plan => widgets/previous-plan-lookup}/ui/previous-plan/previous-plan-summary-table.tsx (100%) diff --git a/apps/as/src/entities/dc/api/dc-service.ts b/apps/as/src/entities/dc/api/dc-service.ts index 650e81b23..823c082e5 100644 --- a/apps/as/src/entities/dc/api/dc-service.ts +++ b/apps/as/src/entities/dc/api/dc-service.ts @@ -13,12 +13,16 @@ import type { NowDmgMtncGnsvySearchDto, } from "../model/dc-interface"; +/** 빈 문자열 파라미터를 보내면 서버 오류가 나므로 값이 있는 항목만 전송한다. */ async function getNowDmgMtncGnsvy( params: NowDmgMtncGnsvySearchDto, ): Promise { + const filledParams = Object.fromEntries( + Object.entries(params).filter(([, value]) => value !== undefined && value !== ""), + ); const response = await client.get( `${ENDPOINT.DC_SERVICE}/nowDmgMtncGnsvy`, - { params }, + { params: filledParams }, ); return response.data; } diff --git a/apps/as/src/pages/design-cnstn/ui/sections/basic-info-form-section.tsx b/apps/as/src/pages/design-cnstn/ui/sections/basic-info-form-section.tsx index af8109128..98b21267c 100644 --- a/apps/as/src/pages/design-cnstn/ui/sections/basic-info-form-section.tsx +++ b/apps/as/src/pages/design-cnstn/ui/sections/basic-info-form-section.tsx @@ -8,6 +8,7 @@ import { SectionCollapsible } from "@/shared/ui"; import { Field, FieldError, FieldGroup } from "@/shared/ui/field"; import { findCodeLabel, useCodeList } from "@/entities/code"; import { type BnsApplyData, BnsPickerDialog } from "@/widgets/bns-picker"; +import { PreviousPlanLookupButton } from "@/widgets/previous-plan-lookup"; import { Input, Table, TableCell, TableHead, TableHeader, TableRow } from "@common/components"; import type { DesignCnstnRegistFormData } from "../../lib/design-cnstn-regist-schema"; @@ -16,9 +17,9 @@ function BasicInfoFormSection() { const { control, watch, setValue } = useFormContext(); const [isPickerOpen, setIsPickerOpen] = useState(false); const taskSeComCd = watch("designCnstnMng.taskSeComCd"); - const localGovLabel = [watch("designCnstnMng.sido"), watch("designCnstnMng.gugun")] - .filter(Boolean) - .join(" "); + const sido = watch("designCnstnMng.sido"); + const gugun = watch("designCnstnMng.gugun"); + const localGovLabel = [sido, gugun].filter(Boolean).join(" "); const { data: taskOptions } = useCodeList("CNFM"); function handleBnsSelect(data: BnsApplyData) { @@ -36,6 +37,7 @@ function BasicInfoFormSection() { return ( + diff --git a/apps/as/src/pages/design-cnstn/ui/sections/basic-info-section.tsx b/apps/as/src/pages/design-cnstn/ui/sections/basic-info-section.tsx index 8af2b5fda..59f9e10ea 100644 --- a/apps/as/src/pages/design-cnstn/ui/sections/basic-info-section.tsx +++ b/apps/as/src/pages/design-cnstn/ui/sections/basic-info-section.tsx @@ -2,6 +2,7 @@ import { SectionCollapsible } from "@/shared/ui"; import type { DesignCnstnMngResponseDto } from "@/entities/design-cnstn"; +import { PreviousPlanLookupButton } from "@/widgets/previous-plan-lookup"; import { Table, TableCell, TableHead, TableHeader, TableRow } from "@common/components"; interface BasicInfoSectionProps { @@ -11,6 +12,7 @@ interface BasicInfoSectionProps { function BasicInfoSection({ det }: BasicInfoSectionProps) { return ( +
diff --git a/apps/as/src/pages/fnrs-cnsltn/ui/sections/basic-info-form-section.tsx b/apps/as/src/pages/fnrs-cnsltn/ui/sections/basic-info-form-section.tsx index 9501128bf..b2f478d8c 100644 --- a/apps/as/src/pages/fnrs-cnsltn/ui/sections/basic-info-form-section.tsx +++ b/apps/as/src/pages/fnrs-cnsltn/ui/sections/basic-info-form-section.tsx @@ -8,6 +8,7 @@ import { SectionCollapsible } from "@/shared/ui"; import { Field, FieldError, FieldGroup, FieldLabel, FieldSet } from "@/shared/ui/field"; import { findCodeLabel, useCodeList } from "@/entities/code"; import { type BnsApplyData, BnsPickerDialog } from "@/widgets/bns-picker"; +import { PreviousPlanLookupButton } from "@/widgets/previous-plan-lookup"; import { Button, Checkbox, @@ -27,9 +28,9 @@ function BasicInfoFormSection() { const { control, watch, setValue } = useFormContext(); const [isPickerOpen, setIsPickerOpen] = useState(false); const taskSeComCd = watch("fnrsCnsltnMng.taskSeComCd"); - const localGovLabel = [watch("fnrsCnsltnMng.sido"), watch("fnrsCnsltnMng.gugun")] - .filter(Boolean) - .join(" "); + const sido = watch("fnrsCnsltnMng.sido"); + const gugun = watch("fnrsCnsltnMng.gugun"); + const localGovLabel = [sido, gugun].filter(Boolean).join(" "); const { data: taskOptions } = useCodeList("FNRS"); const { data: rtlztnFcltOptions } = useCodeList("RTLZTNFCLTSE"); const { data: rtlztnUsgOptions } = useCodeList("RTLZTNUSGSE"); @@ -49,6 +50,7 @@ function BasicInfoFormSection() { return ( +
diff --git a/apps/as/src/pages/fnrs-cnsltn/ui/sections/basic-info-section.tsx b/apps/as/src/pages/fnrs-cnsltn/ui/sections/basic-info-section.tsx index f99d12e2f..a1a3e84c0 100644 --- a/apps/as/src/pages/fnrs-cnsltn/ui/sections/basic-info-section.tsx +++ b/apps/as/src/pages/fnrs-cnsltn/ui/sections/basic-info-section.tsx @@ -2,6 +2,7 @@ import { SectionCollapsible } from "@/shared/ui"; import type { FnrsCnsltnMngResponseDto } from "@/entities/fnrs-cnsltn"; +import { PreviousPlanLookupButton } from "@/widgets/previous-plan-lookup"; import { Table, TableCell, TableHead, TableHeader, TableRow } from "@common/components"; interface BasicInfoSectionProps { @@ -11,6 +12,7 @@ interface BasicInfoSectionProps { function BasicInfoSection({ det }: BasicInfoSectionProps) { return ( +
diff --git a/apps/as/src/pages/instl-sncn/ui/sections/basic-info-form-section.tsx b/apps/as/src/pages/instl-sncn/ui/sections/basic-info-form-section.tsx index bdfd58e82..681f700aa 100644 --- a/apps/as/src/pages/instl-sncn/ui/sections/basic-info-form-section.tsx +++ b/apps/as/src/pages/instl-sncn/ui/sections/basic-info-form-section.tsx @@ -8,6 +8,7 @@ import { SectionCollapsible } from "@/shared/ui"; import { Field, FieldError, FieldGroup, FieldLabel, FieldSet } from "@/shared/ui/field"; import { findCodeLabel, useCodeList } from "@/entities/code"; import { type BnsApplyData, BnsPickerDialog } from "@/widgets/bns-picker"; +import { PreviousPlanLookupButton } from "@/widgets/previous-plan-lookup"; import { Button, Checkbox, @@ -27,9 +28,9 @@ function BasicInfoFormSection() { const { control, watch, setValue } = useFormContext(); const [isPickerOpen, setIsPickerOpen] = useState(false); const taskSeComCd = watch("instlSncnMng.taskSeComCd"); - const localGovLabel = [watch("instlSncnMng.sido"), watch("instlSncnMng.gugun")] - .filter(Boolean) - .join(" "); + const sido = watch("instlSncnMng.sido"); + const gugun = watch("instlSncnMng.gugun"); + const localGovLabel = [sido, gugun].filter(Boolean).join(" "); function handleBnsSelect(data: BnsApplyData) { setValue("instlSncnMng.bizNm", data.bizNm); @@ -53,6 +54,7 @@ function BasicInfoFormSection() { return ( +
diff --git a/apps/as/src/pages/instl-sncn/ui/sections/basic-info-section.tsx b/apps/as/src/pages/instl-sncn/ui/sections/basic-info-section.tsx index b52774a4b..429557425 100644 --- a/apps/as/src/pages/instl-sncn/ui/sections/basic-info-section.tsx +++ b/apps/as/src/pages/instl-sncn/ui/sections/basic-info-section.tsx @@ -2,6 +2,7 @@ import { SectionCollapsible } from "@/shared/ui"; import type { InstlSncnMngResponseDto } from "@/entities/instl-sncn"; +import { PreviousPlanLookupButton } from "@/widgets/previous-plan-lookup"; import { Table, TableCell, TableHead, TableHeader, TableRow } from "@common/components"; interface BasicInfoSectionProps { @@ -11,6 +12,7 @@ interface BasicInfoSectionProps { function BasicInfoSection({ det }: BasicInfoSectionProps) { return ( +
diff --git a/apps/as/src/pages/sewer-bsc-plan/ui/sections/outline-form-section.tsx b/apps/as/src/pages/sewer-bsc-plan/ui/sections/outline-form-section.tsx index 2e1343aa9..bfdec93c7 100644 --- a/apps/as/src/pages/sewer-bsc-plan/ui/sections/outline-form-section.tsx +++ b/apps/as/src/pages/sewer-bsc-plan/ui/sections/outline-form-section.tsx @@ -1,15 +1,13 @@ "use client"; -import { useState } from "react"; import { useFormContext, useWatch } from "react-hook-form"; -import dynamic from "next/dynamic"; import { NON_NEGATIVE_INPUT_PROPS, sanitizeNumberInput } from "@/shared/lib"; import { SectionCollapsible } from "@/shared/ui"; import { Field } from "@/shared/ui/field"; import { truncateDecimals } from "@/widgets/pbadms-sprt"; +import { PreviousPlanLookupButton } from "@/widgets/previous-plan-lookup"; import { - Button, Input, Table, TableBody, @@ -21,14 +19,6 @@ import { import type { SewerBscPlanRegistFormData } from "../../lib/sewer-bsc-plan-regist-schema"; -const PreviousPlanLookupDialog = dynamic( - () => - import("../previous-plan-lookup-dialog").then((mod) => ({ - default: mod.PreviousPlanLookupDialog, - })), - { ssr: false }, -); - const OTLN_ROWS = [ { key: "sewerPlanPpltnCnt" as const, label: "계획인구", decimals: 0 }, { key: "sewerPrcsPpltnCnt" as const, label: "처리인구", decimals: 0 }, @@ -37,7 +27,6 @@ const OTLN_ROWS = [ function OutlineFormSection() { const { control, setValue, getValues } = useFormContext(); - const [isLookupOpen, setIsLookupOpen] = useState(false); const otlnList = useWatch({ control, name: "sewerBscPlanOtlnList" }) ?? []; const frlvlGoalYr = useWatch({ control, name: "sewerBscPlanDtl.frlvlGoalYr" }); @@ -74,11 +63,7 @@ function OutlineFormSection() { return ( -
- -
+
@@ -126,13 +111,6 @@ function OutlineFormSection() { ))}
- -
); } diff --git a/apps/as/src/pages/sewer-bsc-plan/ui/sections/outline-section.tsx b/apps/as/src/pages/sewer-bsc-plan/ui/sections/outline-section.tsx index 983c2237b..e5790cdb2 100644 --- a/apps/as/src/pages/sewer-bsc-plan/ui/sections/outline-section.tsx +++ b/apps/as/src/pages/sewer-bsc-plan/ui/sections/outline-section.tsx @@ -6,11 +6,14 @@ import type { SewerBscPlanOtlnResponseDto, } from "@/entities/sewer-bsc-plan"; import { fmtNumber } from "@/widgets/pbadms-sprt"; +import { PreviousPlanLookupButton } from "@/widgets/previous-plan-lookup"; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@common/components"; interface OutlineSectionProps { otlnList: SewerBscPlanOtlnResponseDto[]; dtl?: SewerBscPlanDtlResponseDto; + sido?: string | null; + gugun?: string | null; } const OTLN_ROWS = [ @@ -19,7 +22,7 @@ const OTLN_ROWS = [ { key: "sewerPsplyRt" as const, label: "하수도보급율" }, ]; -function OutlineSection({ otlnList, dtl }: OutlineSectionProps) { +function OutlineSection({ otlnList, dtl, sido, gugun }: OutlineSectionProps) { const stepHeaders = [ { planStpNo: 1, label: "1단계", year: dtl?.frlvlGoalYr }, { planStpNo: 2, label: "2단계", year: dtl?.sclvlGoalYr }, @@ -29,6 +32,7 @@ function OutlineSection({ otlnList, dtl }: OutlineSectionProps) { return ( + diff --git a/apps/as/src/pages/sewer-bsc-plan/ui/sewer-bsc-plan-view-page.tsx b/apps/as/src/pages/sewer-bsc-plan/ui/sewer-bsc-plan-view-page.tsx index 079f56198..6d27d6b40 100644 --- a/apps/as/src/pages/sewer-bsc-plan/ui/sewer-bsc-plan-view-page.tsx +++ b/apps/as/src/pages/sewer-bsc-plan/ui/sewer-bsc-plan-view-page.tsx @@ -114,7 +114,12 @@ function SewerBscPlanViewPage({ id, propChgCycl }: SewerBscPlanViewPageProps) { - + diff --git a/apps/as/src/widgets/previous-plan-lookup/index.ts b/apps/as/src/widgets/previous-plan-lookup/index.ts new file mode 100644 index 000000000..3bfc296a7 --- /dev/null +++ b/apps/as/src/widgets/previous-plan-lookup/index.ts @@ -0,0 +1,4 @@ +export { + PreviousPlanLookupButton, + type PreviousPlanLookupButtonProps, +} from "./ui/previous-plan-lookup-button"; diff --git a/apps/as/src/pages/sewer-bsc-plan/lib/previous-plan-table-utils.ts b/apps/as/src/widgets/previous-plan-lookup/lib/previous-plan-table-utils.ts similarity index 100% rename from apps/as/src/pages/sewer-bsc-plan/lib/previous-plan-table-utils.ts rename to apps/as/src/widgets/previous-plan-lookup/lib/previous-plan-table-utils.ts diff --git a/apps/as/src/widgets/previous-plan-lookup/ui/previous-plan-lookup-button.tsx b/apps/as/src/widgets/previous-plan-lookup/ui/previous-plan-lookup-button.tsx new file mode 100644 index 000000000..065ee6ab3 --- /dev/null +++ b/apps/as/src/widgets/previous-plan-lookup/ui/previous-plan-lookup-button.tsx @@ -0,0 +1,46 @@ +"use client"; + +import { useState } from "react"; +import dynamic from "next/dynamic"; + +import { Button } from "@common/components"; + +const PreviousPlanLookupDialog = dynamic( + () => + import("./previous-plan-lookup-dialog").then((mod) => ({ + default: mod.PreviousPlanLookupDialog, + })), + { ssr: false }, +); + +interface PreviousPlanLookupButtonProps { + /** 조회 다이얼로그 시도 초기값(표시명) */ + sidoNm?: string | null; + /** 조회 다이얼로그 시군구 초기값(표시명) */ + gugunNm?: string | null; +} + +/** 섹션 상단 우측에 [이전기본계획조회] 버튼과 조회 다이얼로그를 배치한다. */ +function PreviousPlanLookupButton({ sidoNm, gugunNm }: PreviousPlanLookupButtonProps) { + const [isOpen, setIsOpen] = useState(false); + + return ( + <> +
+ +
+ + + + ); +} + +export { PreviousPlanLookupButton }; +export type { PreviousPlanLookupButtonProps }; diff --git a/apps/as/src/pages/sewer-bsc-plan/ui/previous-plan-lookup-dialog.tsx b/apps/as/src/widgets/previous-plan-lookup/ui/previous-plan-lookup-dialog.tsx similarity index 82% rename from apps/as/src/pages/sewer-bsc-plan/ui/previous-plan-lookup-dialog.tsx rename to apps/as/src/widgets/previous-plan-lookup/ui/previous-plan-lookup-dialog.tsx index b2c854487..9f10f2dd4 100644 --- a/apps/as/src/pages/sewer-bsc-plan/ui/previous-plan-lookup-dialog.tsx +++ b/apps/as/src/widgets/previous-plan-lookup/ui/previous-plan-lookup-dialog.tsx @@ -51,7 +51,7 @@ function PreviousPlanLookupDialog({ const [gnsvyYr, setGnsvyYr] = useState(""); const [swtrmtFcltCd, setSwtrmtFcltCd] = useState(""); const [hasPrefillApplied, setHasPrefillApplied] = useState(false); - const [searchedClsfSystmNm, setSearchedClsfSystmNm] = useState(""); + const [hasGugunPrefillApplied, setHasGugunPrefillApplied] = useState(false); const { data: sidoData, isPending: isSidoPending } = useFindSidoCombo(); const { data: gugunData, isPending: isGugunPending } = useFindGugunCombo(sidoComCd); @@ -62,15 +62,19 @@ function PreviousPlanLookupDialog({ const ctpvNm = sidoOptions.find((option) => option.adstDstrCd === sidoComCd)?.adstDstrNm ?? ""; const sggNm = gugunOptions.find((option) => option.adstDstrCd === sggComCd)?.adstDstrNm ?? ""; + // 창 오픈 시 시도/시군구로 조회하고, 콤보 선택에 따라 파라미터가 추가되며 재조회된다. + // 빈 값은 서비스에서 제외되며, 시도가 없으면 조회하지 않는다. const searchParams = { - swtrmtFcltCd, ctpvNm, sggNm, targetYear: gnsvyYr, + swtrmtFcltCd, }; + const isSearchEnabled = open && hasGugunPrefillApplied && Boolean(ctpvNm); - const { data, isFetching, refetch } = useNowDmgMtncGnsvy(searchParams, false); - const planData = gnsvyYr && swtrmtFcltCd ? (data?.[0] ?? null) : null; + const { data, isFetching, refetch } = useNowDmgMtncGnsvy(searchParams, isSearchEnabled); + const planData = isSearchEnabled ? (data?.[0] ?? null) : null; + const clsfSystmNm = planData ? sggNm || ctpvNm : ""; const { data: yearTree, isPending: isYearPending } = useLvNowDmgMtncGnsvy({ level: "2", @@ -97,8 +101,8 @@ function PreviousPlanLookupDialog({ setSggComCd(""); setGnsvyYr(""); setSwtrmtFcltCd(""); - setSearchedClsfSystmNm(""); setHasPrefillApplied(false); + setHasGugunPrefillApplied(false); return; } }, [open]); @@ -115,12 +119,27 @@ function PreviousPlanLookupDialog({ setHasPrefillApplied(true); }, [open, hasPrefillApplied, isSidoPending, sidoOptions, initialSidoNm]); + // 시군구 초기값 적용이 끝난 뒤에 최초 조회가 나가도록 완료 여부를 표시한다. useEffect(() => { - if (!open || !sidoComCd || isGugunPending || !initialGugunNm) return; - if (sggComCd) return; + if (!open || !hasPrefillApplied || hasGugunPrefillApplied) return; + if (!sidoComCd || !initialGugunNm) { + setHasGugunPrefillApplied(true); + return; + } + if (isGugunPending) return; + const matchedGugun = gugunOptions.find((option) => option.adstDstrNm === initialGugunNm); if (matchedGugun) setSggComCd(matchedGugun.adstDstrCd); - }, [open, sidoComCd, isGugunPending, gugunOptions, initialGugunNm, sggComCd]); + setHasGugunPrefillApplied(true); + }, [ + open, + hasPrefillApplied, + hasGugunPrefillApplied, + sidoComCd, + isGugunPending, + gugunOptions, + initialGugunNm, + ]); function handleSidoChange(value: string) { setSidoComCd(value); @@ -145,18 +164,18 @@ function PreviousPlanLookupDialog({ } async function handleSearch() { + if (!ctpvNm) { + alert("시도를 선택하세요."); + return; + } const { data: list, error } = await refetch(); if (error) { alert("데이터 조회 중 오류가 발생했습니다."); - setSearchedClsfSystmNm(""); return; } if (!list?.length) { alert("조회된 데이터가 없습니다."); - setSearchedClsfSystmNm(""); - return; } - setSearchedClsfSystmNm(sggNm || ctpvNm); } return ( @@ -198,8 +217,8 @@ function PreviousPlanLookupDialog({ diff --git a/apps/as/src/pages/sewer-bsc-plan/ui/previous-plan/previous-plan-area-table.tsx b/apps/as/src/widgets/previous-plan-lookup/ui/previous-plan/previous-plan-area-table.tsx similarity index 100% rename from apps/as/src/pages/sewer-bsc-plan/ui/previous-plan/previous-plan-area-table.tsx rename to apps/as/src/widgets/previous-plan-lookup/ui/previous-plan/previous-plan-area-table.tsx diff --git a/apps/as/src/pages/sewer-bsc-plan/ui/previous-plan/previous-plan-file-section.tsx b/apps/as/src/widgets/previous-plan-lookup/ui/previous-plan/previous-plan-file-section.tsx similarity index 100% rename from apps/as/src/pages/sewer-bsc-plan/ui/previous-plan/previous-plan-file-section.tsx rename to apps/as/src/widgets/previous-plan-lookup/ui/previous-plan/previous-plan-file-section.tsx diff --git a/apps/as/src/pages/sewer-bsc-plan/ui/previous-plan/previous-plan-search-filters.tsx b/apps/as/src/widgets/previous-plan-lookup/ui/previous-plan/previous-plan-search-filters.tsx similarity index 100% rename from apps/as/src/pages/sewer-bsc-plan/ui/previous-plan/previous-plan-search-filters.tsx rename to apps/as/src/widgets/previous-plan-lookup/ui/previous-plan/previous-plan-search-filters.tsx diff --git a/apps/as/src/pages/sewer-bsc-plan/ui/previous-plan/previous-plan-summary-table.tsx b/apps/as/src/widgets/previous-plan-lookup/ui/previous-plan/previous-plan-summary-table.tsx similarity index 100% rename from apps/as/src/pages/sewer-bsc-plan/ui/previous-plan/previous-plan-summary-table.tsx rename to apps/as/src/widgets/previous-plan-lookup/ui/previous-plan/previous-plan-summary-table.tsx