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

@@ -265,8 +265,10 @@ export function useTemplateManagement(): UseTemplateManagementReturn {
try {
// 수정 모드: 기존 필드 속성 업데이트
if (editingTemplateFieldId) {
// 2025-11-28: field_key 추가 (백엔드 요청에 포함)
const updateData = {
field_name: templateFieldName,
field_key: templateFieldKey, // 2025-11-28: field_key 추가
field_type: templateFieldInputType,
is_required: templateFieldRequired,
placeholder: templateFieldDescription || null,
@@ -307,11 +309,17 @@ export function useTemplateManagement(): UseTemplateManagementReturn {
};
// 템플릿 필드 수정 시작
// 2025-11-28: field_key 형식 {ID}_{사용자입력}에서 사용자입력 부분만 추출
const handleEditTemplateField = (templateId: number, field: TemplateField) => {
setCurrentTemplateId(templateId);
setEditingTemplateFieldId(Number(field.id));
setTemplateFieldName(field.name);
setTemplateFieldKey(field.fieldKey);
// 2025-11-28: field_key 형식 {ID}_{사용자입력}에서 사용자입력 부분만 추출
const fieldKeyValue = field.fieldKey || '';
const userInputPart = fieldKeyValue.includes('_')
? fieldKeyValue.substring(fieldKeyValue.indexOf('_') + 1)
: fieldKeyValue;
setTemplateFieldKey(userInputPart);
setTemplateFieldInputType(field.property.inputType);
setTemplateFieldRequired(field.property.required);
setTemplateFieldOptions(field.property.options?.join(', ') || '');