refactor: DynamicItemForm 훅/컴포넌트 분리 리팩토링
대규모 코드 구조 개선: - useFieldDetection: 필드 감지 로직 분리 - useFileHandling: 파일 업로드 로직 분리 - useItemCodeGeneration: 품목코드 자동생성 로직 분리 - usePartTypeHandling: 파트타입 처리 로직 분리 - FormHeader, ValidationAlert, FileUploadFields 컴포넌트 분리 - DuplicateCodeDialog 컴포넌트 분리 - index.tsx 1300줄+ 감소로 가독성 및 유지보수성 향상 - BOM 검색 최적화 (검색어 입력 시에만 API 호출) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -306,16 +306,13 @@ export function ItemMasterDataManagement() {
|
||||
description: section.description || null,
|
||||
default_fields: null,
|
||||
// ItemField → TemplateField 변환
|
||||
// 2025-11-28: field_key에서 사용자입력 부분만 추출 (백엔드 형식: {ID}_{사용자입력})
|
||||
// 2025-12-16: field_key 전체 표시 (백엔드 형식: {ID}_{사용자입력})
|
||||
fields: section.fields?.map(field => {
|
||||
const rawKey = field.field_key || '';
|
||||
const displayKey = rawKey.includes('_')
|
||||
? rawKey.substring(rawKey.indexOf('_') + 1)
|
||||
: rawKey || field.field_name.toLowerCase().replace(/\s+/g, '_');
|
||||
const rawKey = field.field_key || field.field_name.toLowerCase().replace(/\s+/g, '_');
|
||||
return {
|
||||
id: field.id.toString(),
|
||||
name: field.field_name,
|
||||
fieldKey: displayKey,
|
||||
fieldKey: rawKey,
|
||||
property: {
|
||||
inputType: field.field_type,
|
||||
// 2025-11-27: is_required와 properties.required 둘 다 체크
|
||||
@@ -334,7 +331,7 @@ export function ItemMasterDataManagement() {
|
||||
);
|
||||
|
||||
// 2. 독립 섹션들 (page_id = null, 연결 해제된 섹션)
|
||||
// 2025-11-28: field_key에서 사용자입력 부분만 추출 (백엔드 형식: {ID}_{사용자입력})
|
||||
// 2025-12-16: field_key 전체 표시 (백엔드 형식: {ID}_{사용자입력})
|
||||
const unlinkedSections = independentSections.map(section => ({
|
||||
id: section.id,
|
||||
tenant_id: section.tenant_id || 0,
|
||||
@@ -343,14 +340,11 @@ export function ItemMasterDataManagement() {
|
||||
description: section.description || null,
|
||||
default_fields: null,
|
||||
fields: section.fields?.map(field => {
|
||||
const rawKey = field.field_key || '';
|
||||
const displayKey = rawKey.includes('_')
|
||||
? rawKey.substring(rawKey.indexOf('_') + 1)
|
||||
: rawKey || field.field_name.toLowerCase().replace(/\s+/g, '_');
|
||||
const rawKey = field.field_key || field.field_name.toLowerCase().replace(/\s+/g, '_');
|
||||
return {
|
||||
id: field.id.toString(),
|
||||
name: field.field_name,
|
||||
fieldKey: displayKey,
|
||||
fieldKey: rawKey,
|
||||
property: {
|
||||
inputType: field.field_type,
|
||||
// 2025-11-27: is_required와 properties.required 둘 다 체크
|
||||
|
||||
Reference in New Issue
Block a user