diff --git a/apps/st/src/components/statistics/verification/VerificationArticleManagement.tsx b/apps/st/src/components/statistics/verification/VerificationArticleManagement.tsx index ec4f2b082..182aa2a9e 100644 --- a/apps/st/src/components/statistics/verification/VerificationArticleManagement.tsx +++ b/apps/st/src/components/statistics/verification/VerificationArticleManagement.tsx @@ -19,6 +19,11 @@ import type { } from "@/entities/statistics/model/verification-target-management-interface"; import { Button, + Dialog, + DialogContent, + DialogFooter, + DialogHeader, + DialogTitle, Input, Label, Tabs, @@ -58,6 +63,8 @@ function VerificationArticleManagement() { const [dialogOpen, setDialogOpen] = useState(false); const [selectedData, setSelectedData] = useState(null); + const [resultDialogOpen, setResultDialogOpen] = useState(false); + const [resultDialogMessage, setResultDialogMessage] = useState(""); const { data: verificationData } = useQuery({ queryKey: [ENDPOINT.STATVERIFY_SERVICE.VRFCTGT_MNG, searchParams], @@ -172,6 +179,23 @@ function VerificationArticleManagement() { }, }); + const checkColumnsMutation = useMutation({ + mutationFn: () => + verificationTargetManagementApi.checkColumnsExist({ + vrfcMthdCd: activeTab, + }), + onSuccess: (response) => { + setResultDialogMessage( + response.message || "컬럼 검사가 완료되었습니다.", + ); + setResultDialogOpen(true); + }, + onError: () => { + setResultDialogMessage("컬럼 검사 중 오류가 발생했습니다."); + setResultDialogOpen(true); + }, + }); + function handleRowClick(rowData: Record) { setSelectedData( rowData as unknown as VerificationTargetManagementResponse, @@ -205,101 +229,137 @@ function VerificationArticleManagement() { } } + async function handleCheckColumns() { + if (!(await confirm("컬럼 검사를 실행하시겠습니까?"))) return; + checkColumnsMutation.mutate(); + } + return ( - - + <> + + + {Object.entries(TAB_CONFIG).map(([key, config]) => ( + + {config.label} + + ))} + + +
+
+
+
+ + +
+ +
+ + + setVrfcTrgtNm(e.target.value) + } + placeholder="검증명" + className="w-[20rem]" + /> +
+ +
+ + + + +
+
+
+
+ {Object.entries(TAB_CONFIG).map(([key, config]) => ( - - {config.label} - + + {}} + onRowClick={handleRowClick} + isExcelImport={false} + /> + ))} -
-
-
-
-
- - -
- -
- - setVrfcTrgtNm(e.target.value)} - placeholder="검증명" - className="w-[20rem]" - /> -
- -
- - - -
+ + + + + + 컬럼 검사 결과 + +
+ {resultDialogMessage}
- -
- - {Object.entries(TAB_CONFIG).map(([key, config]) => ( - - {}} - onRowClick={handleRowClick} - isExcelImport={false} - /> - - ))} - - - + + + + + + ); } diff --git a/apps/st/src/entities/statistics/api/verification-target-management-service.ts b/apps/st/src/entities/statistics/api/verification-target-management-service.ts index 1cad4c110..6ad7be687 100644 --- a/apps/st/src/entities/statistics/api/verification-target-management-service.ts +++ b/apps/st/src/entities/statistics/api/verification-target-management-service.ts @@ -3,6 +3,8 @@ import { ENDPOINT } from "@/shared/config"; import type { VerificationTargetCodeResponse, + VerificationTargetManagementCheckColumnsParams, + VerificationTargetManagementCheckColumnsResponse, VerificationTargetManagementService, VerificationTargetManagementSearchParams, VerificationTargetManagementListApiResponse, @@ -45,6 +47,21 @@ export class VerificationTargetManagementApiService implements VerificationTarge return response.data; } + /** + * 검증 대상 컬럼 검사 + * @param params 검사 조건 (vrfcMthdCd) + */ + public async checkColumnsExist( + params: VerificationTargetManagementCheckColumnsParams, + ): Promise { + const response = + await client.get( + `${ENDPOINT.STATVERIFY_SERVICE.VRFCTGT_MNG}/check-columns`, + { params }, + ); + return response.data; + } + /** * 테이블 메타데이터 조회 * @param statsCd 통계항목 코드 diff --git a/apps/st/src/entities/statistics/model/verification-target-management-interface.ts b/apps/st/src/entities/statistics/model/verification-target-management-interface.ts index b09454f99..1a518d89b 100644 --- a/apps/st/src/entities/statistics/model/verification-target-management-interface.ts +++ b/apps/st/src/entities/statistics/model/verification-target-management-interface.ts @@ -58,6 +58,17 @@ export interface VerificationTargetManagementSearchParams { sort?: string; // 정렬 조건 (예: "vrfcTrgtSn,desc") } +// 검증 대상 컬럼 검사 검색 DTO +export interface VerificationTargetManagementCheckColumnsParams { + vrfcMthdCd: string; // 검증 방법 코드 (HB, IMR, VAL 등) +} + +// 검증 대상 컬럼 검사 응답 DTO +export interface VerificationTargetManagementCheckColumnsResponse { + code: number; // 응답 코드 (정상: 0, 에러: -1) + message: string; // 응답 메시지 +} + // 검증 대상 관리 저장 요청 DTO export interface VerificationTargetManagementSaveRequest { vrfcMthdCd: string; // 검증 방법 코드 (필수, 최대 10자) @@ -109,6 +120,10 @@ export interface VerificationTargetManagementService { vrfcTrgtSn: number, ): Promise; + checkColumnsExist( + params: VerificationTargetManagementCheckColumnsParams, + ): Promise; + getVerificationTargetCodes(): Promise; saveVerificationTargetManagement( diff --git a/apps/st/tsconfig.json b/apps/st/tsconfig.json index e91347649..234373acb 100644 --- a/apps/st/tsconfig.json +++ b/apps/st/tsconfig.json @@ -25,7 +25,7 @@ "baseUrl": "./src", "paths": { "@/*": ["./*"], - "@common/components": ["../../../packages/common/components/src/"], + "@common/components": ["../../../packages/common/components/dist/"], "@common/config": ["../../../packages/common/config/dist/"], "@common/network": ["../../../packages/common/network/"], "@rsone/components": ["../../../packages/rsone/dist/"]