전체 카테고리 키 목록 조회 API 및 관련 기능 추가
- 카테고리 트리 컨트롤러에 전체 카테고리 키 목록 조회 라우트 추가: GET /api/category-tree/test/all-category-keys - 카테고리 트리 서비스에 전체 카테고리 키 목록 조회 메서드 구현: 모든 테이블과 컬럼 조합을 반환 - 채번규칙 컨트롤러에서 폼 데이터 처리 기능 추가: 코드 미리보기 시 카테고리 기반 폼 데이터 사용 - 관련 API 클라이언트 및 타입 정의 업데이트: 카테고리 키 조회 및 채번규칙 API에 대한 요청 처리 개선 이로 인해 카테고리 관리 및 채번규칙 테스트의 효율성이 향상되었습니다.
This commit is contained in:
@@ -202,9 +202,10 @@ router.delete("/:ruleId", authenticateToken, async (req: AuthenticatedRequest, r
|
||||
router.post("/:ruleId/preview", authenticateToken, async (req: AuthenticatedRequest, res: Response) => {
|
||||
const companyCode = req.user!.companyCode;
|
||||
const { ruleId } = req.params;
|
||||
const { formData } = req.body; // 폼 데이터 (카테고리 기반 채번 시 사용)
|
||||
|
||||
try {
|
||||
const previewCode = await numberingRuleService.previewCode(ruleId, companyCode);
|
||||
const previewCode = await numberingRuleService.previewCode(ruleId, companyCode, formData);
|
||||
return res.json({ success: true, data: { generatedCode: previewCode } });
|
||||
} catch (error: any) {
|
||||
logger.error("코드 미리보기 실패", { error: error.message });
|
||||
@@ -321,4 +322,90 @@ router.post("/test/save", authenticateToken, async (req: AuthenticatedRequest, r
|
||||
}
|
||||
});
|
||||
|
||||
// [테스트] 테스트 테이블에서 채번규칙 삭제
|
||||
router.delete("/test/:ruleId", authenticateToken, async (req: AuthenticatedRequest, res: Response) => {
|
||||
const companyCode = req.user!.companyCode;
|
||||
const { ruleId } = req.params;
|
||||
|
||||
try {
|
||||
await numberingRuleService.deleteRuleFromTest(ruleId, companyCode);
|
||||
return res.json({ success: true });
|
||||
} catch (error: any) {
|
||||
logger.error("테스트 테이블에서 채번규칙 삭제 실패", {
|
||||
error: error.message,
|
||||
companyCode,
|
||||
ruleId,
|
||||
});
|
||||
return res.status(500).json({ success: false, error: error.message });
|
||||
}
|
||||
});
|
||||
|
||||
// [테스트] 카테고리 조건 포함 채번규칙 조회
|
||||
router.get("/test/by-column-with-category", authenticateToken, async (req: AuthenticatedRequest, res: Response) => {
|
||||
const companyCode = req.user!.companyCode;
|
||||
const { tableName, columnName, categoryColumn, categoryValueId } = req.query;
|
||||
|
||||
try {
|
||||
if (!tableName || typeof tableName !== "string") {
|
||||
return res.status(400).json({ success: false, error: "tableName is required" });
|
||||
}
|
||||
if (!columnName || typeof columnName !== "string") {
|
||||
return res.status(400).json({ success: false, error: "columnName is required" });
|
||||
}
|
||||
|
||||
const rule = await numberingRuleService.getNumberingRuleByColumnWithCategory(
|
||||
companyCode,
|
||||
tableName,
|
||||
columnName,
|
||||
categoryColumn as string | undefined,
|
||||
categoryValueId ? Number(categoryValueId) : undefined
|
||||
);
|
||||
|
||||
if (!rule) {
|
||||
return res.status(404).json({ success: false, error: "규칙을 찾을 수 없습니다" });
|
||||
}
|
||||
|
||||
return res.json({ success: true, data: rule });
|
||||
} catch (error: any) {
|
||||
logger.error("카테고리 조건 포함 채번규칙 조회 실패", {
|
||||
error: error.message,
|
||||
companyCode,
|
||||
tableName,
|
||||
columnName,
|
||||
});
|
||||
return res.status(500).json({ success: false, error: error.message });
|
||||
}
|
||||
});
|
||||
|
||||
// [테스트] 테이블.컬럼별 모든 채번규칙 조회 (카테고리 조건별)
|
||||
router.get("/test/rules-by-table-column", authenticateToken, async (req: AuthenticatedRequest, res: Response) => {
|
||||
const companyCode = req.user!.companyCode;
|
||||
const { tableName, columnName } = req.query;
|
||||
|
||||
try {
|
||||
if (!tableName || typeof tableName !== "string") {
|
||||
return res.status(400).json({ success: false, error: "tableName is required" });
|
||||
}
|
||||
if (!columnName || typeof columnName !== "string") {
|
||||
return res.status(400).json({ success: false, error: "columnName is required" });
|
||||
}
|
||||
|
||||
const rules = await numberingRuleService.getRulesByTableColumn(
|
||||
companyCode,
|
||||
tableName,
|
||||
columnName
|
||||
);
|
||||
|
||||
return res.json({ success: true, data: rules });
|
||||
} catch (error: any) {
|
||||
logger.error("테이블.컬럼별 채번규칙 목록 조회 실패", {
|
||||
error: error.message,
|
||||
companyCode,
|
||||
tableName,
|
||||
columnName,
|
||||
});
|
||||
return res.status(500).json({ success: false, error: error.message });
|
||||
}
|
||||
});
|
||||
|
||||
export default router;
|
||||
|
||||
Reference in New Issue
Block a user