fix(numbering-rule): 채번규칙 저장 시 allocateNumberingCode로 실제 순번 할당

- generateNumberingCode를 allocateNumberingCode로 변경 (순번 실제 증가)

- saveSingleRow/saveMultipleRows/saveWithMultiTable 모두 적용

- NumberingRuleCard: 파트 타입 변경 시 defaultAutoConfig 적용

- NumberingRuleDesigner: 저장 시 partsWithDefaults로 기본값 병합

- sequenceLength/numberLength 기본값 4에서 3으로 변경

- 불필요한 console.log 제거
This commit is contained in:
SeongHyun Kim
2025-12-08 19:10:07 +09:00
parent b15b6e21ea
commit d908de7f66
6 changed files with 101 additions and 90 deletions

View File

@@ -48,7 +48,20 @@ export const NumberingRuleCard: React.FC<NumberingRuleCardProps> = ({
<Label className="text-xs font-medium sm:text-sm"> </Label>
<Select
value={part.partType}
onValueChange={(value) => onUpdate({ partType: value as CodePartType })}
onValueChange={(value) => {
const newPartType = value as CodePartType;
// 타입 변경 시 해당 타입의 기본 autoConfig 설정
const defaultAutoConfig: Record<string, any> = {
sequence: { sequenceLength: 3, startFrom: 1 },
number: { numberLength: 4, numberValue: 1 },
date: { dateFormat: "YYYYMMDD" },
text: { textValue: "CODE" },
};
onUpdate({
partType: newPartType,
autoConfig: defaultAutoConfig[newPartType] || {}
});
}}
disabled={isPreview}
>
<SelectTrigger className="h-8 text-xs sm:h-10 sm:text-sm">

View File

@@ -196,10 +196,31 @@ export const NumberingRuleDesigner: React.FC<NumberingRuleDesignerProps> = ({
try {
const existing = savedRules.find((r) => r.ruleId === currentRule.ruleId);
// 파트별 기본 autoConfig 정의
const defaultAutoConfigs: Record<string, any> = {
sequence: { sequenceLength: 3, startFrom: 1 },
number: { numberLength: 4, numberValue: 1 },
date: { dateFormat: "YYYYMMDD" },
text: { textValue: "" },
};
// 저장 전에 각 파트의 autoConfig에 기본값 채우기
const partsWithDefaults = currentRule.parts.map((part) => {
if (part.generationMethod === "auto") {
const defaults = defaultAutoConfigs[part.partType] || {};
return {
...part,
autoConfig: { ...defaults, ...part.autoConfig },
};
}
return part;
});
// 저장 전에 현재 화면의 테이블명과 menuObjid 자동 설정
// 메뉴 기반으로 채번규칙 관리 (menuObjid로 필터링)
const ruleToSave = {
...currentRule,
parts: partsWithDefaults,
scopeType: "menu" as const, // 메뉴 기반 채번규칙
tableName: currentTableName || currentRule.tableName || null, // 현재 테이블명 (참고용)
menuObjid: menuObjid || currentRule.menuObjid || null, // 메뉴 OBJID (필터링 기준)