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:
byeongcheolryu
2025-11-28 19:57:52 +09:00
parent 9d0cb073ba
commit 8fd9cf2d40
9 changed files with 133 additions and 34 deletions

View File

@@ -124,6 +124,7 @@ export const transformFieldResponse = (
tenant_id: response.tenant_id,
section_id: response.section_id,
field_name: response.field_name,
field_key: response.field_key, // 2025-11-28: field_key 추가 (형식: {ID}_{사용자입력})
field_type: getFieldType(response.field_type), // API와 동일한 타입
order_no: response.order_no,
is_required: response.is_required,
@@ -197,6 +198,7 @@ export const transformMasterFieldResponse = (
id: response.id,
tenant_id: response.tenant_id,
field_name: response.field_name,
field_key: response.field_key ?? null, // 2025-11-28: field_key 추가 (형식: {ID}_{사용자입력})
field_type: getFieldType(response.field_type), // API와 동일한 타입
category: response.category,
description: response.description,
@@ -431,10 +433,11 @@ export const transformSectionTemplateFromSection = (
description: response.description,
default_fields: null, // API 응답에 없으므로 null
// 필드 변환은 별도 처리 필요 (fields가 있으면 TemplateField로 변환)
// 2025-11-28: fieldKey를 실제 field_key 사용하도록 수정 (기존: field_name에서 생성)
fields: response.fields?.map(field => ({
id: field.id.toString(),
name: field.field_name,
fieldKey: field.field_name.toLowerCase().replace(/\s+/g, '_'),
fieldKey: field.field_key || field.field_name.toLowerCase().replace(/\s+/g, '_'),
property: {
inputType: getFieldType(field.field_type),
required: field.is_required,