fix: field_key 저장 및 표시 기능 완전 수정
- field_key 저장 시 백엔드 형식({ID}_{사용자입력})으로 전송
- API 요청 전 field_key 유효성 검증 추가
- 계층구조 탭 필드 추가/수정 시 field_key 반영
- 섹션 탭에서 field_key 표시 시 사용자입력 부분만 추출
- sectionsAsTemplates useMemo에서 linkedSections/unlinkedSections 모두 수정
- 마스터 필드, 템플릿 필드 다이얼로그에서 field_key 입력 지원
- ItemMasterContext에 field_key 상태 업데이트 로직 추가
- transformers에서 field_key 변환 처리
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -199,6 +199,7 @@ export interface LinkSectionRequest {
|
||||
*/
|
||||
export interface ItemFieldRequest {
|
||||
field_name: string;
|
||||
field_key?: string; // 2025-11-28: 필드 키 (영문, 숫자, 언더스코어만 허용, 영문으로 시작)
|
||||
field_type: 'textbox' | 'number' | 'dropdown' | 'checkbox' | 'date' | 'textarea';
|
||||
is_required?: boolean;
|
||||
placeholder?: string;
|
||||
@@ -207,6 +208,7 @@ export interface ItemFieldRequest {
|
||||
validation_rules?: Record<string, any>; // {"min": 0, "max": 100, "pattern": "regex"}
|
||||
options?: Array<{ label: string; value: string }>; // dropdown 옵션
|
||||
properties?: Record<string, any>; // {"unit": "mm", "precision": 2, "format": "YYYY-MM-DD"}
|
||||
is_locked?: boolean; // 2025-11-28: 잠금 여부
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -221,6 +223,7 @@ export interface ItemFieldResponse {
|
||||
section_id: number | null; // 섹션 ID (null이면 독립 필드/마스터 항목)
|
||||
master_field_id?: number | null; // 마스터 항목 ID (마스터에서 가져온 경우)
|
||||
field_name: string;
|
||||
field_key: string | null; // 2025-11-28: 필드 키 (형식: {ID}_{사용자입력})
|
||||
field_type: 'textbox' | 'number' | 'dropdown' | 'checkbox' | 'date' | 'textarea';
|
||||
order_no: number;
|
||||
is_required: boolean;
|
||||
@@ -234,6 +237,10 @@ export interface ItemFieldResponse {
|
||||
category: string | null; // 카테고리 (예: "공통", "완제품", "부품")
|
||||
description: string | null; // 필드 설명
|
||||
is_common: boolean; // 공통 필드 여부
|
||||
// 2025-11-28 추가: 잠금 기능
|
||||
is_locked: boolean; // 잠금 여부
|
||||
locked_by: number | null; // 잠금 설정자
|
||||
locked_at: string | null; // 잠금 시간
|
||||
created_by: number | null;
|
||||
updated_by: number | null;
|
||||
created_at: string;
|
||||
@@ -260,6 +267,7 @@ export interface FieldReorderRequest {
|
||||
export interface IndependentFieldRequest {
|
||||
group_id?: number;
|
||||
field_name: string;
|
||||
field_key?: string; // 2025-11-28: 필드 키 (영문, 숫자, 언더스코어만 허용, 영문으로 시작)
|
||||
field_type: 'textbox' | 'number' | 'dropdown' | 'checkbox' | 'date' | 'textarea';
|
||||
is_required?: boolean;
|
||||
default_value?: string;
|
||||
@@ -272,6 +280,7 @@ export interface IndependentFieldRequest {
|
||||
category?: string;
|
||||
description?: string;
|
||||
is_common?: boolean;
|
||||
is_locked?: boolean; // 2025-11-28: 잠금 여부
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -522,6 +531,7 @@ export interface MasterFieldResponse {
|
||||
id: number;
|
||||
tenant_id: number;
|
||||
field_name: string;
|
||||
field_key: string | null; // 2025-11-28: 필드 키 추가 (형식: {ID}_{사용자입력})
|
||||
field_type: 'textbox' | 'number' | 'dropdown' | 'checkbox' | 'date' | 'textarea';
|
||||
category: string | null;
|
||||
description: string | null;
|
||||
|
||||
Reference in New Issue
Block a user