From d79e0e585a3ae0a54a9d6d3cf66c387c797a9a94 Mon Sep 17 00:00:00 2001 From: bicochan Date: Mon, 10 Aug 2026 17:57:39 +0900 Subject: [PATCH] =?UTF-8?q?[as]=20feat:=20=ED=96=89=EC=A0=95=EC=A7=80?= =?UTF-8?q?=EC=9B=90=20=EC=97=85=EB=AC=B4=EB=B3=84=20=EC=83=81=EC=84=B8?= =?UTF-8?q?=ED=8E=98=EC=9D=B4=EC=A7=80=20=EB=82=B4=20=EC=A7=84=ED=96=89?= =?UTF-8?q?=EC=83=81=ED=83=9C=20=EC=84=B9=EC=85=98=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../elapr/ui/elapr-approval-dialog.tsx | 4 +- .../elapr/ui/sortable-prgrs-stts-row.tsx | 4 +- .../model/sewer-bsc-plan-interface.ts | 2 + .../src/pages/design-cnstn/model/columns.tsx | 6 ++ .../design-cnstn/ui/design-form-page.tsx | 9 ++ .../design-cnstn/ui/design-view-page.tsx | 20 +++-- .../src/pages/fnrs-cnsltn/model/columns.tsx | 9 ++ .../pages/fnrs-cnsltn/ui/fnrs-form-page.tsx | 9 ++ .../pages/fnrs-cnsltn/ui/fnrs-view-page.tsx | 29 +++--- .../as/src/pages/instl-sncn/model/columns.tsx | 10 +++ .../pages/instl-sncn/ui/instl-form-page.tsx | 9 ++ .../pages/instl-sncn/ui/instl-view-page.tsx | 9 +- .../pages/sewer-bsc-plan/model/columns.tsx | 8 ++ .../ui/sewer-bsc-plan-form-page.tsx | 9 ++ .../ui/sewer-bsc-plan-view-page.tsx | 33 ++++--- apps/as/src/shared/model/index.ts | 1 + apps/as/src/shared/model/pbadms-sprt.ts | 17 ++++ apps/as/src/widgets/pbadms-sprt/index.ts | 1 + .../pbadms-sprt/lib/progress-status-utils.ts | 59 +++++++++++++ .../ui/progress-status-section.tsx | 88 +++++++++++++++++++ 20 files changed, 304 insertions(+), 32 deletions(-) create mode 100644 apps/as/src/widgets/pbadms-sprt/lib/progress-status-utils.ts create mode 100644 apps/as/src/widgets/pbadms-sprt/ui/progress-status-section.tsx diff --git a/apps/as/src/entities/elapr/ui/elapr-approval-dialog.tsx b/apps/as/src/entities/elapr/ui/elapr-approval-dialog.tsx index c4cb3956d..ad9abfa3e 100644 --- a/apps/as/src/entities/elapr/ui/elapr-approval-dialog.tsx +++ b/apps/as/src/entities/elapr/ui/elapr-approval-dialog.tsx @@ -314,8 +314,8 @@ function ElaprApprovalDialog({ - - + + diff --git a/apps/as/src/entities/elapr/ui/sortable-prgrs-stts-row.tsx b/apps/as/src/entities/elapr/ui/sortable-prgrs-stts-row.tsx index 601d272f2..3c2bb457a 100644 --- a/apps/as/src/entities/elapr/ui/sortable-prgrs-stts-row.tsx +++ b/apps/as/src/entities/elapr/ui/sortable-prgrs-stts-row.tsx @@ -73,14 +73,14 @@ function SortablePrgrsSttsRow({ const isDcarbable = isPrgrsSttsRowDcarbable(row); const rowDisabled = isLocked && !isEditing; const atrzSeLabel = row.atrzSeComNm || findCodeLabel(atrzSeCodes, row.atrzSeComCd); - const status = getApproverStatus(row.atrzPrgrsSttsComCd); + const status = getApproverStatus(row.atrzPrgrsSttsComCd, row.atrzSeComCd); const isRejectedRow = row.atrzPrgrsSttsComCd === "ATRZ_PRGRS_004"; const rjctRsn = row.rjctRsn?.trim(); const statusBadge = (
+ {initialData?.detDto?.designCnstnDocNo && ( + + )} 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 c900ab530..cc4315025 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 @@ -6,10 +6,12 @@ import { useUserStore } from "@/shared/lib"; import { useDesignCnstnMng } from "@/entities/design-cnstn"; import { ElaprDocPrgrsStatus } from "@/entities/elapr"; import { useRvwMnpwMngLoginUserList } from "@/entities/rvw-mnpw"; +import { ProgressStatusSection } from "@/widgets/pbadms-sprt"; import { Skeleton } from "@common/components"; import { needsRoleUser01AtrzResolve } from "../lib/button-config"; import { getEditableReviewStep } from "../lib/review-step-utils"; +import { PROGRESS_STATUS_COLUMNS } from "../model/columns"; import { FloatingActionButtons } from "./components/floating-action-buttons"; import { AttachmentsSection } from "./sections/attachments-section"; @@ -64,11 +66,14 @@ function DesignViewPage({ id }: DesignViewPageProps) { return
상세 정보를 찾을 수 없습니다.
; } - const detDto = data.detDto; - const bizSclList = data.bizSclList ?? []; - const esntlFileList = data.esntlFileList ?? []; - const etcFileList = data.etcFileList ?? []; - const rvwList = data.rvwList ?? []; + const { + detDto, + bizSclList = [], + esntlFileList = [], + etcFileList = [], + rvwList = [], + sttsChgHstryList = [], + } = data; const editableReviewStep = getEditableReviewStep( userInfo?.dtlInstCd, @@ -77,6 +82,11 @@ function DesignViewPage({ id }: DesignViewPageProps) { return (
+ diff --git a/apps/as/src/pages/fnrs-cnsltn/model/columns.tsx b/apps/as/src/pages/fnrs-cnsltn/model/columns.tsx index a29e2096c..fff55d21a 100644 --- a/apps/as/src/pages/fnrs-cnsltn/model/columns.tsx +++ b/apps/as/src/pages/fnrs-cnsltn/model/columns.tsx @@ -17,6 +17,15 @@ const MAIN_STEP_LABELS = { reply: "검토결과 회신", } as const; +export const PROGRESS_STATUS_COLUMNS = [ + { label: "재원협의 신청 (시군)", sttsComCd: "ST" }, + { label: "재원협의 신청 (시도)", sttsComCd: "LE" }, + { label: "환경청 검토", sttsComCd: "ER" }, + { label: "기술검토", sttsComCd: "TE" }, + { label: "기술검토 회신", sttsComCd: "TP" }, + { label: "환경청 검토 결과 회신", sttsComCd: "EP" }, +]; + type BadgeState = "completed" | "current" | "pending"; interface ProgressBadge { diff --git a/apps/as/src/pages/fnrs-cnsltn/ui/fnrs-form-page.tsx b/apps/as/src/pages/fnrs-cnsltn/ui/fnrs-form-page.tsx index 5a4222553..e189e28f6 100644 --- a/apps/as/src/pages/fnrs-cnsltn/ui/fnrs-form-page.tsx +++ b/apps/as/src/pages/fnrs-cnsltn/ui/fnrs-form-page.tsx @@ -30,6 +30,7 @@ import { isFormChecklistComplete, isFormEsntlAtchComplete, PrivacyConsentSection, + ProgressStatusSection, recalculateFnrsSharTotals, SplmntDmndFormSection, toFnrsSharSaveList, @@ -43,6 +44,7 @@ import { formatTaskSeComCdForApi, } from "../lib/fnrs-cnsltn-regist-schema"; import { getCreateDefaultValues, mapDetailToFormData } from "../lib/form-data-mapper"; +import { PROGRESS_STATUS_COLUMNS } from "../model/columns"; import { BasicInfoFormSection } from "./sections/basic-info-form-section"; interface FnrsFormPageProps { @@ -270,6 +272,13 @@ function FnrsFormPage({ id, mode, initialData, createDefaults }: FnrsFormPagePro return ( + {initialData?.detDto?.fnrsCnsltnDocNo && ( + + )} 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 650383f9f..6fa957d44 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 @@ -6,12 +6,13 @@ import { useUserStore } from "@/shared/lib"; import { ElaprDocPrgrsStatus } from "@/entities/elapr"; import { useFnrsCnsltnMng } from "@/entities/fnrs-cnsltn"; import { useRvwMnpwMngLoginUserList } from "@/entities/rvw-mnpw"; -import { SupplementDemandSection } from "@/widgets/pbadms-sprt"; +import { ProgressStatusSection, SupplementDemandSection } from "@/widgets/pbadms-sprt"; import { Skeleton } from "@common/components"; import { needsRoleUser01AtrzResolve } from "../lib/button-config"; 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"; import { FloatingActionButtons } from "./components/floating-action-buttons"; import { AttachmentsSection } from "./sections/attachments-section"; @@ -71,15 +72,18 @@ function FnrsViewPage({ id }: FnrsViewPageProps) { return
상세 정보를 찾을 수 없습니다.
; } - const detDto = data.detDto; - const bizSclList = data.bizSclList ?? []; - const bizCstList = data.bizCstList ?? []; - const cklstResultList = data.cklstResultList ?? []; - const esntlFileList = data.esntlFileList ?? []; - const etcFileList = data.etcFileList ?? []; - const rvwList = data.rvwList ?? []; - const splmntDmndList = data.splmntDmndList ?? []; - const fnrsSharList = data.fnrsSharList ?? []; + const { + detDto, + bizSclList = [], + bizCstList = [], + cklstResultList = [], + esntlFileList = [], + etcFileList = [], + rvwList = [], + splmntDmndList = [], + fnrsSharList = [], + sttsChgHstryList = [], + } = data; const editableReviewStep = getEditableReviewStep( userInfo?.dtlInstCd, @@ -88,6 +92,11 @@ function FnrsViewPage({ id }: FnrsViewPageProps) { return (
+ diff --git a/apps/as/src/pages/instl-sncn/model/columns.tsx b/apps/as/src/pages/instl-sncn/model/columns.tsx index cca857fd9..2dcca5c58 100644 --- a/apps/as/src/pages/instl-sncn/model/columns.tsx +++ b/apps/as/src/pages/instl-sncn/model/columns.tsx @@ -17,6 +17,16 @@ const MAIN_STEP_LABELS = { reply: "검토결과 회신", } as const; +export const PROGRESS_STATUS_COLUMNS = [ + { label: "설치인가 신청 (시군)", sttsComCd: "ST" }, + { label: "설치인가 신청 (시도)", sttsComCd: "LE" }, + { label: "환경청 검토", sttsComCd: "ER" }, + { label: "기술검토", sttsComCd: "TE" }, + { label: "기술검토 회신", sttsComCd: "TP" }, + { label: "검토결과 회신", sttsComCd: "EP" }, + { label: "설치인가 승인", sttsComCd: "TA" }, +]; + type BadgeState = "completed" | "current" | "pending"; interface ProgressBadge { diff --git a/apps/as/src/pages/instl-sncn/ui/instl-form-page.tsx b/apps/as/src/pages/instl-sncn/ui/instl-form-page.tsx index bc248e3b2..c2bd574b9 100644 --- a/apps/as/src/pages/instl-sncn/ui/instl-form-page.tsx +++ b/apps/as/src/pages/instl-sncn/ui/instl-form-page.tsx @@ -25,6 +25,7 @@ import { isFormChecklistComplete, isFormEsntlAtchComplete, PrivacyConsentSection, + ProgressStatusSection, SplmntDmndFormSection, } from "@/widgets/pbadms-sprt"; import { Button } from "@common/components"; @@ -35,6 +36,7 @@ import { type InstlSncnRegistFormData, instlSncnRegistSchema, } from "../lib/instl-sncn-regist-schema"; +import { PROGRESS_STATUS_COLUMNS } from "../model/columns"; import { BasicInfoFormSection } from "./sections/basic-info-form-section"; interface InstlFormPageProps { @@ -228,6 +230,13 @@ function InstlFormPage({ id, mode, initialData, createDefaults }: InstlFormPageP return ( + {initialData?.detDto.instlSncnDocNo && ( + + )} diff --git a/apps/as/src/pages/instl-sncn/ui/instl-view-page.tsx b/apps/as/src/pages/instl-sncn/ui/instl-view-page.tsx index 88677bbf3..d8f637f59 100644 --- a/apps/as/src/pages/instl-sncn/ui/instl-view-page.tsx +++ b/apps/as/src/pages/instl-sncn/ui/instl-view-page.tsx @@ -6,12 +6,13 @@ import { useUserStore } from "@/shared/lib"; import { ElaprDocPrgrsStatus } from "@/entities/elapr"; import { useInstlSncnDetail } from "@/entities/instl-sncn"; import { useRvwMnpwMngLoginUserList } from "@/entities/rvw-mnpw"; -import { SupplementDemandSection } from "@/widgets/pbadms-sprt"; +import { ProgressStatusSection, SupplementDemandSection } from "@/widgets/pbadms-sprt"; import { Skeleton } from "@common/components"; import { needsRoleUser01AtrzResolve } from "../lib/button-config"; 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"; import { FloatingActionButtons } from "./components/floating-action-buttons"; import { AttachmentsSection } from "./sections/attachments-section"; @@ -79,6 +80,7 @@ function InstlViewPage({ id }: InstlViewPageProps) { etcFileList, rvwList = [], splmntDmndList = [], + sttsChgHstryList = [], } = data; const editableReviewStep = getEditableReviewStep( @@ -88,6 +90,11 @@ function InstlViewPage({ id }: InstlViewPageProps) { return (
+ diff --git a/apps/as/src/pages/sewer-bsc-plan/model/columns.tsx b/apps/as/src/pages/sewer-bsc-plan/model/columns.tsx index 9ad252381..4dc1af0c6 100644 --- a/apps/as/src/pages/sewer-bsc-plan/model/columns.tsx +++ b/apps/as/src/pages/sewer-bsc-plan/model/columns.tsx @@ -17,6 +17,14 @@ const MAIN_STEP_LABELS = { reply: "검토결과 회신", } as const; +export const PROGRESS_STATUS_COLUMNS = [ + { label: "기본계획 신청 (시군)", sttsComCd: "LE" }, + { label: "환경청 검토", sttsComCd: "ER" }, + { label: "기술검토", sttsComCd: "TE" }, + { label: "기술검토 회신", sttsComCd: "TP" }, + { label: "횐경청 검토 결과 회신", sttsComCd: "EP" }, +]; + type BadgeState = "completed" | "current" | "pending"; interface ProgressBadge { diff --git a/apps/as/src/pages/sewer-bsc-plan/ui/sewer-bsc-plan-form-page.tsx b/apps/as/src/pages/sewer-bsc-plan/ui/sewer-bsc-plan-form-page.tsx index 03c605ebe..ca8f2c9d0 100644 --- a/apps/as/src/pages/sewer-bsc-plan/ui/sewer-bsc-plan-form-page.tsx +++ b/apps/as/src/pages/sewer-bsc-plan/ui/sewer-bsc-plan-form-page.tsx @@ -25,6 +25,7 @@ import { isFormChecklistComplete, isFormEsntlAtchComplete, PrivacyConsentSection, + ProgressStatusSection, SplmntDmndFormSection, } from "@/widgets/pbadms-sprt"; import { Button } from "@common/components"; @@ -39,6 +40,7 @@ import { type SewerBscPlanRegistFormData, sewerBscPlanRegistSchema, } from "../lib/sewer-bsc-plan-regist-schema"; +import { PROGRESS_STATUS_COLUMNS } from "../model/columns"; import { BasicInfoFormSection } from "./sections/basic-info-form-section"; import { BizCstMatrixFormSection } from "./sections/biz-cst-matrix-form-section"; @@ -242,6 +244,13 @@ function SewerBscPlanFormPage({ return ( + {initialData?.detDto?.sewerBscPlanDocNo && ( + + )} 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 9fd161733..e04483925 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 @@ -6,12 +6,13 @@ import { useUserStore } from "@/shared/lib"; import { ElaprDocPrgrsStatus } from "@/entities/elapr"; import { useRvwMnpwMngLoginUserList } from "@/entities/rvw-mnpw"; import { useSewerBscPlanDetails } from "@/entities/sewer-bsc-plan"; -import { SupplementDemandSection } from "@/widgets/pbadms-sprt"; +import { ProgressStatusSection, SupplementDemandSection } from "@/widgets/pbadms-sprt"; import { Skeleton } from "@common/components"; import { needsRoleUser01AtrzResolve } from "../lib/button-config"; 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"; import { FloatingActionButtons } from "./components/floating-action-buttons"; import { AttachmentsSection } from "./sections/attachments-section"; @@ -74,17 +75,20 @@ function SewerBscPlanViewPage({ id, propChgCycl }: SewerBscPlanViewPageProps) { return
상세 정보를 찾을 수 없습니다.
; } - const detDto = data.detDto; - const activeDtlDto = data.activeDtlDto; - const otlnList = data.otlnList ?? []; - const bizCstList = data.bizCstList ?? []; - const fnrsCstList = data.fnrsCstList ?? []; - const tmplntList = data.tmplntList ?? []; - const cklstResultRows = data.cklstResultRows ?? []; - const esntlFileList = data.esntlFileList ?? []; - const etcFileList = data.etcFileList ?? []; - const rvwOpnnList = data.rvwOpnnList ?? []; - const splmntDmndList = data.splmntDmndList ?? []; + const { + detDto, + activeDtlDto, + otlnList = [], + bizCstList = [], + fnrsCstList = [], + tmplntList = [], + cklstResultRows = [], + esntlFileList = [], + etcFileList = [], + rvwOpnnList = [], + splmntDmndList = [], + sttsChgHstryList = [], + } = data; const editableReviewStep = getEditableReviewStep( userInfo?.dtlInstCd, @@ -93,6 +97,11 @@ function SewerBscPlanViewPage({ id, propChgCycl }: SewerBscPlanViewPageProps) { return (
+ diff --git a/apps/as/src/shared/model/index.ts b/apps/as/src/shared/model/index.ts index bdf339145..75c66834d 100644 --- a/apps/as/src/shared/model/index.ts +++ b/apps/as/src/shared/model/index.ts @@ -38,6 +38,7 @@ export type { CklstResultSaveBase, CklstRvwRsltTreeDto, DocPrgrsUpdateRequestDto, + DocSttsChgHstryResponseDto, ElaprDocPrgrsClientResponseDto, EsntlAtchFileMngTreeResponseDto, EsntlAtchFileSaveBase, diff --git a/apps/as/src/shared/model/pbadms-sprt.ts b/apps/as/src/shared/model/pbadms-sprt.ts index 67b0b831e..272e6d110 100644 --- a/apps/as/src/shared/model/pbadms-sprt.ts +++ b/apps/as/src/shared/model/pbadms-sprt.ts @@ -155,6 +155,22 @@ export interface ElaprDocPrgrsClientResponseDto { dcarbYn?: string; } +/** 문서 상태 변경 이력 응답 DTO */ +export interface DocSttsChgHstryResponseDto { + chgHstrySn: number; + docSeComCd: string; + docSeComNm: string; + docNo: string; + chgBfrSttsComCd: string; + chgBfrSttsComNm: string; + chgAftrSttsComCd: string; + chgAftrSttsComNm: string; + rmrk: string; + rgtrUuid: string; + rgtrNm: string; + regDt: string; +} + /** 사업규모 저장 공통 필드 */ export interface BzScaleSaveBase { cnstpSeCd?: string; @@ -244,4 +260,5 @@ export interface PbadmsMngDetResponseBase item.chgAftrSttsComCd === sttsComCd) + .map((item) => ({ + rgtrNm: item.rgtrNm, + regDt: item.regDt, + })); +} + +function findTechReviewProgressItem( + elaprDocPrgrsList: ElaprDocPrgrsClientResponseDto[], +): ProgressStatusItem[] { + return elaprDocPrgrsList + .filter( + (item) => + item.atrzSeComCd === TECH_REVIEW_ATRZ_SE_COM_CD && + item.atrzPrgrsSttsComCd === TECH_REVIEW_ATRZ_PRGRS_STTS_COM_CD, + ) + .map((item) => ({ + rgtrNm: item.aprvrNm ?? "", + regDt: item.atrzDt ?? "", + })); +} + +function resolveProgressStatusItem( + sttsComCd: string, + sttsChgHstryList: DocSttsChgHstryResponseDto[], + elaprDocPrgrsList: ElaprDocPrgrsClientResponseDto[], +): ProgressStatusItem[] { + if (sttsComCd === TECH_REVIEW_STTS_COM_CD) { + return findTechReviewProgressItem(elaprDocPrgrsList); + } + + return findProgressStatusItem(sttsChgHstryList, sttsComCd); +} + +export { + findProgressStatusItem, + findTechReviewProgressItem, + resolveProgressStatusItem, + TECH_REVIEW_STTS_COM_CD, +}; diff --git a/apps/as/src/widgets/pbadms-sprt/ui/progress-status-section.tsx b/apps/as/src/widgets/pbadms-sprt/ui/progress-status-section.tsx new file mode 100644 index 000000000..4ce4d8a0a --- /dev/null +++ b/apps/as/src/widgets/pbadms-sprt/ui/progress-status-section.tsx @@ -0,0 +1,88 @@ +"use client"; + +import dayjs from "dayjs"; + +import { DocSttsChgHstryResponseDto } from "@/shared/model/pbadms-sprt"; +import { SectionCollapsible } from "@/shared/ui"; +import { useElaprDocPrgrsByDocNo } from "@/entities/elapr"; +import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@common/components"; + +import { resolveProgressStatusItem } from "../lib/progress-status-utils"; + +interface ProgressStatusColumn { + label: string; + sttsComCd: string; +} + +interface ProgressStatusItem { + rgtrNm: string; + regDt: string; +} + +interface ProgressStatusSectionProps { + columns: ProgressStatusColumn[]; + sttsChgHstryList: DocSttsChgHstryResponseDto[]; + elaprDocNo: string; +} + +interface ProgressStatusCellProps { + items: ProgressStatusItem[]; +} + +function ProgressStatusCell({ items }: ProgressStatusCellProps) { + if (items.length === 0) return "-"; + + return ( +
+ {items.map((item, index) => ( +
+ {item.rgtrNm || "-"} + {item.regDt && ( +

+ {dayjs(item.regDt).format("YYYY-MM-DD")} +

+ )} +
+ ))} +
+ ); +} + +function ProgressStatusSection({ + columns, + sttsChgHstryList, + elaprDocNo, +}: ProgressStatusSectionProps) { + const { data: elaprDocPrgrsList = [] } = useElaprDocPrgrsByDocNo(elaprDocNo); + + return ( + + + + + {columns.map((column) => ( + {column.label} + ))} + + + + + {columns.map((column) => ( + + + + ))} + + +
+
+ ); +} + +export { ProgressStatusSection };