feat(WEB): DynamicItemForm 필드 타입 확장 및 컴포넌트 레지스트리 추가
- DynamicFieldRenderer에 신규 필드 타입 추가 (Currency, File, MultiSelect, Radio, Reference, Toggle, UnitValue, Computed) - DynamicTableSection 및 TableCellRenderer 추가 - 필드 프리셋 및 설정 구조 분리 - 컴포넌트 레지스트리 개발 도구 페이지 추가 - UniversalListPage 개선 - 근태관리 코드 정리 - 즐겨찾기 기능 및 동적 필드 타입 백엔드 스펙 문서 추가 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -200,6 +200,27 @@ export interface LinkSectionRequest {
|
||||
// 필드 관리
|
||||
// ============================================
|
||||
|
||||
/**
|
||||
* 필드 타입 정의
|
||||
* 기본 6종 + 확장 8종 = 14종
|
||||
* 2026-02-11: 동적 필드 타입 확장 (Phase 1~3)
|
||||
*/
|
||||
export type ItemFieldType =
|
||||
// 기본 타입 (기존)
|
||||
| 'textbox' | 'number' | 'dropdown' | 'checkbox' | 'date' | 'textarea'
|
||||
// Phase 1: 핵심 타입
|
||||
| 'reference' | 'multi-select' | 'file'
|
||||
// Phase 2: 편의 타입
|
||||
| 'currency' | 'unit-value' | 'radio'
|
||||
// Phase 3: 고급 타입
|
||||
| 'toggle' | 'computed';
|
||||
|
||||
/**
|
||||
* 섹션 타입 정의
|
||||
* 2026-02-11: 'table' 타입 추가 (범용 테이블 섹션)
|
||||
*/
|
||||
export type ItemSectionType = 'fields' | 'bom' | 'table';
|
||||
|
||||
/**
|
||||
* 필드 생성/수정 요청
|
||||
* POST /v1/item-master/sections/{sectionId}/fields
|
||||
@@ -208,7 +229,7 @@ export interface LinkSectionRequest {
|
||||
export interface ItemFieldRequest {
|
||||
field_name: string;
|
||||
field_key?: string | null; // 2025-11-28: 필드 키 (영문, 숫자, 언더스코어만 허용, 영문으로 시작)
|
||||
field_type: 'textbox' | 'number' | 'dropdown' | 'checkbox' | 'date' | 'textarea';
|
||||
field_type: ItemFieldType;
|
||||
section_id?: number | null;
|
||||
master_field_id?: number | null;
|
||||
order_no?: number;
|
||||
@@ -235,7 +256,7 @@ export interface ItemFieldResponse {
|
||||
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';
|
||||
field_type: ItemFieldType;
|
||||
order_no: number;
|
||||
is_required: boolean;
|
||||
placeholder: string | null;
|
||||
@@ -280,7 +301,7 @@ export interface IndependentFieldRequest {
|
||||
group_id?: number;
|
||||
field_name: string;
|
||||
field_key?: string; // 2025-11-28: 필드 키 (영문, 숫자, 언더스코어만 허용, 영문으로 시작)
|
||||
field_type: 'textbox' | 'number' | 'dropdown' | 'checkbox' | 'date' | 'textarea';
|
||||
field_type: ItemFieldType;
|
||||
is_required?: boolean;
|
||||
default_value?: string;
|
||||
placeholder?: string;
|
||||
@@ -524,7 +545,7 @@ export interface SectionTemplateResponse {
|
||||
*/
|
||||
export interface MasterFieldRequest {
|
||||
field_name: string;
|
||||
field_type: 'textbox' | 'number' | 'dropdown' | 'checkbox' | 'date' | 'textarea';
|
||||
field_type: ItemFieldType;
|
||||
category?: string;
|
||||
description?: string;
|
||||
is_common?: boolean;
|
||||
@@ -544,7 +565,7 @@ export interface MasterFieldResponse {
|
||||
tenant_id: number;
|
||||
field_name: string;
|
||||
field_key: string | null; // 2025-11-28: 필드 키 추가 (형식: {ID}_{사용자입력})
|
||||
field_type: 'textbox' | 'number' | 'dropdown' | 'checkbox' | 'date' | 'textarea';
|
||||
field_type: ItemFieldType;
|
||||
category: string | null;
|
||||
description: string | null;
|
||||
is_common: boolean;
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
* ItemMasterContext에서 분리됨 (2026-01-06)
|
||||
*/
|
||||
|
||||
import type { ItemFieldType } from './item-master-api';
|
||||
|
||||
// ===== 기본 타입 =====
|
||||
|
||||
// 전개도 상세 정보
|
||||
@@ -244,7 +246,7 @@ export interface ItemMasterField {
|
||||
tenant_id: number;
|
||||
field_name: string;
|
||||
field_key?: string | null; // 2025-11-28: field_key 추가 (형식: {ID}_{사용자입력})
|
||||
field_type: 'textbox' | 'number' | 'dropdown' | 'checkbox' | 'date' | 'textarea'; // API와 동일
|
||||
field_type: ItemFieldType; // API와 동일
|
||||
category: string | null;
|
||||
description: string | null;
|
||||
is_common: boolean; // 공통 필드 여부
|
||||
@@ -280,7 +282,7 @@ export interface ItemField {
|
||||
master_field_id?: number | null; // 마스터 항목 ID (마스터에서 가져온 경우)
|
||||
field_name: string; // 항목명 (name → field_name)
|
||||
field_key?: string | null; // 2025-11-28: 필드 키 (형식: {ID}_{사용자입력}, 백엔드에서 생성)
|
||||
field_type: 'textbox' | 'number' | 'dropdown' | 'checkbox' | 'date' | 'textarea'; // 필드 타입
|
||||
field_type: ItemFieldType; // 필드 타입
|
||||
order_no: number; // 항목 순서 (order → order_no, required)
|
||||
is_required: boolean; // 필수 여부
|
||||
placeholder?: string | null; // 플레이스홀더
|
||||
|
||||
Reference in New Issue
Block a user