feat: ItemMaster 데이터베이스 구조 구축 (9개 테이블)
- 마이그레이션 9개 생성 (unit_options, section_templates, item_master_fields, item_pages, item_sections, item_fields, item_bom_items, custom_tabs, tab_columns)
- Eloquent 모델 9개 구현 (ItemMaster 네임스페이스)
- ItemMasterSeeder 작성 및 테스트 데이터 생성
주요 특징:
- Multi-tenant 지원 (BelongsToTenant trait)
- Soft Delete 적용 (deleted_at, deleted_by)
- 감사 로그 지원 (created_by, updated_by)
- JSON 필드로 동적 속성 지원 (display_condition, validation_rules, options, properties)
- FK 제약조건 및 Composite Index 설정
- 계층 구조 (ItemPage → ItemSection → ItemField/ItemBomItem)
SAM API Development Rules 준수
2025-11-20 16:36:55 +09:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
namespace Database\Seeders;
|
|
|
|
|
|
2025-11-27 15:51:00 +09:00
|
|
|
use App\Models\ItemMaster\CustomTab;
|
|
|
|
|
use App\Models\ItemMaster\EntityRelationship;
|
|
|
|
|
use App\Models\ItemMaster\ItemBomItem;
|
|
|
|
|
use App\Models\ItemMaster\ItemField;
|
feat: ItemMaster 데이터베이스 구조 구축 (9개 테이블)
- 마이그레이션 9개 생성 (unit_options, section_templates, item_master_fields, item_pages, item_sections, item_fields, item_bom_items, custom_tabs, tab_columns)
- Eloquent 모델 9개 구현 (ItemMaster 네임스페이스)
- ItemMasterSeeder 작성 및 테스트 데이터 생성
주요 특징:
- Multi-tenant 지원 (BelongsToTenant trait)
- Soft Delete 적용 (deleted_at, deleted_by)
- 감사 로그 지원 (created_by, updated_by)
- JSON 필드로 동적 속성 지원 (display_condition, validation_rules, options, properties)
- FK 제약조건 및 Composite Index 설정
- 계층 구조 (ItemPage → ItemSection → ItemField/ItemBomItem)
SAM API Development Rules 준수
2025-11-20 16:36:55 +09:00
|
|
|
use App\Models\ItemMaster\ItemPage;
|
|
|
|
|
use App\Models\ItemMaster\ItemSection;
|
2025-11-27 15:51:00 +09:00
|
|
|
use App\Models\ItemMaster\SectionTemplate;
|
feat: ItemMaster 데이터베이스 구조 구축 (9개 테이블)
- 마이그레이션 9개 생성 (unit_options, section_templates, item_master_fields, item_pages, item_sections, item_fields, item_bom_items, custom_tabs, tab_columns)
- Eloquent 모델 9개 구현 (ItemMaster 네임스페이스)
- ItemMasterSeeder 작성 및 테스트 데이터 생성
주요 특징:
- Multi-tenant 지원 (BelongsToTenant trait)
- Soft Delete 적용 (deleted_at, deleted_by)
- 감사 로그 지원 (created_by, updated_by)
- JSON 필드로 동적 속성 지원 (display_condition, validation_rules, options, properties)
- FK 제약조건 및 Composite Index 설정
- 계층 구조 (ItemPage → ItemSection → ItemField/ItemBomItem)
SAM API Development Rules 준수
2025-11-20 16:36:55 +09:00
|
|
|
use App\Models\ItemMaster\TabColumn;
|
2025-11-27 15:51:00 +09:00
|
|
|
use App\Models\ItemMaster\UnitOption;
|
feat: ItemMaster 데이터베이스 구조 구축 (9개 테이블)
- 마이그레이션 9개 생성 (unit_options, section_templates, item_master_fields, item_pages, item_sections, item_fields, item_bom_items, custom_tabs, tab_columns)
- Eloquent 모델 9개 구현 (ItemMaster 네임스페이스)
- ItemMasterSeeder 작성 및 테스트 데이터 생성
주요 특징:
- Multi-tenant 지원 (BelongsToTenant trait)
- Soft Delete 적용 (deleted_at, deleted_by)
- 감사 로그 지원 (created_by, updated_by)
- JSON 필드로 동적 속성 지원 (display_condition, validation_rules, options, properties)
- FK 제약조건 및 Composite Index 설정
- 계층 구조 (ItemPage → ItemSection → ItemField/ItemBomItem)
SAM API Development Rules 준수
2025-11-20 16:36:55 +09:00
|
|
|
use Illuminate\Database\Seeder;
|
|
|
|
|
|
|
|
|
|
class ItemMasterSeeder extends Seeder
|
|
|
|
|
{
|
|
|
|
|
/**
|
|
|
|
|
* Run the database seeds.
|
|
|
|
|
*/
|
|
|
|
|
public function run(): void
|
|
|
|
|
{
|
|
|
|
|
$tenantId = 1; // 기본 테넌트 ID (실제 환경에 맞게 조정)
|
|
|
|
|
$userId = 1; // 기본 사용자 ID (실제 환경에 맞게 조정)
|
2025-11-27 15:51:00 +09:00
|
|
|
$groupId = 1; // 기본 그룹 ID
|
feat: ItemMaster 데이터베이스 구조 구축 (9개 테이블)
- 마이그레이션 9개 생성 (unit_options, section_templates, item_master_fields, item_pages, item_sections, item_fields, item_bom_items, custom_tabs, tab_columns)
- Eloquent 모델 9개 구현 (ItemMaster 네임스페이스)
- ItemMasterSeeder 작성 및 테스트 데이터 생성
주요 특징:
- Multi-tenant 지원 (BelongsToTenant trait)
- Soft Delete 적용 (deleted_at, deleted_by)
- 감사 로그 지원 (created_by, updated_by)
- JSON 필드로 동적 속성 지원 (display_condition, validation_rules, options, properties)
- FK 제약조건 및 Composite Index 설정
- 계층 구조 (ItemPage → ItemSection → ItemField/ItemBomItem)
SAM API Development Rules 준수
2025-11-20 16:36:55 +09:00
|
|
|
|
|
|
|
|
// 1. 단위 옵션
|
|
|
|
|
$units = [
|
|
|
|
|
['label' => '킬로그램', 'value' => 'kg'],
|
|
|
|
|
['label' => '개', 'value' => 'EA'],
|
|
|
|
|
['label' => '미터', 'value' => 'm'],
|
|
|
|
|
['label' => '밀리미터', 'value' => 'mm'],
|
|
|
|
|
['label' => '리터', 'value' => 'L'],
|
|
|
|
|
['label' => '박스', 'value' => 'BOX'],
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
foreach ($units as $unit) {
|
|
|
|
|
UnitOption::create([
|
|
|
|
|
'tenant_id' => $tenantId,
|
|
|
|
|
'label' => $unit['label'],
|
|
|
|
|
'value' => $unit['value'],
|
|
|
|
|
'created_by' => $userId,
|
|
|
|
|
]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 2. 섹션 템플릿
|
|
|
|
|
$templates = [
|
|
|
|
|
['title' => '기본 정보', 'type' => 'fields', 'description' => '제품 기본 정보 입력용 템플릿', 'is_default' => true],
|
|
|
|
|
['title' => '치수 정보', 'type' => 'fields', 'description' => '제품 치수 정보 입력용 템플릿', 'is_default' => false],
|
|
|
|
|
['title' => 'BOM 구성', 'type' => 'bom', 'description' => 'BOM 항목 관리용 템플릿', 'is_default' => true],
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
foreach ($templates as $template) {
|
|
|
|
|
SectionTemplate::create([
|
|
|
|
|
'tenant_id' => $tenantId,
|
|
|
|
|
'title' => $template['title'],
|
|
|
|
|
'type' => $template['type'],
|
|
|
|
|
'description' => $template['description'],
|
|
|
|
|
'is_default' => $template['is_default'],
|
|
|
|
|
'created_by' => $userId,
|
|
|
|
|
]);
|
|
|
|
|
}
|
|
|
|
|
|
2025-11-27 15:51:00 +09:00
|
|
|
// 3. 마스터 필드 (독립 엔티티로 생성)
|
feat: ItemMaster 데이터베이스 구조 구축 (9개 테이블)
- 마이그레이션 9개 생성 (unit_options, section_templates, item_master_fields, item_pages, item_sections, item_fields, item_bom_items, custom_tabs, tab_columns)
- Eloquent 모델 9개 구현 (ItemMaster 네임스페이스)
- ItemMasterSeeder 작성 및 테스트 데이터 생성
주요 특징:
- Multi-tenant 지원 (BelongsToTenant trait)
- Soft Delete 적용 (deleted_at, deleted_by)
- 감사 로그 지원 (created_by, updated_by)
- JSON 필드로 동적 속성 지원 (display_condition, validation_rules, options, properties)
- FK 제약조건 및 Composite Index 설정
- 계층 구조 (ItemPage → ItemSection → ItemField/ItemBomItem)
SAM API Development Rules 준수
2025-11-20 16:36:55 +09:00
|
|
|
$masterFields = [
|
|
|
|
|
['field_name' => '제품명', 'field_type' => 'textbox', 'category' => '기본정보', 'is_common' => true],
|
|
|
|
|
['field_name' => '제품코드', 'field_type' => 'textbox', 'category' => '기본정보', 'is_common' => true],
|
|
|
|
|
['field_name' => '규격', 'field_type' => 'textbox', 'category' => '기본정보', 'is_common' => true],
|
|
|
|
|
['field_name' => '수량', 'field_type' => 'number', 'category' => '재고정보', 'is_common' => true],
|
|
|
|
|
['field_name' => '단위', 'field_type' => 'dropdown', 'category' => '재고정보', 'is_common' => true, 'options' => [
|
|
|
|
|
['label' => 'kg', 'value' => 'kg'],
|
|
|
|
|
['label' => 'EA', 'value' => 'EA'],
|
|
|
|
|
['label' => 'm', 'value' => 'm'],
|
|
|
|
|
]],
|
|
|
|
|
['field_name' => '길이', 'field_type' => 'number', 'category' => '치수정보', 'is_common' => false, 'properties' => ['unit' => 'mm', 'precision' => 2]],
|
|
|
|
|
['field_name' => '폭', 'field_type' => 'number', 'category' => '치수정보', 'is_common' => false, 'properties' => ['unit' => 'mm', 'precision' => 2]],
|
|
|
|
|
['field_name' => '높이', 'field_type' => 'number', 'category' => '치수정보', 'is_common' => false, 'properties' => ['unit' => 'mm', 'precision' => 2]],
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
foreach ($masterFields as $field) {
|
2025-11-27 15:51:00 +09:00
|
|
|
ItemField::create([
|
feat: ItemMaster 데이터베이스 구조 구축 (9개 테이블)
- 마이그레이션 9개 생성 (unit_options, section_templates, item_master_fields, item_pages, item_sections, item_fields, item_bom_items, custom_tabs, tab_columns)
- Eloquent 모델 9개 구현 (ItemMaster 네임스페이스)
- ItemMasterSeeder 작성 및 테스트 데이터 생성
주요 특징:
- Multi-tenant 지원 (BelongsToTenant trait)
- Soft Delete 적용 (deleted_at, deleted_by)
- 감사 로그 지원 (created_by, updated_by)
- JSON 필드로 동적 속성 지원 (display_condition, validation_rules, options, properties)
- FK 제약조건 및 Composite Index 설정
- 계층 구조 (ItemPage → ItemSection → ItemField/ItemBomItem)
SAM API Development Rules 준수
2025-11-20 16:36:55 +09:00
|
|
|
'tenant_id' => $tenantId,
|
2025-11-27 15:51:00 +09:00
|
|
|
'group_id' => $groupId,
|
feat: ItemMaster 데이터베이스 구조 구축 (9개 테이블)
- 마이그레이션 9개 생성 (unit_options, section_templates, item_master_fields, item_pages, item_sections, item_fields, item_bom_items, custom_tabs, tab_columns)
- Eloquent 모델 9개 구현 (ItemMaster 네임스페이스)
- ItemMasterSeeder 작성 및 테스트 데이터 생성
주요 특징:
- Multi-tenant 지원 (BelongsToTenant trait)
- Soft Delete 적용 (deleted_at, deleted_by)
- 감사 로그 지원 (created_by, updated_by)
- JSON 필드로 동적 속성 지원 (display_condition, validation_rules, options, properties)
- FK 제약조건 및 Composite Index 설정
- 계층 구조 (ItemPage → ItemSection → ItemField/ItemBomItem)
SAM API Development Rules 준수
2025-11-20 16:36:55 +09:00
|
|
|
'field_name' => $field['field_name'],
|
|
|
|
|
'field_type' => $field['field_type'],
|
2025-11-27 15:51:00 +09:00
|
|
|
'order_no' => 0,
|
|
|
|
|
'is_required' => false,
|
feat: ItemMaster 데이터베이스 구조 구축 (9개 테이블)
- 마이그레이션 9개 생성 (unit_options, section_templates, item_master_fields, item_pages, item_sections, item_fields, item_bom_items, custom_tabs, tab_columns)
- Eloquent 모델 9개 구현 (ItemMaster 네임스페이스)
- ItemMasterSeeder 작성 및 테스트 데이터 생성
주요 특징:
- Multi-tenant 지원 (BelongsToTenant trait)
- Soft Delete 적용 (deleted_at, deleted_by)
- 감사 로그 지원 (created_by, updated_by)
- JSON 필드로 동적 속성 지원 (display_condition, validation_rules, options, properties)
- FK 제약조건 및 Composite Index 설정
- 계층 구조 (ItemPage → ItemSection → ItemField/ItemBomItem)
SAM API Development Rules 준수
2025-11-20 16:36:55 +09:00
|
|
|
'category' => $field['category'],
|
|
|
|
|
'is_common' => $field['is_common'],
|
|
|
|
|
'options' => $field['options'] ?? null,
|
|
|
|
|
'properties' => $field['properties'] ?? null,
|
|
|
|
|
'created_by' => $userId,
|
|
|
|
|
]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 4. 품목 페이지 (5개 유형)
|
|
|
|
|
$pages = [
|
|
|
|
|
['page_name' => '완제품 관리', 'item_type' => 'FG', 'absolute_path' => '/FG/완제품 관리'],
|
|
|
|
|
['page_name' => '반제품 관리', 'item_type' => 'PT', 'absolute_path' => '/PT/반제품 관리'],
|
|
|
|
|
['page_name' => '부자재 관리', 'item_type' => 'SM', 'absolute_path' => '/SM/부자재 관리'],
|
|
|
|
|
['page_name' => '원자재 관리', 'item_type' => 'RM', 'absolute_path' => '/RM/원자재 관리'],
|
|
|
|
|
['page_name' => '소모품 관리', 'item_type' => 'CS', 'absolute_path' => '/CS/소모품 관리'],
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
foreach ($pages as $index => $page) {
|
2025-11-27 15:51:00 +09:00
|
|
|
// 페이지 생성 (독립 엔티티)
|
feat: ItemMaster 데이터베이스 구조 구축 (9개 테이블)
- 마이그레이션 9개 생성 (unit_options, section_templates, item_master_fields, item_pages, item_sections, item_fields, item_bom_items, custom_tabs, tab_columns)
- Eloquent 모델 9개 구현 (ItemMaster 네임스페이스)
- ItemMasterSeeder 작성 및 테스트 데이터 생성
주요 특징:
- Multi-tenant 지원 (BelongsToTenant trait)
- Soft Delete 적용 (deleted_at, deleted_by)
- 감사 로그 지원 (created_by, updated_by)
- JSON 필드로 동적 속성 지원 (display_condition, validation_rules, options, properties)
- FK 제약조건 및 Composite Index 설정
- 계층 구조 (ItemPage → ItemSection → ItemField/ItemBomItem)
SAM API Development Rules 준수
2025-11-20 16:36:55 +09:00
|
|
|
$itemPage = ItemPage::create([
|
|
|
|
|
'tenant_id' => $tenantId,
|
2025-11-27 15:51:00 +09:00
|
|
|
'group_id' => $groupId,
|
feat: ItemMaster 데이터베이스 구조 구축 (9개 테이블)
- 마이그레이션 9개 생성 (unit_options, section_templates, item_master_fields, item_pages, item_sections, item_fields, item_bom_items, custom_tabs, tab_columns)
- Eloquent 모델 9개 구현 (ItemMaster 네임스페이스)
- ItemMasterSeeder 작성 및 테스트 데이터 생성
주요 특징:
- Multi-tenant 지원 (BelongsToTenant trait)
- Soft Delete 적용 (deleted_at, deleted_by)
- 감사 로그 지원 (created_by, updated_by)
- JSON 필드로 동적 속성 지원 (display_condition, validation_rules, options, properties)
- FK 제약조건 및 Composite Index 설정
- 계층 구조 (ItemPage → ItemSection → ItemField/ItemBomItem)
SAM API Development Rules 준수
2025-11-20 16:36:55 +09:00
|
|
|
'page_name' => $page['page_name'],
|
|
|
|
|
'item_type' => $page['item_type'],
|
|
|
|
|
'absolute_path' => $page['absolute_path'],
|
|
|
|
|
'is_active' => true,
|
|
|
|
|
'created_by' => $userId,
|
|
|
|
|
]);
|
|
|
|
|
|
2025-11-27 15:51:00 +09:00
|
|
|
// 기본 정보 섹션 생성 (독립 엔티티)
|
feat: ItemMaster 데이터베이스 구조 구축 (9개 테이블)
- 마이그레이션 9개 생성 (unit_options, section_templates, item_master_fields, item_pages, item_sections, item_fields, item_bom_items, custom_tabs, tab_columns)
- Eloquent 모델 9개 구현 (ItemMaster 네임스페이스)
- ItemMasterSeeder 작성 및 테스트 데이터 생성
주요 특징:
- Multi-tenant 지원 (BelongsToTenant trait)
- Soft Delete 적용 (deleted_at, deleted_by)
- 감사 로그 지원 (created_by, updated_by)
- JSON 필드로 동적 속성 지원 (display_condition, validation_rules, options, properties)
- FK 제약조건 및 Composite Index 설정
- 계층 구조 (ItemPage → ItemSection → ItemField/ItemBomItem)
SAM API Development Rules 준수
2025-11-20 16:36:55 +09:00
|
|
|
$section1 = ItemSection::create([
|
|
|
|
|
'tenant_id' => $tenantId,
|
2025-11-27 15:51:00 +09:00
|
|
|
'group_id' => $groupId,
|
feat: ItemMaster 데이터베이스 구조 구축 (9개 테이블)
- 마이그레이션 9개 생성 (unit_options, section_templates, item_master_fields, item_pages, item_sections, item_fields, item_bom_items, custom_tabs, tab_columns)
- Eloquent 모델 9개 구현 (ItemMaster 네임스페이스)
- ItemMasterSeeder 작성 및 테스트 데이터 생성
주요 특징:
- Multi-tenant 지원 (BelongsToTenant trait)
- Soft Delete 적용 (deleted_at, deleted_by)
- 감사 로그 지원 (created_by, updated_by)
- JSON 필드로 동적 속성 지원 (display_condition, validation_rules, options, properties)
- FK 제약조건 및 Composite Index 설정
- 계층 구조 (ItemPage → ItemSection → ItemField/ItemBomItem)
SAM API Development Rules 준수
2025-11-20 16:36:55 +09:00
|
|
|
'title' => '기본 정보',
|
|
|
|
|
'type' => 'fields',
|
|
|
|
|
'order_no' => 0,
|
|
|
|
|
'created_by' => $userId,
|
|
|
|
|
]);
|
|
|
|
|
|
2025-11-27 15:51:00 +09:00
|
|
|
// 페이지-섹션 관계 생성 (entity_relationships)
|
|
|
|
|
// link(tenantId, parentType, parentId, childType, childId, orderNo, metadata, groupId)
|
|
|
|
|
EntityRelationship::link(
|
|
|
|
|
$tenantId,
|
|
|
|
|
EntityRelationship::TYPE_PAGE,
|
|
|
|
|
$itemPage->id,
|
|
|
|
|
EntityRelationship::TYPE_SECTION,
|
|
|
|
|
$section1->id,
|
|
|
|
|
0, // order_no
|
|
|
|
|
null, // metadata
|
|
|
|
|
$groupId
|
|
|
|
|
);
|
feat: ItemMaster 데이터베이스 구조 구축 (9개 테이블)
- 마이그레이션 9개 생성 (unit_options, section_templates, item_master_fields, item_pages, item_sections, item_fields, item_bom_items, custom_tabs, tab_columns)
- Eloquent 모델 9개 구현 (ItemMaster 네임스페이스)
- ItemMasterSeeder 작성 및 테스트 데이터 생성
주요 특징:
- Multi-tenant 지원 (BelongsToTenant trait)
- Soft Delete 적용 (deleted_at, deleted_by)
- 감사 로그 지원 (created_by, updated_by)
- JSON 필드로 동적 속성 지원 (display_condition, validation_rules, options, properties)
- FK 제약조건 및 Composite Index 설정
- 계층 구조 (ItemPage → ItemSection → ItemField/ItemBomItem)
SAM API Development Rules 준수
2025-11-20 16:36:55 +09:00
|
|
|
|
2025-11-27 15:51:00 +09:00
|
|
|
// 필드 생성 및 섹션에 연결
|
|
|
|
|
$fieldData = [
|
|
|
|
|
['field_name' => '제품명', 'is_required' => true, 'placeholder' => '제품명을 입력하세요'],
|
|
|
|
|
['field_name' => '제품코드', 'is_required' => true, 'placeholder' => '제품코드를 입력하세요'],
|
|
|
|
|
['field_name' => '규격', 'is_required' => false, 'placeholder' => '규격을 입력하세요'],
|
|
|
|
|
];
|
feat: ItemMaster 데이터베이스 구조 구축 (9개 테이블)
- 마이그레이션 9개 생성 (unit_options, section_templates, item_master_fields, item_pages, item_sections, item_fields, item_bom_items, custom_tabs, tab_columns)
- Eloquent 모델 9개 구현 (ItemMaster 네임스페이스)
- ItemMasterSeeder 작성 및 테스트 데이터 생성
주요 특징:
- Multi-tenant 지원 (BelongsToTenant trait)
- Soft Delete 적용 (deleted_at, deleted_by)
- 감사 로그 지원 (created_by, updated_by)
- JSON 필드로 동적 속성 지원 (display_condition, validation_rules, options, properties)
- FK 제약조건 및 Composite Index 설정
- 계층 구조 (ItemPage → ItemSection → ItemField/ItemBomItem)
SAM API Development Rules 준수
2025-11-20 16:36:55 +09:00
|
|
|
|
2025-11-27 15:51:00 +09:00
|
|
|
foreach ($fieldData as $orderNo => $fd) {
|
|
|
|
|
$field = ItemField::create([
|
|
|
|
|
'tenant_id' => $tenantId,
|
|
|
|
|
'group_id' => $groupId,
|
|
|
|
|
'field_name' => $fd['field_name'],
|
|
|
|
|
'field_type' => 'textbox',
|
|
|
|
|
'order_no' => $orderNo,
|
|
|
|
|
'is_required' => $fd['is_required'],
|
|
|
|
|
'placeholder' => $fd['placeholder'],
|
|
|
|
|
'created_by' => $userId,
|
|
|
|
|
]);
|
|
|
|
|
|
|
|
|
|
// 섹션-필드 관계 생성 (entity_relationships)
|
|
|
|
|
EntityRelationship::link(
|
|
|
|
|
$tenantId,
|
|
|
|
|
EntityRelationship::TYPE_SECTION,
|
|
|
|
|
$section1->id,
|
|
|
|
|
EntityRelationship::TYPE_FIELD,
|
|
|
|
|
$field->id,
|
|
|
|
|
$orderNo,
|
|
|
|
|
null,
|
|
|
|
|
$groupId
|
|
|
|
|
);
|
|
|
|
|
}
|
feat: ItemMaster 데이터베이스 구조 구축 (9개 테이블)
- 마이그레이션 9개 생성 (unit_options, section_templates, item_master_fields, item_pages, item_sections, item_fields, item_bom_items, custom_tabs, tab_columns)
- Eloquent 모델 9개 구현 (ItemMaster 네임스페이스)
- ItemMasterSeeder 작성 및 테스트 데이터 생성
주요 특징:
- Multi-tenant 지원 (BelongsToTenant trait)
- Soft Delete 적용 (deleted_at, deleted_by)
- 감사 로그 지원 (created_by, updated_by)
- JSON 필드로 동적 속성 지원 (display_condition, validation_rules, options, properties)
- FK 제약조건 및 Composite Index 설정
- 계층 구조 (ItemPage → ItemSection → ItemField/ItemBomItem)
SAM API Development Rules 준수
2025-11-20 16:36:55 +09:00
|
|
|
|
|
|
|
|
// BOM 섹션 (완제품, 반제품만)
|
|
|
|
|
if (in_array($page['item_type'], ['FG', 'PT'])) {
|
2025-11-27 15:51:00 +09:00
|
|
|
// BOM 섹션 생성 (독립 엔티티)
|
feat: ItemMaster 데이터베이스 구조 구축 (9개 테이블)
- 마이그레이션 9개 생성 (unit_options, section_templates, item_master_fields, item_pages, item_sections, item_fields, item_bom_items, custom_tabs, tab_columns)
- Eloquent 모델 9개 구현 (ItemMaster 네임스페이스)
- ItemMasterSeeder 작성 및 테스트 데이터 생성
주요 특징:
- Multi-tenant 지원 (BelongsToTenant trait)
- Soft Delete 적용 (deleted_at, deleted_by)
- 감사 로그 지원 (created_by, updated_by)
- JSON 필드로 동적 속성 지원 (display_condition, validation_rules, options, properties)
- FK 제약조건 및 Composite Index 설정
- 계층 구조 (ItemPage → ItemSection → ItemField/ItemBomItem)
SAM API Development Rules 준수
2025-11-20 16:36:55 +09:00
|
|
|
$section2 = ItemSection::create([
|
|
|
|
|
'tenant_id' => $tenantId,
|
2025-11-27 15:51:00 +09:00
|
|
|
'group_id' => $groupId,
|
feat: ItemMaster 데이터베이스 구조 구축 (9개 테이블)
- 마이그레이션 9개 생성 (unit_options, section_templates, item_master_fields, item_pages, item_sections, item_fields, item_bom_items, custom_tabs, tab_columns)
- Eloquent 모델 9개 구현 (ItemMaster 네임스페이스)
- ItemMasterSeeder 작성 및 테스트 데이터 생성
주요 특징:
- Multi-tenant 지원 (BelongsToTenant trait)
- Soft Delete 적용 (deleted_at, deleted_by)
- 감사 로그 지원 (created_by, updated_by)
- JSON 필드로 동적 속성 지원 (display_condition, validation_rules, options, properties)
- FK 제약조건 및 Composite Index 설정
- 계층 구조 (ItemPage → ItemSection → ItemField/ItemBomItem)
SAM API Development Rules 준수
2025-11-20 16:36:55 +09:00
|
|
|
'title' => 'BOM 구성',
|
|
|
|
|
'type' => 'bom',
|
|
|
|
|
'order_no' => 1,
|
|
|
|
|
'created_by' => $userId,
|
|
|
|
|
]);
|
|
|
|
|
|
2025-11-27 15:51:00 +09:00
|
|
|
// 페이지-섹션 관계 생성
|
|
|
|
|
EntityRelationship::link(
|
|
|
|
|
$tenantId,
|
|
|
|
|
EntityRelationship::TYPE_PAGE,
|
|
|
|
|
$itemPage->id,
|
|
|
|
|
EntityRelationship::TYPE_SECTION,
|
|
|
|
|
$section2->id,
|
|
|
|
|
1, // order_no
|
|
|
|
|
null,
|
|
|
|
|
$groupId
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
// BOM 항목 생성 (독립 엔티티)
|
|
|
|
|
$bomItem = ItemBomItem::create([
|
feat: ItemMaster 데이터베이스 구조 구축 (9개 테이블)
- 마이그레이션 9개 생성 (unit_options, section_templates, item_master_fields, item_pages, item_sections, item_fields, item_bom_items, custom_tabs, tab_columns)
- Eloquent 모델 9개 구현 (ItemMaster 네임스페이스)
- ItemMasterSeeder 작성 및 테스트 데이터 생성
주요 특징:
- Multi-tenant 지원 (BelongsToTenant trait)
- Soft Delete 적용 (deleted_at, deleted_by)
- 감사 로그 지원 (created_by, updated_by)
- JSON 필드로 동적 속성 지원 (display_condition, validation_rules, options, properties)
- FK 제약조건 및 Composite Index 설정
- 계층 구조 (ItemPage → ItemSection → ItemField/ItemBomItem)
SAM API Development Rules 준수
2025-11-20 16:36:55 +09:00
|
|
|
'tenant_id' => $tenantId,
|
2025-11-27 15:51:00 +09:00
|
|
|
'group_id' => $groupId,
|
feat: ItemMaster 데이터베이스 구조 구축 (9개 테이블)
- 마이그레이션 9개 생성 (unit_options, section_templates, item_master_fields, item_pages, item_sections, item_fields, item_bom_items, custom_tabs, tab_columns)
- Eloquent 모델 9개 구현 (ItemMaster 네임스페이스)
- ItemMasterSeeder 작성 및 테스트 데이터 생성
주요 특징:
- Multi-tenant 지원 (BelongsToTenant trait)
- Soft Delete 적용 (deleted_at, deleted_by)
- 감사 로그 지원 (created_by, updated_by)
- JSON 필드로 동적 속성 지원 (display_condition, validation_rules, options, properties)
- FK 제약조건 및 Composite Index 설정
- 계층 구조 (ItemPage → ItemSection → ItemField/ItemBomItem)
SAM API Development Rules 준수
2025-11-20 16:36:55 +09:00
|
|
|
'item_code' => 'MAT-001',
|
|
|
|
|
'item_name' => '철판',
|
|
|
|
|
'quantity' => 10.5,
|
|
|
|
|
'unit' => 'kg',
|
|
|
|
|
'unit_price' => 5000.00,
|
|
|
|
|
'total_price' => 52500.00,
|
|
|
|
|
'spec' => '두께 2mm, 스테인리스',
|
|
|
|
|
'note' => '샘플 BOM 항목',
|
|
|
|
|
'created_by' => $userId,
|
|
|
|
|
]);
|
2025-11-27 15:51:00 +09:00
|
|
|
|
|
|
|
|
// 섹션-BOM 관계 생성
|
|
|
|
|
EntityRelationship::link(
|
|
|
|
|
$tenantId,
|
|
|
|
|
EntityRelationship::TYPE_SECTION,
|
|
|
|
|
$section2->id,
|
|
|
|
|
EntityRelationship::TYPE_BOM,
|
|
|
|
|
$bomItem->id,
|
|
|
|
|
0,
|
|
|
|
|
null,
|
|
|
|
|
$groupId
|
|
|
|
|
);
|
feat: ItemMaster 데이터베이스 구조 구축 (9개 테이블)
- 마이그레이션 9개 생성 (unit_options, section_templates, item_master_fields, item_pages, item_sections, item_fields, item_bom_items, custom_tabs, tab_columns)
- Eloquent 모델 9개 구현 (ItemMaster 네임스페이스)
- ItemMasterSeeder 작성 및 테스트 데이터 생성
주요 특징:
- Multi-tenant 지원 (BelongsToTenant trait)
- Soft Delete 적용 (deleted_at, deleted_by)
- 감사 로그 지원 (created_by, updated_by)
- JSON 필드로 동적 속성 지원 (display_condition, validation_rules, options, properties)
- FK 제약조건 및 Composite Index 설정
- 계층 구조 (ItemPage → ItemSection → ItemField/ItemBomItem)
SAM API Development Rules 준수
2025-11-20 16:36:55 +09:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 5. 커스텀 탭
|
|
|
|
|
$tabs = [
|
|
|
|
|
['label' => '전체', 'icon' => 'all', 'is_default' => true, 'order_no' => 0],
|
|
|
|
|
['label' => '완제품', 'icon' => 'product', 'is_default' => false, 'order_no' => 1],
|
|
|
|
|
['label' => '원자재', 'icon' => 'material', 'is_default' => false, 'order_no' => 2],
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
foreach ($tabs as $tab) {
|
|
|
|
|
$customTab = CustomTab::create([
|
|
|
|
|
'tenant_id' => $tenantId,
|
|
|
|
|
'label' => $tab['label'],
|
|
|
|
|
'icon' => $tab['icon'],
|
|
|
|
|
'is_default' => $tab['is_default'],
|
|
|
|
|
'order_no' => $tab['order_no'],
|
|
|
|
|
'created_by' => $userId,
|
|
|
|
|
]);
|
|
|
|
|
|
|
|
|
|
// 탭별 컬럼 설정
|
|
|
|
|
TabColumn::create([
|
|
|
|
|
'tenant_id' => $tenantId,
|
|
|
|
|
'tab_id' => $customTab->id,
|
|
|
|
|
'columns' => [
|
|
|
|
|
['key' => 'name', 'label' => '품목명', 'visible' => true, 'order' => 0],
|
|
|
|
|
['key' => 'code', 'label' => '품목코드', 'visible' => true, 'order' => 1],
|
|
|
|
|
['key' => 'type', 'label' => '유형', 'visible' => true, 'order' => 2],
|
|
|
|
|
['key' => 'price', 'label' => '가격', 'visible' => false, 'order' => 3],
|
|
|
|
|
],
|
|
|
|
|
'created_by' => $userId,
|
|
|
|
|
]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
echo "✅ ItemMaster 시드 데이터 생성 완료!\n";
|
2025-11-27 15:51:00 +09:00
|
|
|
echo ' - 단위 옵션: '.count($units)."개\n";
|
|
|
|
|
echo ' - 섹션 템플릿: '.count($templates)."개\n";
|
|
|
|
|
echo ' - 마스터 필드: '.count($masterFields)."개\n";
|
|
|
|
|
echo ' - 품목 페이지: '.count($pages)."개\n";
|
|
|
|
|
echo ' - 커스텀 탭: '.count($tabs)."개\n";
|
feat: ItemMaster 데이터베이스 구조 구축 (9개 테이블)
- 마이그레이션 9개 생성 (unit_options, section_templates, item_master_fields, item_pages, item_sections, item_fields, item_bom_items, custom_tabs, tab_columns)
- Eloquent 모델 9개 구현 (ItemMaster 네임스페이스)
- ItemMasterSeeder 작성 및 테스트 데이터 생성
주요 특징:
- Multi-tenant 지원 (BelongsToTenant trait)
- Soft Delete 적용 (deleted_at, deleted_by)
- 감사 로그 지원 (created_by, updated_by)
- JSON 필드로 동적 속성 지원 (display_condition, validation_rules, options, properties)
- FK 제약조건 및 Composite Index 설정
- 계층 구조 (ItemPage → ItemSection → ItemField/ItemBomItem)
SAM API Development Rules 준수
2025-11-20 16:36:55 +09:00
|
|
|
}
|
|
|
|
|
}
|