From acf215c1bf4aaf7bb86461fe34b1ed2d26d1f62e Mon Sep 17 00:00:00 2001 From: jcchoi Date: Tue, 20 Oct 2026 10:45:29 +0900 Subject: [PATCH 1/5] =?UTF-8?q?=EB=8C=80=EC=8B=9C=EB=B3=B4=EB=93=9C=20?= =?UTF-8?q?=EC=9D=B4=EC=83=81=EC=B9=98=EC=84=A0=EB=B3=84=EB=B3=B4=EA=B3=A0?= =?UTF-8?q?=EC=84=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../model/dashboard/dashboard-interface.ts | 200 ++++++------- .../ui/panels/vrfc-report-panel.tsx | 266 +++++++++--------- 2 files changed, 233 insertions(+), 233 deletions(-) diff --git a/apps/st/src/entities/statistics/model/dashboard/dashboard-interface.ts b/apps/st/src/entities/statistics/model/dashboard/dashboard-interface.ts index 19a1be4d5..c2df2922e 100644 --- a/apps/st/src/entities/statistics/model/dashboard/dashboard-interface.ts +++ b/apps/st/src/entities/statistics/model/dashboard/dashboard-interface.ts @@ -1,100 +1,100 @@ -export interface DashboardSearchParams { - statsYr: string; - dtlInstCd: string; - enoCd?: string; - laeSeCd?: string; - sewerBzmnCd?: string; - sido?: string; - sggNm?: string; - unSubmitOnly?: boolean; -} - -export interface DashboardApiResponse { - status: string; - message: string; - data: T; - code: string; - httpStatus: number; -} - -export interface VrfcReportResponse { - typeCounts: Record; - list: VrfcReportSelect[]; -} - -export interface VrfcReportSelect { - vrfcCd: string; - statsNm: string; - rsnExpln: string; - admdstNm: string; - nowVlCn: string; - compVlCn: string; -} - -export interface VrfcErrCountResponse { - statsYr: string; - vrfcErrCount: number; -} - -export interface UnSubmitCountResponse { - statsYr: string; - statusList: UnSubmitStatsResponse[]; - submittedCount: number; - totalCount: number; - unSubmittedCount: number; -} - -export interface UnSubmitStatsResponse { - sbmsnYn: string; - sidoSggNm: string; - statsCd: string; - statsNm: string; - statusCd: string; - statusNm: string; -} - -export interface StatsSubmissionResponse { - totalCount: number; - submittedCount: number; - submissionRate: number; - statusLevel: string; -} - -export interface EcptReqCountResponse { - statsYr: string; - ecptReqCount: number; -} - -export interface ThreeStageStatusResponse { - statsYr: string; - lclgvSbmsnSttsCd: string; - lclgvSbmsnSttsNm: string; - lclgvRejected: boolean; - mctpvPicSbmsnSttsCd: string; - mctpvPicSbmsnSttsNm: string; - mctpvRejected: boolean; - pbcpSbmsnSttsCd: string; - pbcpSbmsnSttsNm: string; - pbcpRejected: boolean; -} - -export interface DashboardService { - getVrfcReport( - params: DashboardSearchParams, - ): Promise>; - getVrfcErrCount( - params: DashboardSearchParams, - ): Promise>; - getUnSubmitCount( - params: DashboardSearchParams, - ): Promise>; - getStatsSubmissionRate( - params: DashboardSearchParams, - ): Promise>; - getEcptReqCount( - params: DashboardSearchParams, - ): Promise>; - getThreeStageStatus( - params: DashboardSearchParams, - ): Promise>; -} +export interface DashboardSearchParams { + statsYr: string; + dtlInstCd: string; + enoCd?: string; + laeSeCd?: string; + sewerBzmnCd?: string; + sido?: string; + sggNm?: string; + unSubmitOnly?: boolean; +} + +export interface DashboardApiResponse { + status: string; + message: string; + data: T; + code: string; + httpStatus: number; +} + +export interface VrfcReportResponse { + typeCounts: Record; + list: VrfcReportSelect[]; +} + +export interface VrfcReportSelect { + vrfcCd: string; + statsNm: string; + rsnExpln: string; + admdstNm: string; + nowCN: string; + cmprCn: string | null; +} + +export interface VrfcErrCountResponse { + statsYr: string; + vrfcErrCount: number; +} + +export interface UnSubmitCountResponse { + statsYr: string; + statusList: UnSubmitStatsResponse[]; + submittedCount: number; + totalCount: number; + unSubmittedCount: number; +} + +export interface UnSubmitStatsResponse { + sbmsnYn: string; + sidoSggNm: string; + statsCd: string; + statsNm: string; + statusCd: string; + statusNm: string; +} + +export interface StatsSubmissionResponse { + totalCount: number; + submittedCount: number; + submissionRate: number; + statusLevel: string; +} + +export interface EcptReqCountResponse { + statsYr: string; + ecptReqCount: number; +} + +export interface ThreeStageStatusResponse { + statsYr: string; + lclgvSbmsnSttsCd: string; + lclgvSbmsnSttsNm: string; + lclgvRejected: boolean; + mctpvPicSbmsnSttsCd: string; + mctpvPicSbmsnSttsNm: string; + mctpvRejected: boolean; + pbcpSbmsnSttsCd: string; + pbcpSbmsnSttsNm: string; + pbcpRejected: boolean; +} + +export interface DashboardService { + getVrfcReport( + params: DashboardSearchParams, + ): Promise>; + getVrfcErrCount( + params: DashboardSearchParams, + ): Promise>; + getUnSubmitCount( + params: DashboardSearchParams, + ): Promise>; + getStatsSubmissionRate( + params: DashboardSearchParams, + ): Promise>; + getEcptReqCount( + params: DashboardSearchParams, + ): Promise>; + getThreeStageStatus( + params: DashboardSearchParams, + ): Promise>; +} diff --git a/apps/st/src/pages/statistics/ui/panels/vrfc-report-panel.tsx b/apps/st/src/pages/statistics/ui/panels/vrfc-report-panel.tsx index 1463cc035..7fdb26b74 100644 --- a/apps/st/src/pages/statistics/ui/panels/vrfc-report-panel.tsx +++ b/apps/st/src/pages/statistics/ui/panels/vrfc-report-panel.tsx @@ -1,133 +1,133 @@ -"use client"; - -import { useDashboardVrfcReport } from "@/entities/statistics"; -import type { DashboardSearchParams } from "@/entities/statistics/model/dashboard/dashboard-interface"; -import { - Badge, - type BadgeProps, - LoadingWithAnimation, -} from "@common/components"; - -import { useDragHandle } from "../sortable-panel"; - -interface VrfcReportPanelProps { - params: DashboardSearchParams | null; -} - -const TYPE_CODE_NAME_MAP: Record = { - NV: "일반", - IMR: "I-MR", - HB: "HB", -}; - -const TYPE_CODE_COLOR_MAP: Record = { - NV: "gray", - IMR: "red", - HB: "blue", -}; - -export function VrfcReportPanel({ params }: VrfcReportPanelProps) { - const { dragHandleProps, isDragging } = useDragHandle(); - const { data, isLoading, error } = useDashboardVrfcReport(params); - - return ( -
-
-

이상치 선별보고서

-
-
- {isLoading && ( -
-
- -
-
- )} - {error && ( -
- 데이터를 불러올 수 없습니다. -
- )} - {data && ( -
- {/* TBD: typeCounts 표시 방법 (탭? 필터?) */} - {data.typeCounts && - Object.keys(data.typeCounts).length > 0 && ( -
- {Object.entries(data.typeCounts).map( - ([type, count]) => ( - - {TYPE_CODE_NAME_MAP[type]}:{" "} - {count} - - ), - )} -
- )} - - {/* TBD: 테이블 컬럼 정의, 증감 표시 방법 */} -
- {data.list.length === 0 ? ( -
- 이상치 항목이 없습니다. -
- ) : ( -
- {data.list.map((item, index) => ( -
-
- - {item.statsNm} - - - { - TYPE_CODE_NAME_MAP[ - item.vrfcCd - ] - } - -
-

- {item.rsnExpln} -

-
- {item.admdstNm} - - {/* TBD: 증감 표시 방법 (nowVlCn - compVlCn 계산?) */} - 현재: {item.nowVlCn ?? "-"}{" "} - / 비교:{" "} - {item.compVlCn ?? "-"} - -
- {/* TBD: 등급/점수/단계/업데이트 시각 필드 미제공 */} -
- ))} -
- )} -
-
- )} -
-
- ); -} +"use client"; + +import { useDashboardVrfcReport } from "@/entities/statistics"; +import type { DashboardSearchParams } from "@/entities/statistics/model/dashboard/dashboard-interface"; +import { + Badge, + type BadgeProps, + LoadingWithAnimation, +} from "@common/components"; + +import { useDragHandle } from "../sortable-panel"; + +interface VrfcReportPanelProps { + params: DashboardSearchParams | null; +} + +const TYPE_CODE_NAME_MAP: Record = { + NV: "일반", + IMR: "I-MR", + HB: "HB", +}; + +const TYPE_CODE_COLOR_MAP: Record = { + NV: "gray", + IMR: "red", + HB: "blue", +}; + +export function VrfcReportPanel({ params }: VrfcReportPanelProps) { + const { dragHandleProps, isDragging } = useDragHandle(); + const { data, isLoading, error } = useDashboardVrfcReport(params); + + return ( +
+
+

이상치 선별보고서

+
+
+ {isLoading && ( +
+
+ +
+
+ )} + {error && ( +
+ 데이터를 불러올 수 없습니다. +
+ )} + {data && ( +
+ {/* TBD: typeCounts 표시 방법 (탭? 필터?) */} + {data.typeCounts && + Object.keys(data.typeCounts).length > 0 && ( +
+ {Object.entries(data.typeCounts).map( + ([type, count]) => ( + + {TYPE_CODE_NAME_MAP[type]}:{" "} + {count} + + ), + )} +
+ )} + + {/* TBD: 테이블 컬럼 정의, 증감 표시 방법 */} +
+ {data.list.length === 0 ? ( +
+ 이상치 항목이 없습니다. +
+ ) : ( +
+ {data.list.map((item, index) => ( +
+
+ + {item.statsNm} + + + { + TYPE_CODE_NAME_MAP[ + item.vrfcCd + ] + } + +
+

+ {item.rsnExpln} +

+
+ {item.admdstNm} + + {/* TBD: 증감 표시 방법 (nowCN - cmprCn 계산?) */} + 현재: {item.nowCN ?? "-"}{" "} + / 비교:{" "} + {item.cmprCn ?? "-"} + +
+ {/* TBD: 등급/점수/단계/업데이트 시각 필드 미제공 */} +
+ ))} +
+ )} +
+
+ )} +
+
+ ); +} From a5ebc125802ccca7b7fe1b65827a9e27b688e520 Mon Sep 17 00:00:00 2001 From: jcchoi Date: Tue, 20 Oct 2026 13:48:39 +0900 Subject: [PATCH 2/5] =?UTF-8?q?=EA=B2=80=ED=86=A0=EC=9D=98=EA=B2=AC=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=20=EC=98=A4=EB=A5=98=20=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui/sections/tech-review-opinion-section.tsx | 6 ++---- .../ui/sections/tech-review-opinion-section.tsx | 8 +++----- .../ui/sections/tech-review-opinion-section.tsx | 8 +++----- .../ui/sections/tech-review-opinion-section.tsx | 8 +++----- .../as/src/widgets/pbadms-sprt/ui/rvw-opnn-list-table.tsx | 5 +---- 5 files changed, 12 insertions(+), 23 deletions(-) diff --git a/apps/as/src/pages/design-cnstn/ui/sections/tech-review-opinion-section.tsx b/apps/as/src/pages/design-cnstn/ui/sections/tech-review-opinion-section.tsx index f63db2fbe..93a86c89c 100644 --- a/apps/as/src/pages/design-cnstn/ui/sections/tech-review-opinion-section.tsx +++ b/apps/as/src/pages/design-cnstn/ui/sections/tech-review-opinion-section.tsx @@ -50,7 +50,6 @@ export interface TechReviewOpinionSectionHandle { interface TechReviewOpinionTableProps { items: DesignCnstnRvwOpnnResponseDto[]; - isReviewTurn: boolean; } interface UploadedOpinionFile { @@ -296,7 +295,7 @@ const TechReviewOpinionSection = forwardRef<
{kecoRvwList.length > 0 ? ( - + ) : null} {renderOpinionForm("KECO")}
@@ -311,7 +310,7 @@ function getRvwOpnnIds(item: DesignCnstnRvwOpnnResponseDto) { return [item.designCnstnDocNo, item.rvwOpnnSn] as const; } -function TechReviewOpinionTable({ items, isReviewTurn }: TechReviewOpinionTableProps) { +function TechReviewOpinionTable({ items }: TechReviewOpinionTableProps) { const queryClient = useQueryClient(); const currentUserUuid = useUserStore((state) => state.userInfo?.userUnqId); @@ -320,7 +319,6 @@ function TechReviewOpinionTable({ items, isReviewTurn }: TechReviewOpinionTableP items={items} getRowKey={(item) => `${item.designCnstnDocNo}_${item.rvwOpnnSn}`} currentUserUuid={currentUserUuid} - isReviewTurn={isReviewTurn} onUpdate={async (item, body) => { await designCnstnRvwOpnnService.update(...getRvwOpnnIds(item), body); await queryClient.invalidateQueries({ queryKey: designCnstnKeys.all }); diff --git a/apps/as/src/pages/fnrs-cnsltn/ui/sections/tech-review-opinion-section.tsx b/apps/as/src/pages/fnrs-cnsltn/ui/sections/tech-review-opinion-section.tsx index 999519e30..1b61b4b67 100644 --- a/apps/as/src/pages/fnrs-cnsltn/ui/sections/tech-review-opinion-section.tsx +++ b/apps/as/src/pages/fnrs-cnsltn/ui/sections/tech-review-opinion-section.tsx @@ -48,7 +48,6 @@ export interface TechReviewOpinionSectionHandle { interface TechReviewOpinionTableProps { items: FnrsCnsltnRvwOpnnResponseDto[]; - isReviewTurn: boolean; } interface UploadedOpinionFile { @@ -292,7 +291,7 @@ const TechReviewOpinionSection = forwardRef<
{envRvwList.length > 0 ? ( - + ) : null} {renderOpinionForm("ENV")}
@@ -302,7 +301,7 @@ const TechReviewOpinionSection = forwardRef<
{kecoRvwList.length > 0 ? ( - + ) : null} {/* 재원협의에서 환경공단 검토의견은 자동 생성 @@ -322,7 +321,7 @@ function getRvwOpnnIds(item: FnrsCnsltnRvwOpnnResponseDto) { return [item.fnrsCnsltnDocNo, item.rvwOpnnSn] as const; } -function TechReviewOpinionTable({ items, isReviewTurn }: TechReviewOpinionTableProps) { +function TechReviewOpinionTable({ items }: TechReviewOpinionTableProps) { const queryClient = useQueryClient(); const currentUserUuid = useUserStore((state) => state.userInfo?.userUnqId); @@ -331,7 +330,6 @@ function TechReviewOpinionTable({ items, isReviewTurn }: TechReviewOpinionTableP items={items} getRowKey={(item) => `${item.fnrsCnsltnDocNo}_${item.rvwOpnnSn}`} currentUserUuid={currentUserUuid} - isReviewTurn={isReviewTurn} onUpdate={async (item, body) => { await fnrsCnsltnRvwOpnnService.update(...getRvwOpnnIds(item), body); await queryClient.invalidateQueries({ queryKey: fnrsCnsltnKeys.all }); diff --git a/apps/as/src/pages/instl-sncn/ui/sections/tech-review-opinion-section.tsx b/apps/as/src/pages/instl-sncn/ui/sections/tech-review-opinion-section.tsx index 2f37e8f2d..ba4d885fc 100644 --- a/apps/as/src/pages/instl-sncn/ui/sections/tech-review-opinion-section.tsx +++ b/apps/as/src/pages/instl-sncn/ui/sections/tech-review-opinion-section.tsx @@ -47,7 +47,6 @@ export interface TechReviewOpinionSectionHandle { interface TechReviewOpinionTableProps { items: InstlSncnRvwOpnnResponseDto[]; - isReviewTurn: boolean; } interface UploadedOpinionFile { @@ -300,7 +299,7 @@ const TechReviewOpinionSection = forwardRef<
{envRvwList.length > 0 ? ( - + ) : null} {renderOpinionForm("ENV")}
@@ -310,7 +309,7 @@ const TechReviewOpinionSection = forwardRef<
{kecoRvwList.length > 0 ? ( - + ) : null} {renderOpinionForm("KECO")}
@@ -327,7 +326,7 @@ function getRvwOpnnIds(item: InstlSncnRvwOpnnResponseDto) { return [item.instlSncnDocNo, item.rvwOpnnSn] as const; } -function TechReviewOpinionTable({ items, isReviewTurn }: TechReviewOpinionTableProps) { +function TechReviewOpinionTable({ items }: TechReviewOpinionTableProps) { const queryClient = useQueryClient(); const currentUserUuid = useUserStore((state) => state.userInfo?.userUnqId); @@ -336,7 +335,6 @@ function TechReviewOpinionTable({ items, isReviewTurn }: TechReviewOpinionTableP items={items} getRowKey={(item) => `${item.instlSncnDocNo}_${item.rvwOpnnSn}`} currentUserUuid={currentUserUuid} - isReviewTurn={isReviewTurn} onUpdate={async (item, body) => { await instlSncnRvwOpnnService.update(...getRvwOpnnIds(item), body); await queryClient.invalidateQueries({ queryKey: instlSncnKeys.all }); diff --git a/apps/as/src/pages/sewer-bsc-plan/ui/sections/tech-review-opinion-section.tsx b/apps/as/src/pages/sewer-bsc-plan/ui/sections/tech-review-opinion-section.tsx index 211f120f5..3485ec5c0 100644 --- a/apps/as/src/pages/sewer-bsc-plan/ui/sections/tech-review-opinion-section.tsx +++ b/apps/as/src/pages/sewer-bsc-plan/ui/sections/tech-review-opinion-section.tsx @@ -50,7 +50,6 @@ export interface TechReviewOpinionSectionHandle { interface TechReviewOpinionTableProps { items: SewerBscPlanRvwOpnnResponseDto[]; - isReviewTurn: boolean; } interface UploadedOpinionFile { @@ -304,7 +303,7 @@ const TechReviewOpinionSection = forwardRef<
{envRvwList.length > 0 ? ( - + ) : null} {renderOpinionForm("ENV")}
@@ -314,7 +313,7 @@ const TechReviewOpinionSection = forwardRef<
{kecoRvwList.length > 0 ? ( - + ) : null} {renderOpinionForm("KECO")}
@@ -331,7 +330,7 @@ function getRvwOpnnIds(item: SewerBscPlanRvwOpnnResponseDto) { return [item.sewerBscPlanDocNo, item.chgCycl, item.rvwOpnnSn] as const; } -function TechReviewOpinionTable({ items, isReviewTurn }: TechReviewOpinionTableProps) { +function TechReviewOpinionTable({ items }: TechReviewOpinionTableProps) { const queryClient = useQueryClient(); const currentUserUuid = useUserStore((state) => state.userInfo?.userUnqId); @@ -340,7 +339,6 @@ function TechReviewOpinionTable({ items, isReviewTurn }: TechReviewOpinionTableP items={items} getRowKey={(item) => `${item.sewerBscPlanDocNo}_${item.rvwOpnnSn}`} currentUserUuid={currentUserUuid} - isReviewTurn={isReviewTurn} onUpdate={async (item, body) => { await sewerBscPlanRvwOpnnService.update(...getRvwOpnnIds(item), body); await queryClient.invalidateQueries({ queryKey: sewerBscPlanKeys.all }); diff --git a/apps/as/src/widgets/pbadms-sprt/ui/rvw-opnn-list-table.tsx b/apps/as/src/widgets/pbadms-sprt/ui/rvw-opnn-list-table.tsx index 0ba0275fc..225bcacdc 100644 --- a/apps/as/src/widgets/pbadms-sprt/ui/rvw-opnn-list-table.tsx +++ b/apps/as/src/widgets/pbadms-sprt/ui/rvw-opnn-list-table.tsx @@ -45,8 +45,6 @@ interface RvwOpnnListTableProps { getRowKey: (item: T) => string; /** 로그인 사용자 UUID — 검토의견 등록자(rgtr)와 같을 때만 수정·삭제 버튼 노출 */ currentUserUuid?: string; - /** 현재 검토 단계가 로그인 사용자 차례인지 여부 — false면 등록자라도 수정·삭제 불가 */ - isReviewTurn?: boolean; onUpdate: (item: T, body: RvwOpnnUpdateRequestDto) => Promise; onDelete: (item: T) => Promise; } @@ -76,7 +74,6 @@ function RvwOpnnListTable({ items, getRowKey, currentUserUuid, - isReviewTurn = false, onUpdate, onDelete, }: RvwOpnnListTableProps) { @@ -102,7 +99,7 @@ function RvwOpnnListTable({ const editFileUploading = editFile ? (isUploading[editFile.fileKey] ?? false) : false; function canModify(item: T) { - return isReviewTurn && Boolean(currentUserUuid) && item.rgtr === currentUserUuid; + return Boolean(currentUserUuid) && item.rgtr === currentUserUuid; } async function discardNewFile(file: EditFile | null) { From a105f395dd0533b43a17476055304bb23a306d4c Mon Sep 17 00:00:00 2001 From: jcchoi Date: Tue, 20 Oct 2026 15:50:05 +0900 Subject: [PATCH 3/5] =?UTF-8?q?=EC=84=A4=EC=B9=98=EC=9D=B8=EA=B0=80=20?= =?UTF-8?q?=ED=94=84=EB=A1=9C=EC=84=B8=EC=8A=A4=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/pages/instl-sncn/lib/button-config.ts | 19 +- .../pages/instl-sncn/lib/review-step-utils.ts | 2 +- .../src/pages/instl-sncn/model/view-types.ts | 6 +- .../ui/components/floating-action-buttons.tsx | 53 ---- .../pages/instl-sncn/ui/instl-form-page.tsx | 8 - .../pages/instl-sncn/ui/instl-view-page.tsx | 290 +++++++++--------- 6 files changed, 155 insertions(+), 223 deletions(-) diff --git a/apps/as/src/pages/instl-sncn/lib/button-config.ts b/apps/as/src/pages/instl-sncn/lib/button-config.ts index 8dafefd31..b19609a06 100644 --- a/apps/as/src/pages/instl-sncn/lib/button-config.ts +++ b/apps/as/src/pages/instl-sncn/lib/button-config.ts @@ -3,7 +3,6 @@ export const INSTL_SNCN_VIEW_BUTTON_ACTION = { aply: "aply", del: "del", instlSncnAncmnt: "instlSncnAncmnt", - envoSbmsn: "envoSbmsn", rjct: "rjct", sncnAprv: "sncnAprv", rvwRply: "rvwRply", @@ -33,14 +32,16 @@ const ROLE_STATUS_BUTTON_ACTIONS: Record = { LOCAL: "자가체크", - ENV: "환경청검토", + ENV: "광역자치단체검토", KECO: "기술검토", }; export const REVIEW_STEP_LABELS: Record = { LOCAL: "지자체", - ENV: "환경청", + ENV: "광역자치단체", KECO: "환경공단", }; @@ -89,7 +89,7 @@ export const INSTL_PROGRESS_ORDER = [ export const ROLE_TO_REVIEW_STEP: Record = { ROLE_USER05: "LOCAL", - ROLE_USER03: "ENV", + ROLE_USER04: "ENV", ROLE_USER01: "KECO", }; diff --git a/apps/as/src/pages/instl-sncn/ui/components/floating-action-buttons.tsx b/apps/as/src/pages/instl-sncn/ui/components/floating-action-buttons.tsx index 4ae4fd4e3..a34c23292 100644 --- a/apps/as/src/pages/instl-sncn/ui/components/floating-action-buttons.tsx +++ b/apps/as/src/pages/instl-sncn/ui/components/floating-action-buttons.tsx @@ -35,7 +35,6 @@ import { type InstlSncnViewButtonAction, needsRoleUser01AtrzResolve, } from "../../lib/button-config"; -import { computeReviewStepChecklistProgress } from "../../lib/checklist-utils"; import { buildSavePayload, buildSupplementReqPayload, @@ -179,11 +178,6 @@ function FloatingActionButtons({ } async function handleAplyClick() { - const { percent } = computeReviewStepChecklistProgress( - data.cklstResultList ?? [], - checklistFormState.results, - "LOCAL", - ); const payload: InstlSncnApplySaveRequestDto = buildSavePayload( data, checklistFormState, @@ -191,11 +185,6 @@ function FloatingActionButtons({ "ST", ); - if (percent !== 100) { - alert("모든 체크리스트 항목을 체크해야 신청이 가능합니다."); - return; - } - await executeAction({ action: INSTL_SNCN_VIEW_BUTTON_ACTION.aply, request: payload, @@ -231,22 +220,6 @@ function FloatingActionButtons({ }); } - async function handleEnvoSbmsnClick() { - const payload: DocPrgrsUpdateRequestDto = { - docNo, - docSeComCd, - prgrsSttsComCd: "LE", - }; - await executeAction({ - action: INSTL_SNCN_VIEW_BUTTON_ACTION.envoSbmsn, - request: payload, - successMessage: "제출되었습니다.", - }); - queryClient.invalidateQueries({ - queryKey: instlSncnKeys.list(), - }); - } - async function handleRjctClick() { const payload: DocPrgrsUpdateRequestDto = { docNo, @@ -284,16 +257,6 @@ function FloatingActionButtons({ } async function handleRvwRplyClick() { - const { percent } = computeReviewStepChecklistProgress( - data.cklstResultList ?? [], - checklistFormState.results, - "ENV", - ); - - if (percent !== 100) { - alert("모든 체크리스트 항목을 체크해야 검토결과 회신이 가능합니다."); - return; - } const payload = buildTechReviewReplyPayload( data, @@ -369,16 +332,6 @@ function FloatingActionButtons({ } async function handleRvwCmptnClick() { - const { percent } = computeReviewStepChecklistProgress( - data.cklstResultList ?? [], - checklistFormState.results, - "KECO", - ); - - if (percent !== 100) { - alert("모든 체크리스트 항목을 체크해야 검토완료가 가능합니다."); - return; - } const payload = { ...buildTechReviewReplyPayload( @@ -447,11 +400,6 @@ function FloatingActionButtons({ 설치인가 고시 )} - {shouldShowButton(INSTL_SNCN_VIEW_BUTTON_ACTION.envoSbmsn) && ( - - )} {shouldShowButton(INSTL_SNCN_VIEW_BUTTON_ACTION.rjct) && (