feat: 채번 규칙 저장 API 및 테이블 관리 기능 개선
- 채번 규칙 저장 API에서 ruleName을 필수로 설정하고, tableName과 columnName은 선택적으로 변경하였습니다. - 테이블 관리 페이지에서 자동 저장 기능을 제거하고, 전체 저장 버튼으로 저장하도록 수정하였습니다. - 카테고리 컬럼 선택 시, 선택된 컬럼의 테이블 이름과 컬럼 이름을 함께 전달하도록 개선하였습니다.
This commit is contained in:
parent
607d686535
commit
351d53cd0c
|
|
@ -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"
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1810,7 +1810,7 @@ export default function TableManagementPage() {
|
|||
<CommandGroup>
|
||||
<CommandItem
|
||||
value="none"
|
||||
onSelect={async () => {
|
||||
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() {
|
|||
<CommandItem
|
||||
key={rule.ruleId}
|
||||
value={`${rule.ruleName} ${rule.ruleId}`}
|
||||
onSelect={async () => {
|
||||
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"
|
||||
>
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Reference in New Issue