From 23d62ab5e63b25ae65569e6987f560d5d932d376 Mon Sep 17 00:00:00 2001 From: jangwoong Date: Fri, 23 Oct 2026 15:20:07 +0900 Subject: [PATCH] =?UTF-8?q?[as=20fr]=20=EB=A6=AC=EC=8A=A4=ED=8A=B8?= =?UTF-8?q?=EC=97=90=EC=84=9C=20=EB=B7=B0=EB=A1=9C=20=EB=93=A4=EC=96=B4?= =?UTF-8?q?=EA=B0=88=EA=B2=BD=EC=9A=B0=EC=97=90=20TanStack=20Query(React?= =?UTF-8?q?=20Query)=20=EC=BA=90=EC=8B=9C=20=EC=8B=9C=EC=8A=A4=ED=85=9C?= =?UTF-8?q?=EA=B3=BC=EC=9D=98=20=EC=B6=A9=EB=8F=8C=20=EC=97=AC=EB=B6=80=20?= =?UTF-8?q?=EB=B0=8F=20=EC=9B=B9=ED=95=9C=EA=B8=80=EA=B8=B0=EC=95=88?= =?UTF-8?q?=EA=B8=B0=20=EB=93=B1=20=EC=9D=B8=EC=A0=91=20=EA=B8=B0=EB=8A=A5?= =?UTF-8?q?=EC=97=90=20=EB=AF=B8=EC=B9=98=EB=8A=94=20=EC=98=81=ED=96=A5?= =?UTF-8?q?=EC=9D=84=20=EA=B2=80=ED=86=A0=ED=95=9C=20=EB=92=A4=20=EC=8B=A4?= =?UTF-8?q?=EC=A7=88=EC=A0=81=EC=9D=B8=20=ED=95=B4=EA=B2=B0=20=EB=B0=A9?= =?UTF-8?q?=EC=95=88=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/entities/design-cnstn/api/queries.ts | 12 +++-- .../src/entities/fnrs-cnsltn/api/queries.ts | 4 ++ .../as/src/entities/instl-sncn/api/queries.ts | 2 + .../entities/sewer-bsc-plan/api/queries.ts | 4 ++ .../design-cnstn/ui/design-view-page.tsx | 20 ++++++-- .../components/pwrk-cnsltn-doc-mng-dialog.tsx | 3 ++ .../pages/fnrs-cnsltn/ui/fnrs-view-page.tsx | 48 ++++++++++++------- .../pages/instl-sncn/ui/instl-view-page.tsx | 20 ++++++-- .../ui/sewer-bsc-plan-view-page.tsx | 20 ++++++-- packages/common/network/client.ts | 2 + 10 files changed, 105 insertions(+), 30 deletions(-) diff --git a/apps/as/src/entities/design-cnstn/api/queries.ts b/apps/as/src/entities/design-cnstn/api/queries.ts index 7a04eb8d8..eb301e2e4 100644 --- a/apps/as/src/entities/design-cnstn/api/queries.ts +++ b/apps/as/src/entities/design-cnstn/api/queries.ts @@ -1,5 +1,10 @@ import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; +import type { + DesignCnstnApplySaveRequestDto, + DesignCnstnMngSaveRequestDto, + DesignCnstnRvwOpnnSaveRequestDto, +} from "../model/design-cnstn-apply-payload-schema"; import type { DesignCnstnBizCstSaveRequestDto, DesignCnstnBizCstSearchDto, @@ -15,11 +20,6 @@ import type { DesignCnstnEsntlAtchFileSearchDto, DesignCnstnEsntlAtchFileUpdateRequestDto, } from "../model/design-cnstn-esntl-atch-file-interface"; -import type { - DesignCnstnApplySaveRequestDto, - DesignCnstnMngSaveRequestDto, - DesignCnstnRvwOpnnSaveRequestDto, -} from "../model/design-cnstn-apply-payload-schema"; import type { DesignCnstnMngSearchDto, DesignCnstnMngUpdateRequestDto, @@ -83,6 +83,8 @@ export function useDesignCnstnMng(id: string | null | undefined) { queryKey: designCnstnKeys.detail(id!), queryFn: () => designCnstnMngService.findById(id!), enabled: Boolean(id), + staleTime: 0, + refetchOnMount: "always", }); } diff --git a/apps/as/src/entities/fnrs-cnsltn/api/queries.ts b/apps/as/src/entities/fnrs-cnsltn/api/queries.ts index e136bd59f..7e29ba38b 100644 --- a/apps/as/src/entities/fnrs-cnsltn/api/queries.ts +++ b/apps/as/src/entities/fnrs-cnsltn/api/queries.ts @@ -35,6 +35,8 @@ export function useFnrsCnsltnMng(fnrsCnsltnDocNo: string | null | undefined) { queryKey: fnrsCnsltnKeys.detail(fnrsCnsltnDocNo!), queryFn: () => fnrsCnsltnMngService.findById(fnrsCnsltnDocNo!), enabled: Boolean(fnrsCnsltnDocNo), + staleTime: 0, + refetchOnMount: "always", }); } @@ -43,6 +45,8 @@ export function useFnrsCnsltnFileVrfcResults(fnrsCnsltnDocNo: string | null | un queryKey: fnrsCnsltnKeys.fileVrfcResults(fnrsCnsltnDocNo!), queryFn: () => fnrsCnsltnMngService.findFileVrfcResults(fnrsCnsltnDocNo!), enabled: Boolean(fnrsCnsltnDocNo), + staleTime: 0, + refetchOnMount: "always", }); } diff --git a/apps/as/src/entities/instl-sncn/api/queries.ts b/apps/as/src/entities/instl-sncn/api/queries.ts index 278277668..b01c0c892 100644 --- a/apps/as/src/entities/instl-sncn/api/queries.ts +++ b/apps/as/src/entities/instl-sncn/api/queries.ts @@ -35,6 +35,8 @@ export function useInstlSncnDetail(id: string) { queryKey: instlSncnKeys.detail(id), queryFn: () => instlSncnService.getById(id), enabled: Boolean(id), + staleTime: 0, + refetchOnMount: "always", }); } diff --git a/apps/as/src/entities/sewer-bsc-plan/api/queries.ts b/apps/as/src/entities/sewer-bsc-plan/api/queries.ts index 32808b49f..5afd9bebd 100644 --- a/apps/as/src/entities/sewer-bsc-plan/api/queries.ts +++ b/apps/as/src/entities/sewer-bsc-plan/api/queries.ts @@ -33,6 +33,8 @@ export function useSewerBscPlan(sewerBscPlanDocNo: string | null | undefined) { queryKey: sewerBscPlanKeys.detail(sewerBscPlanDocNo!), queryFn: () => sewerBscPlanService.findById(sewerBscPlanDocNo!), enabled: Boolean(sewerBscPlanDocNo), + staleTime: 0, + refetchOnMount: "always", }); } @@ -44,6 +46,8 @@ export function useSewerBscPlanDetails( queryKey: sewerBscPlanKeys.details(sewerBscPlanDocNo!, chgCycl ?? undefined), queryFn: () => sewerBscPlanService.findDetails(sewerBscPlanDocNo!, chgCycl!), enabled: Boolean(sewerBscPlanDocNo) && chgCycl != null, + staleTime: 0, + refetchOnMount: "always", }); } diff --git a/apps/as/src/pages/design-cnstn/ui/design-view-page.tsx b/apps/as/src/pages/design-cnstn/ui/design-view-page.tsx index 4dc1d018e..906d9172c 100644 --- a/apps/as/src/pages/design-cnstn/ui/design-view-page.tsx +++ b/apps/as/src/pages/design-cnstn/ui/design-view-page.tsx @@ -2,13 +2,15 @@ import { useMemo, useRef } from "react"; +import { RefreshCw } from "lucide-react"; + import { useUserStore } from "@/shared/lib"; import { SectionCollapsibleGroup, SectionCollapsibleToggle } from "@/shared/ui"; import { useDesignCnstnMng } from "@/entities/design-cnstn"; import { ElaprDocPrgrsStatus } from "@/entities/elapr"; import { useRvwMnpwMngLoginUserList } from "@/entities/rvw-mnpw"; import { AttachmentsViewSection, ProgressStatusSection } from "@/widgets/pbadms-sprt"; -import { Skeleton } from "@common/components"; +import { Button, cn, Skeleton } from "@common/components"; import { needsRoleUser01AtrzResolve } from "../lib/button-config"; import { getEditableReviewStep } from "../lib/review-step-utils"; @@ -30,7 +32,7 @@ interface DesignViewPageProps { function DesignViewPage({ id }: DesignViewPageProps) { const userInfo = useUserStore((state) => state.userInfo); const techReviewOpinionRef = useRef(null); - const { data, isLoading, isError } = useDesignCnstnMng(id); + const { data, isLoading, isError, refetch, isFetching } = useDesignCnstnMng(id); const prgrsSttsComCd = data?.detDto?.prgrsSttsComCd || ""; const needsAtrzResolve = needsRoleUser01AtrzResolve(userInfo?.dtlInstCd, prgrsSttsComCd); @@ -83,8 +85,20 @@ function DesignViewPage({ id }: DesignViewPageProps) { return (
-
+
+
response.data, enabled: open && Boolean(crtDmndUuid), + staleTime: Infinity, + refetchOnWindowFocus: false, + refetchOnMount: false, }); const branchLabel = isForkJoin diff --git a/apps/as/src/pages/fnrs-cnsltn/ui/fnrs-view-page.tsx b/apps/as/src/pages/fnrs-cnsltn/ui/fnrs-view-page.tsx index 8c7664398..64590d7f3 100644 --- a/apps/as/src/pages/fnrs-cnsltn/ui/fnrs-view-page.tsx +++ b/apps/as/src/pages/fnrs-cnsltn/ui/fnrs-view-page.tsx @@ -2,6 +2,8 @@ import { useMemo, useRef } from "react"; +import { RefreshCw } from "lucide-react"; + import { useUserStore } from "@/shared/lib"; import { SectionCollapsibleGroup, SectionCollapsibleToggle, TextShimmer } from "@/shared/ui"; import { ElaprDocPrgrsStatus } from "@/entities/elapr"; @@ -12,7 +14,7 @@ import { ProgressStatusSection, SupplementDemandSection, } from "@/widgets/pbadms-sprt"; -import { Skeleton } from "@common/components"; +import { Button, cn, Skeleton } from "@common/components"; import { getAiPendingMessage, @@ -20,8 +22,8 @@ import { isRagIndexingInProgress, } from "../lib/ai-pending-utils"; import { needsRoleUser01AtrzResolve } from "../lib/button-config"; -import { getEditableReviewStep } from "../lib/review-step-utils"; import { normalizeTaskSeComCdForElapr } from "../lib/fnrs-cnsltn-regist-schema"; +import { getEditableReviewStep } from "../lib/review-step-utils"; import { EMPTY_CKLST_RESULT_LIST, useChecklistFormState } from "../lib/use-checklist-form-state"; import { PROGRESS_STATUS_COLUMNS } from "../model/columns"; @@ -44,7 +46,7 @@ interface FnrsViewPageProps { function FnrsViewPage({ id }: FnrsViewPageProps) { const userInfo = useUserStore((state) => state.userInfo); const techReviewOpinionRef = useRef(null); - const { data, isLoading, isError } = useFnrsCnsltnMng(id); + const { data, isLoading, isError, refetch, isFetching } = useFnrsCnsltnMng(id); const { formState: checklistFormState, setFormState: setChecklistFormState } = useChecklistFormState(data?.cklstResultList ?? EMPTY_CKLST_RESULT_LIST); @@ -109,19 +111,33 @@ function FnrsViewPage({ id }: FnrsViewPageProps) { return (
-
- - {showPendingBanner && ( -
- - - - - - {pendingMessage} - -
- )} +
+
+ + + {showPendingBanner && ( +
+ + + + + + {pendingMessage} + +
+ )} +
state.userInfo); const techReviewOpinionRef = useRef(null); - const { data, isLoading, isError } = useInstlSncnDetail(id); + const { data, isLoading, isError, refetch, isFetching } = useInstlSncnDetail(id); const { formState: checklistFormState } = useChecklistFormState( data?.cklstResultList ?? EMPTY_CKLST_RESULT_LIST, ); @@ -94,8 +96,20 @@ function InstlViewPage({ id }: InstlViewPageProps) { return (
-
+
+
state.userInfo); const techReviewOpinionRef = useRef(null); const chgCycl = propChgCycl ?? 1; - const { data, isLoading, isError } = useSewerBscPlanDetails(id, chgCycl); + const { data, isLoading, isError, refetch, isFetching } = useSewerBscPlanDetails(id, chgCycl); const { formState: checklistFormState, setFormState: setChecklistFormState } = useChecklistFormState(data?.cklstResultRows ?? EMPTY_CKLST_RESULT_LIST); @@ -102,8 +104,20 @@ function SewerBscPlanViewPage({ id, propChgCycl }: SewerBscPlanViewPageProps) { return (
-
+
+