diff --git a/backend-node/src/controllers/numberingRuleController.ts b/backend-node/src/controllers/numberingRuleController.ts index 333325a8..9a53a1cb 100644 --- a/backend-node/src/controllers/numberingRuleController.ts +++ b/backend-node/src/controllers/numberingRuleController.ts @@ -284,6 +284,7 @@ router.get("/test/by-column/:tableName/:columnName", authenticateToken, async (r }); // [테스트] 테스트 테이블에 채번 규칙 저장 +// 채번 규칙은 독립적으로 생성 가능 (나중에 테이블 타입 관리에서 컬럼에 연결) router.post("/test/save", authenticateToken, async (req: AuthenticatedRequest, res: Response) => { const companyCode = req.user!.companyCode; const userId = req.user!.userId; @@ -291,15 +292,17 @@ router.post("/test/save", authenticateToken, async (req: AuthenticatedRequest, r logger.info("[테스트] 채번 규칙 저장 요청", { ruleId: ruleConfig.ruleId, - tableName: ruleConfig.tableName, - columnName: ruleConfig.columnName, + ruleName: ruleConfig.ruleName, + tableName: ruleConfig.tableName || "(미지정)", + columnName: ruleConfig.columnName || "(미지정)", }); try { - if (!ruleConfig.tableName || !ruleConfig.columnName) { + // ruleName만 필수, tableName/columnName은 선택 (나중에 테이블 타입 관리에서 연결) + if (!ruleConfig.ruleName) { return res.status(400).json({ success: false, - error: "tableName and columnName are required" + error: "ruleName is required" }); } diff --git a/frontend/app/(main)/admin/systemMng/tableMngList/page.tsx b/frontend/app/(main)/admin/systemMng/tableMngList/page.tsx index e10bb7f6..73e5d282 100644 --- a/frontend/app/(main)/admin/systemMng/tableMngList/page.tsx +++ b/frontend/app/(main)/admin/systemMng/tableMngList/page.tsx @@ -1810,7 +1810,7 @@ export default function TableManagementPage() { { + onSelect={() => { const columnIndex = columns.findIndex( (c) => c.columnName === column.columnName, ); @@ -1819,9 +1819,7 @@ export default function TableManagementPage() { ...prev, [column.columnName]: false, })); - // 🆕 자동 저장 (선택 해제) - const updatedColumn = { ...column, numberingRuleId: undefined }; - await handleSaveColumn(updatedColumn); + // 자동 저장 제거 - 전체 저장 버튼으로 저장 }} className="text-xs" > @@ -1837,19 +1835,17 @@ export default function TableManagementPage() { { + onSelect={() => { const columnIndex = columns.findIndex( (c) => c.columnName === column.columnName, ); - // 상태 업데이트 + // 상태 업데이트만 (자동 저장 제거) handleColumnChange(columnIndex, "numberingRuleId", rule.ruleId); setNumberingComboboxOpen((prev) => ({ ...prev, [column.columnName]: false, })); - // 🆕 자동 저장 - const updatedColumn = { ...column, numberingRuleId: rule.ruleId }; - await handleSaveColumn(updatedColumn); + // 전체 저장 버튼으로 저장 }} className="text-xs" > diff --git a/frontend/components/table-category/CategoryColumnList.tsx b/frontend/components/table-category/CategoryColumnList.tsx index bfdd0f9a..ac4fa960 100644 --- a/frontend/components/table-category/CategoryColumnList.tsx +++ b/frontend/components/table-category/CategoryColumnList.tsx @@ -196,7 +196,7 @@ export function CategoryColumnList({ tableName, selectedColumn, onColumnSelect, // 첫 번째 컬럼 자동 선택 if (columnsWithCount.length > 0 && !selectedColumn) { const firstCol = columnsWithCount[0]; - onColumnSelect(firstCol.columnName, firstCol.columnLabel, firstCol.tableName); + onColumnSelect(`${firstCol.tableName}.${firstCol.columnName}`, firstCol.columnLabel, firstCol.tableName); } } catch (error) { console.error("❌ 카테고리 컬럼 조회 실패:", error);