전체 카테고리 키 목록 조회 API 및 관련 기능 추가

- 카테고리 트리 컨트롤러에 전체 카테고리 키 목록 조회 라우트 추가: GET /api/category-tree/test/all-category-keys
- 카테고리 트리 서비스에 전체 카테고리 키 목록 조회 메서드 구현: 모든 테이블과 컬럼 조합을 반환
- 채번규칙 컨트롤러에서 폼 데이터 처리 기능 추가: 코드 미리보기 시 카테고리 기반 폼 데이터 사용
- 관련 API 클라이언트 및 타입 정의 업데이트: 카테고리 키 조회 및 채번규칙 API에 대한 요청 처리 개선

이로 인해 카테고리 관리 및 채번규칙 테스트의 효율성이 향상되었습니다.
This commit is contained in:
kjs
2026-01-21 17:51:59 +09:00
parent ae4e21e1ac
commit 623ade4f28
14 changed files with 1601 additions and 138 deletions

View File

@@ -189,3 +189,19 @@ export async function getCategoryColumns(
}
}
/**
* 전체 카테고리 키 목록 조회 (모든 테이블.컬럼 조합)
*/
export async function getAllCategoryKeys(): Promise<ApiResponse<{ tableName: string; columnName: string }[]>> {
try {
const response = await apiClient.get("/category-tree/test/all-category-keys");
return response.data;
} catch (error: unknown) {
const err = error as { response?: { data?: { error?: string } }; message?: string };
return {
success: false,
error: err.response?.data?.error || err.message || "전체 카테고리 키 조회 실패",
};
}
}

View File

@@ -105,9 +105,12 @@ export async function deleteNumberingRule(ruleId: string): Promise<ApiResponse<v
/**
* 코드 미리보기 (순번 증가 없음)
* 화면 표시용으로 사용
* @param ruleId 채번 규칙 ID
* @param formData 폼 데이터 (카테고리 기반 채번 시 사용)
*/
export async function previewNumberingCode(
ruleId: string
ruleId: string,
formData?: Record<string, unknown>
): Promise<ApiResponse<{ generatedCode: string }>> {
// ruleId 유효성 검사
if (!ruleId || ruleId === "undefined" || ruleId === "null") {
@@ -115,16 +118,19 @@ export async function previewNumberingCode(
}
try {
const response = await apiClient.post(`/numbering-rules/${ruleId}/preview`);
const response = await apiClient.post(`/numbering-rules/${ruleId}/preview`, {
formData: formData || {},
});
if (!response.data) {
return { success: false, error: "서버 응답이 비어있습니다" };
}
return response.data;
} catch (error: any) {
} catch (error: unknown) {
const err = error as { response?: { data?: { error?: string; message?: string } }; message?: string };
const errorMessage =
error.response?.data?.error ||
error.response?.data?.message ||
error.message ||
err.response?.data?.error ||
err.response?.data?.message ||
err.message ||
"코드 미리보기 실패";
return { success: false, error: errorMessage };
}
@@ -208,3 +214,64 @@ export async function saveNumberingRuleToTest(
}
}
/**
* [테스트] 테스트 테이블에서 채번규칙 삭제
* numbering_rules_test 테이블 사용
*/
export async function deleteNumberingRuleFromTest(
ruleId: string
): Promise<ApiResponse<void>> {
try {
const response = await apiClient.delete(`/numbering-rules/test/${ruleId}`);
return response.data;
} catch (error: unknown) {
const err = error as { response?: { data?: { error?: string } }; message?: string };
return {
success: false,
error: err.response?.data?.error || err.message || "테스트 규칙 삭제 실패",
};
}
}
/**
* [테스트] 카테고리 조건 포함 채번규칙 조회
*/
export async function getNumberingRuleByColumnWithCategory(
tableName: string,
columnName: string,
categoryColumn?: string,
categoryValueId?: number
): Promise<ApiResponse<NumberingRuleConfig>> {
try {
const response = await apiClient.get("/numbering-rules/test/by-column-with-category", {
params: { tableName, columnName, categoryColumn, categoryValueId },
});
return response.data;
} catch (error: any) {
return {
success: false,
error: error.response?.data?.error || error.message || "카테고리 조건 규칙 조회 실패",
};
}
}
/**
* [테스트] 테이블.컬럼별 모든 채번규칙 조회 (카테고리 조건별)
*/
export async function getRulesByTableColumn(
tableName: string,
columnName: string
): Promise<ApiResponse<NumberingRuleConfig[]>> {
try {
const response = await apiClient.get("/numbering-rules/test/rules-by-table-column", {
params: { tableName, columnName },
});
return response.data;
} catch (error: any) {
return {
success: false,
error: error.response?.data?.error || error.message || "테이블.컬럼별 규칙 목록 조회 실패",
};
}
}