feat: 경동기업 품목 기준 데이터 배포용 시더 구현

- ExportItemMasterDataCommand: tenant_id=287 데이터를 JSON으로 추출
- KyungdongItemMasterSeeder: JSON 기반 DELETE+재삽입 시더
  - Phase 1: item_pages/sections/fields + entity_relationships
  - Phase 2: categories(depth순) + items(배치500건)
  - Phase 3: item_details + prices
  - ID 매핑으로 환경별 충돌 없음, 트랜잭션 안전
- 8개 JSON 데이터 파일 포함 (총 약 1.5MB)
- .gitignore에 시더 데이터 예외 추가

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-02-04 22:47:03 +09:00
parent a6fc537a02
commit fa07e5b58a
11 changed files with 49829 additions and 0 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,82 @@
[
{
"tenant_id": 287,
"group_id": 1,
"page_name": "소모품 등록",
"item_type": "CS",
"source_table": "items",
"absolute_path": "\/소모품관리\/소모품 등록",
"is_active": 1,
"created_by": 1,
"updated_by": null,
"deleted_by": null,
"created_at": "2026-02-04 22:20:41",
"updated_at": "2026-02-04 22:20:41",
"deleted_at": null,
"_original_id": 1025
},
{
"tenant_id": 287,
"group_id": 1,
"page_name": "원자재 등록",
"item_type": "RM",
"source_table": "items",
"absolute_path": "\/원자재관리\/원자재 등록",
"is_active": 1,
"created_by": 1,
"updated_by": null,
"deleted_by": null,
"created_at": "2026-02-04 22:20:41",
"updated_at": "2026-02-04 22:20:41",
"deleted_at": null,
"_original_id": 1026
},
{
"tenant_id": 287,
"group_id": 1,
"page_name": "부자재 등록",
"item_type": "SM",
"source_table": "items",
"absolute_path": "\/부자재관리\/부자재 등록",
"is_active": 1,
"created_by": 1,
"updated_by": null,
"deleted_by": null,
"created_at": "2026-02-04 22:20:41",
"updated_at": "2026-02-04 22:20:41",
"deleted_at": null,
"_original_id": 1027
},
{
"tenant_id": 287,
"group_id": 1,
"page_name": "부품 등록",
"item_type": "PT",
"source_table": "items",
"absolute_path": "\/부품관리\/부품 등록",
"is_active": 1,
"created_by": 1,
"updated_by": 1,
"deleted_by": null,
"created_at": "2026-02-04 22:20:41",
"updated_at": "2026-02-04 22:20:41",
"deleted_at": null,
"_original_id": 1028
},
{
"tenant_id": 287,
"group_id": 1,
"page_name": "제품 등록",
"item_type": "FG",
"source_table": "items",
"absolute_path": "\/제품관리\/제품 등록",
"is_active": 1,
"created_by": 1,
"updated_by": null,
"deleted_by": null,
"created_at": "2026-02-04 22:20:41",
"updated_at": "2026-02-04 22:20:41",
"deleted_at": null,
"_original_id": 1029
}
]

View File

@@ -0,0 +1,189 @@
[
{
"tenant_id": 287,
"group_id": 1,
"title": "기본정보",
"type": "fields",
"order_no": 0,
"is_template": 0,
"is_default": 0,
"description": null,
"created_by": 1,
"updated_by": null,
"deleted_by": null,
"created_at": "2026-02-04 22:20:41",
"updated_at": "2026-02-04 22:20:41",
"deleted_at": null,
"_original_id": 107
},
{
"tenant_id": 287,
"group_id": 1,
"title": "기본 정보",
"type": "fields",
"order_no": 0,
"is_template": 0,
"is_default": 0,
"description": null,
"created_by": 1,
"updated_by": null,
"deleted_by": null,
"created_at": "2026-02-04 22:20:41",
"updated_at": "2026-02-04 22:20:41",
"deleted_at": null,
"_original_id": 108
},
{
"tenant_id": 287,
"group_id": 1,
"title": "기본 정보",
"type": "fields",
"order_no": 0,
"is_template": 0,
"is_default": 0,
"description": null,
"created_by": 1,
"updated_by": null,
"deleted_by": null,
"created_at": "2026-02-04 22:20:41",
"updated_at": "2026-02-04 22:20:41",
"deleted_at": null,
"_original_id": 109
},
{
"tenant_id": 287,
"group_id": 1,
"title": "기본 정보",
"type": "fields",
"order_no": 0,
"is_template": 0,
"is_default": 0,
"description": null,
"created_by": 1,
"updated_by": null,
"deleted_by": null,
"created_at": "2026-02-04 22:20:41",
"updated_at": "2026-02-04 22:20:41",
"deleted_at": null,
"_original_id": 110
},
{
"tenant_id": 287,
"group_id": 1,
"title": "조립 부품 정보",
"type": "fields",
"order_no": 1,
"is_template": 0,
"is_default": 0,
"description": null,
"created_by": 1,
"updated_by": 1,
"deleted_by": null,
"created_at": "2026-02-04 22:20:41",
"updated_at": "2026-02-04 22:20:41",
"deleted_at": null,
"_original_id": 111
},
{
"tenant_id": 287,
"group_id": 1,
"title": "절곡 부품",
"type": "fields",
"order_no": 2,
"is_template": 0,
"is_default": 0,
"description": null,
"created_by": 1,
"updated_by": null,
"deleted_by": null,
"created_at": "2026-02-04 22:20:41",
"updated_at": "2026-02-04 22:20:41",
"deleted_at": null,
"_original_id": 112
},
{
"tenant_id": 287,
"group_id": 1,
"title": "구매 부품",
"type": "fields",
"order_no": 3,
"is_template": 0,
"is_default": 0,
"description": null,
"created_by": 1,
"updated_by": null,
"deleted_by": null,
"created_at": "2026-02-04 22:20:41",
"updated_at": "2026-02-04 22:20:41",
"deleted_at": null,
"_original_id": 113
},
{
"tenant_id": 287,
"group_id": 1,
"title": "측면 규격 및 길이",
"type": "fields",
"order_no": 4,
"is_template": 0,
"is_default": 0,
"description": null,
"created_by": 1,
"updated_by": null,
"deleted_by": null,
"created_at": "2026-02-04 22:20:41",
"updated_at": "2026-02-04 22:20:41",
"deleted_at": null,
"_original_id": 114
},
{
"tenant_id": 287,
"group_id": 1,
"title": "BOM",
"type": "fields",
"order_no": 5,
"is_template": 0,
"is_default": 0,
"description": null,
"created_by": 1,
"updated_by": null,
"deleted_by": null,
"created_at": "2026-02-04 22:20:41",
"updated_at": "2026-02-04 22:20:41",
"deleted_at": null,
"_original_id": 115
},
{
"tenant_id": 287,
"group_id": 1,
"title": "부품 구성 (BOM)",
"type": "bom",
"order_no": 6,
"is_template": 0,
"is_default": 0,
"description": null,
"created_by": 1,
"updated_by": null,
"deleted_by": null,
"created_at": "2026-02-04 22:20:41",
"updated_at": "2026-02-04 22:20:41",
"deleted_at": null,
"_original_id": 116
},
{
"tenant_id": 287,
"group_id": 1,
"title": "기본 정보",
"type": "fields",
"order_no": 0,
"is_template": 0,
"is_default": 0,
"description": null,
"created_by": 1,
"updated_by": null,
"deleted_by": null,
"created_at": "2026-02-04 22:20:41",
"updated_at": "2026-02-04 22:20:41",
"deleted_at": null,
"_original_id": 117
}
]

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff