[st] feat: 검증 항목 관리 페이지 작업

This commit is contained in:
2026-02-12 16:54:07 +09:00
parent 78e3e8e20e
commit a256379633
5 changed files with 474 additions and 277 deletions
@@ -0,0 +1,95 @@
import { client } from "@/shared/api";
import { ENDPOINT } from "@/shared/config";
import type {
VerificationTargetManagementService,
VerificationTargetManagementSearchParams,
VerificationTargetManagementListApiResponse,
VerificationTargetManagementDetailApiResponse,
VerificationTargetManagementSaveRequest,
VerificationTargetManagementSaveApiResponse,
VerificationTargetManagementUpdateRequest,
VerificationTargetManagementUpdateApiResponse,
VerificationTargetManagementDeleteApiResponse,
} from "../model/verification-target-management-interface";
export class VerificationTargetManagementApiService implements VerificationTargetManagementService {
/**
* 검증 대상 목록 조회
* @param params 검색 조건 (vrfcMthdCd, statsCd, tblNm, colNm, vrfcTrgtNm, useYn, page, size, sort)
*/
public async getVerificationTargetManagementList(
params: VerificationTargetManagementSearchParams,
): Promise<VerificationTargetManagementListApiResponse> {
const response =
await client.get<VerificationTargetManagementListApiResponse>(
`${ENDPOINT.STATVERIFY_SERVICE.VRFCTGT_MNG}`,
{ params },
);
return response.data;
}
/**
* 검증 대상 상세 조회
* @param vrfcTrgtSn 검증 대상 일련번호
*/
public async getVerificationTargetManagementById(
vrfcTrgtSn: number,
): Promise<VerificationTargetManagementDetailApiResponse> {
const response =
await client.get<VerificationTargetManagementDetailApiResponse>(
`${ENDPOINT.STATVERIFY_SERVICE.VRFCTGT_MNG}/${vrfcTrgtSn}`,
);
return response.data;
}
/**
* 검증 대상 등록
* @param request 등록 요청 데이터
*/
public async saveVerificationTargetManagement(
request: VerificationTargetManagementSaveRequest,
): Promise<VerificationTargetManagementSaveApiResponse> {
const response =
await client.post<VerificationTargetManagementSaveApiResponse>(
`${ENDPOINT.STATVERIFY_SERVICE.VRFCTGT_MNG}`,
request,
);
return response.data;
}
/**
* 검증 대상 수정
* @param vrfcTrgtSn 검증 대상 일련번호
* @param request 수정 요청 데이터
*/
public async updateVerificationTargetManagement(
vrfcTrgtSn: number,
request: VerificationTargetManagementUpdateRequest,
): Promise<VerificationTargetManagementUpdateApiResponse> {
const response =
await client.put<VerificationTargetManagementUpdateApiResponse>(
`${ENDPOINT.STATVERIFY_SERVICE.VRFCTGT_MNG}/${vrfcTrgtSn}`,
request,
);
return response.data;
}
/**
* 검증 대상 삭제
* @param vrfcTrgtSn 검증 대상 일련번호
*/
public async deleteVerificationTargetManagement(
vrfcTrgtSn: number,
): Promise<VerificationTargetManagementDeleteApiResponse> {
const response =
await client.delete<VerificationTargetManagementDeleteApiResponse>(
`${ENDPOINT.STATVERIFY_SERVICE.VRFCTGT_MNG}/${vrfcTrgtSn}`,
);
return response.data;
}
}
// 통합 인스턴스 수출
export const verificationTargetManagementApi =
new VerificationTargetManagementApiService();
@@ -1,27 +1,26 @@
import { ValueType } from "realgrid";
import type { ColumnInfo } from "@rsone/components";
/** H-B 탭 그리드 컬럼 설정 */
export const hbArticleColumnInfo: ColumnInfo = {
columns: [
{
name: "statsItmNm",
fieldName: "statsItmNm",
header: { text: "통계 항목" },
name: "statsNm",
fieldName: "statsNm",
header: { text: "통계항목" },
editable: false,
sortdisable: false,
},
{
name: "vrfcItmNm",
fieldName: "vrfcItmNm",
header: { text: "검증 항목" },
name: "vrfcTrgtNm",
fieldName: "vrfcTrgtNm",
header: { text: "검증명" },
editable: false,
sortdisable: false,
},
{
name: "tblNm",
fieldName: "tblNm",
header: { text: "테이블" },
header: { text: "테이블명" },
editable: false,
sortdisable: false,
},
@@ -33,8 +32,8 @@ export const hbArticleColumnInfo: ColumnInfo = {
sortdisable: false,
},
{
name: "percentileVal",
fieldName: "percentileVal",
name: "pctlCrtrVl",
fieldName: "pctlCrtrVl",
header: { text: "Percentile" },
editable: false,
sortdisable: false,
@@ -42,8 +41,8 @@ export const hbArticleColumnInfo: ColumnInfo = {
dataFormat: "#,##0.##",
},
{
name: "aVal",
fieldName: "aVal",
name: "scopCntCntVl",
fieldName: "scopCntCntVl",
header: { text: "A" },
editable: false,
sortdisable: false,
@@ -51,8 +50,8 @@ export const hbArticleColumnInfo: ColumnInfo = {
dataFormat: "#,##0.###",
},
{
name: "cVal",
fieldName: "cVal",
name: "thrsCntVl",
fieldName: "thrsCntVl",
header: { text: "C" },
editable: false,
sortdisable: false,
@@ -60,8 +59,8 @@ export const hbArticleColumnInfo: ColumnInfo = {
dataFormat: "#,##0.###",
},
{
name: "regNm",
fieldName: "regNm",
name: "rgtrNm",
fieldName: "rgtrNm",
header: { text: "등록자" },
editable: false,
sortdisable: false,
@@ -69,37 +68,36 @@ export const hbArticleColumnInfo: ColumnInfo = {
{
name: "regDt",
fieldName: "regDt",
header: { text: "등록일" },
header: { text: "등록일시" },
editable: false,
sortdisable: false,
},
],
columnLayout: [
"statsItmNm",
"vrfcItmNm",
"statsNm",
"vrfcTrgtNm",
"tblNm",
"colNm",
"percentileVal",
"aVal",
"cVal",
"regNm",
"pctlCrtrVl",
"scopCntCntVl",
"thrsCntVl",
"rgtrNm",
"regDt",
],
};
/** I-MR 탭 그리드 컬럼 설정 */
export const imrArticleColumnInfo: ColumnInfo = {
columns: [
{
name: "statsItmNm",
fieldName: "statsItmNm",
header: { text: "통계 항목" },
name: "statsNm",
fieldName: "statsNm",
header: { text: "통계항목" },
editable: false,
sortdisable: false,
},
{
name: "vrfcNm",
fieldName: "vrfcNm",
name: "vrfcTrgtNm",
fieldName: "vrfcTrgtNm",
header: { text: "검증명" },
editable: false,
sortdisable: false,
@@ -119,8 +117,17 @@ export const imrArticleColumnInfo: ColumnInfo = {
sortdisable: false,
},
{
name: "regNm",
fieldName: "regNm",
name: "ipcrCntVl",
fieldName: "ipcrCntVl",
header: { text: "μ" },
editable: false,
sortdisable: false,
valueType: ValueType.NUMBER,
dataFormat: "#,##0.###",
},
{
name: "rgtrNm",
fieldName: "rgtrNm",
header: { text: "등록자" },
editable: false,
sortdisable: false,
@@ -128,34 +135,34 @@ export const imrArticleColumnInfo: ColumnInfo = {
{
name: "regDt",
fieldName: "regDt",
header: { text: "등록일" },
header: { text: "등록일시" },
editable: false,
sortdisable: false,
},
],
columnLayout: ["statsItmNm", "vrfcNm", "tblNm", "colNm", "regNm", "regDt"],
columnLayout: [
"statsNm",
"vrfcTrgtNm",
"tblNm",
"colNm",
"ipcrCntVl",
"rgtrNm",
"regDt",
],
};
/** Validation 탭 그리드 컬럼 설정 */
export const validationArticleColumnInfo: ColumnInfo = {
columns: [
{
name: "no",
fieldName: "no",
header: { text: "순번" },
name: "statsNm",
fieldName: "statsNm",
header: { text: "통계항목" },
editable: false,
sortdisable: false,
},
{
name: "statsItmNm",
fieldName: "statsItmNm",
header: { text: "통계 항목" },
editable: false,
sortdisable: false,
},
{
name: "vrfcNm",
fieldName: "vrfcNm",
name: "vrfcTrgtNm",
fieldName: "vrfcTrgtNm",
header: { text: "검증명" },
editable: false,
sortdisable: false,
@@ -175,35 +182,19 @@ export const validationArticleColumnInfo: ColumnInfo = {
sortdisable: false,
},
{
name: "cmpTblNm",
fieldName: "cmpTblNm",
header: { text: "비교 테이블명" },
name: "rgtrNm",
fieldName: "rgtrNm",
header: { text: "등록자" },
editable: false,
sortdisable: false,
},
{
name: "cmpColNm",
fieldName: "cmpColNm",
header: { text: "비교 컬럼명" },
editable: false,
sortdisable: false,
},
{
name: "bscRul",
fieldName: "bscRul",
header: { text: "기본규칙" },
name: "regDt",
fieldName: "regDt",
header: { text: "등록일시" },
editable: false,
sortdisable: false,
},
],
columnLayout: [
"no",
"statsItmNm",
"vrfcNm",
"tblNm",
"colNm",
"cmpTblNm",
"cmpColNm",
"bscRul",
],
columnLayout: ["statsNm", "vrfcTrgtNm", "tblNm", "colNm", "rgtrNm", "regDt"],
};
@@ -0,0 +1,105 @@
import type { PageableList } from "@/shared/model";
import type { ApiResponse } from "./statistics-interface";
// 검증 대상 관리 응답 DTO
export interface VerificationTargetManagementResponse {
vrfcTrgtSn: number; // 검증 대상 일련번호
vrfcMthdCd: string; // 검증 방법 코드
vrfcMthdNm: string; // 검증 방법 명
statsCd: string; // 통계 코드
statsNm: string; // 통계 항목 명
schmNm: string; // 스키마 명
tblNm: string; // 테이블 명
colNm: string; // 컬럼 명
pkColNm: string; // pk 컬럼 명
ipcrCntVl: number | null; // 중요도 개수 값 (mu)
pctlCrtrVl: number | null; // 백분위 기준 값 (percentile)
scopCntCntVl: number | null; // 범위 조정 개수 값 (A)
thrsCntVl: number | null; // 임계 개수 값 (C)
useYn: string; // 사용 여부
vrfcTrgtNm: string; // 검증대상명
rgtr: string | null; // 등록자 ID
regDt: string | null; // 등록 일시
mdfr: string | null; // 수정자 ID
rgtrNm: string | null; // 등록자명
mdfrNm: string | null; // 수정자명
mdfcn: string | null; // 수정 일시
}
// 검증 대상 관리 검색 DTO
export interface VerificationTargetManagementSearchParams {
vrfcMthdCd?: string; // 검증 방법 코드
statsCd?: string; // 통계 코드
tblNm?: string; // 테이블 명
colNm?: string; // 컬럼 명
vrfcTrgtNm?: string; // 검증대상명
useYn?: string; // 사용 여부
page?: number; // 페이지 번호 (0부터 시작)
size?: number; // 페이지 크기
sort?: string; // 정렬 조건 (예: "vrfcTrgtSn,desc")
}
// 검증 대상 관리 저장 요청 DTO
export interface VerificationTargetManagementSaveRequest {
vrfcMthdCd: string; // 검증 방법 코드 (필수, 최대 10자)
statsCd: string; // 통계 코드 (필수, 최대 10자)
schmNm: string; // 스키마 명 (필수, 최대 150자)
tblNm: string; // 테이블 명 (필수, 최대 150자)
colNm: string; // 컬럼 명 (필수, 최대 150자)
pkColNm: string; // pk 컬럼 명 (필수, 최대 150자)
ipcrCntVl?: number | null; // 중요도 개수 값 (mu)
pctlCrtrVl?: number | null; // 백분위 기준 값 (percentile)
scopCntCntVl?: number | null; // 범위 조정 개수 값 (A)
thrsCntVl?: number | null; // 임계 개수 값 (C)
useYn?: string; // 사용 여부 (Y/N, 최대 1자)
vrfcTrgtNm?: string; // 검증대상명 (최대 150자)
}
// 검증 대상 관리 수정 요청 DTO
export interface VerificationTargetManagementUpdateRequest {
vrfcMthdCd: string; // 검증 방법 코드 (필수, 최대 10자)
statsCd: string; // 통계 코드 (필수, 최대 10자)
schmNm: string; // 스키마 명 (필수, 최대 150자)
tblNm: string; // 테이블 명 (필수, 최대 150자)
colNm: string; // 컬럼 명 (필수, 최대 150자)
pkColNm: string; // pk 컬럼 명 (필수, 최대 150자)
ipcrCntVl?: number | null; // 중요도 개수 값 (mu)
pctlCrtrVl?: number | null; // 백분위 기준 값 (percentile)
scopCntCntVl?: number | null; // 범위 조정 개수 값 (A)
thrsCntVl?: number | null; // 임계 개수 값 (C)
useYn?: string; // 사용 여부 (Y/N, 최대 1자)
vrfcTrgtNm?: string; // 검증대상명 (최대 150자)
}
// API 응답 타입
export type VerificationTargetManagementListApiResponse =
PageableList<VerificationTargetManagementResponse>;
export type VerificationTargetManagementDetailApiResponse =
ApiResponse<VerificationTargetManagementResponse>;
export type VerificationTargetManagementSaveApiResponse = ApiResponse<number>;
export type VerificationTargetManagementUpdateApiResponse = ApiResponse<number>;
export type VerificationTargetManagementDeleteApiResponse = ApiResponse<number>;
// 서비스 인터페이스
export interface VerificationTargetManagementService {
getVerificationTargetManagementList(
params: VerificationTargetManagementSearchParams,
): Promise<VerificationTargetManagementListApiResponse>;
getVerificationTargetManagementById(
vrfcTrgtSn: number,
): Promise<VerificationTargetManagementDetailApiResponse>;
saveVerificationTargetManagement(
request: VerificationTargetManagementSaveRequest,
): Promise<VerificationTargetManagementSaveApiResponse>;
updateVerificationTargetManagement(
vrfcTrgtSn: number,
request: VerificationTargetManagementUpdateRequest,
): Promise<VerificationTargetManagementUpdateApiResponse>;
deleteVerificationTargetManagement(
vrfcTrgtSn: number,
): Promise<VerificationTargetManagementDeleteApiResponse>;
}