feat: 품목기준관리 Zustand 리팩토링 (테스트 페이지)

## 주요 변경사항
- Zustand 정규화 스토어 구현 (useItemMasterStore)
- 테스트 페이지 구현 (/items-management-test)
- 계층구조/섹션/항목/속성 탭 완성
- CRUD 다이얼로그 (페이지/섹션/필드/BOM/속성)
- Import 기능 (섹션/필드 불러오기)
- 드래그앤드롭 순서 변경
- 인라인 편집 기능

## 구현 완료 (약 72%)
- 페이지/섹션/필드 CRUD 
- BOM 관리 
- 단위/재질/표면처리 CRUD 
- Import/복제 기능 

## 미구현 기능
- 절대경로(absolute_path) 수정
- 페이지 복제
- 필드 조건부 표시
- 칼럼 관리

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
byeongcheolryu
2025-12-22 09:04:28 +09:00
parent d7f491fa84
commit 52b8b1f0be
29 changed files with 8248 additions and 18 deletions

View File

@@ -617,12 +617,14 @@ export interface TabColumnResponse {
// ============================================
/**
* 단위 옵션 생성 요청
* 단위 옵션 생성/수정 요청
* POST /v1/item-master/units
*/
export interface UnitOptionRequest {
label: string;
value: string;
unit_code: string;
unit_name: string;
description?: string;
is_active?: boolean;
}
/**
@@ -631,8 +633,78 @@ export interface UnitOptionRequest {
export interface UnitOptionResponse {
id: number;
tenant_id: number;
label: string;
value: string;
unit_code: string;
unit_name: string;
description?: string;
is_active: boolean;
created_by: number | null;
created_at: string;
updated_at: string;
}
// ============================================
// 재질 옵션
// ============================================
export type MaterialType = 'STEEL' | 'ALUMINUM' | 'PLASTIC' | 'OTHER';
/**
* 재질 옵션 생성/수정 요청
*/
export interface MaterialOptionRequest {
material_code: string;
material_name: string;
material_type: MaterialType;
thickness?: string;
description?: string;
is_active?: boolean;
}
/**
* 재질 옵션 응답
*/
export interface MaterialOptionResponse {
id: number;
tenant_id: number;
material_code: string;
material_name: string;
material_type: MaterialType;
thickness?: string;
description?: string;
is_active: boolean;
created_by: number | null;
created_at: string;
updated_at: string;
}
// ============================================
// 표면처리 옵션
// ============================================
export type TreatmentType = 'PAINTING' | 'COATING' | 'PLATING' | 'NONE';
/**
* 표면처리 옵션 생성/수정 요청
*/
export interface TreatmentOptionRequest {
treatment_code: string;
treatment_name: string;
treatment_type: TreatmentType;
description?: string;
is_active?: boolean;
}
/**
* 표면처리 옵션 응답
*/
export interface TreatmentOptionResponse {
id: number;
tenant_id: number;
treatment_code: string;
treatment_name: string;
treatment_type: TreatmentType;
description?: string;
is_active: boolean;
created_by: number | null;
created_at: string;
updated_at: string;