refactor(item-master): 독립 엔티티 아키텍처 적용 및 Swagger 보완

- FK 컬럼 제거: item_sections.page_id, item_fields.section_id, item_bom_items.section_id
- entity_relationships 테이블로 전환하여 독립 엔티티 구조 확립
- ItemMasterField 관련 파일 삭제 (Controller, Service, Model, Requests)
- destroy 메서드 독립 엔티티 아키텍처 적용 (관계 링크만 삭제)
- Swagger 스키마에서 FK 참조 제거
- FormRequest 및 Swagger에 group_id(계층번호) 필드 추가
This commit is contained in:
2025-11-27 10:28:51 +09:00
parent 1d2dadc7da
commit 9588945922
18 changed files with 361 additions and 550 deletions

View File

@@ -14,6 +14,7 @@ public function authorize(): bool
public function rules(): array
{
return [
'group_id' => 'nullable|integer|min:1', // 계층번호
'item_code' => 'nullable|string|max:100',
'item_name' => 'required|string|max:255',
'quantity' => 'nullable|numeric|min:0',

View File

@@ -14,6 +14,7 @@ public function authorize(): bool
public function rules(): array
{
return [
'group_id' => 'nullable|integer|min:1', // 계층번호
'field_name' => 'required|string|max:255',
'field_type' => 'required|in:textbox,number,dropdown,checkbox,date,textarea',
'is_required' => 'nullable|boolean',

View File

@@ -1,28 +0,0 @@
<?php
namespace App\Http\Requests\ItemMaster;
use Illuminate\Foundation\Http\FormRequest;
class ItemMasterFieldStoreRequest extends FormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'field_name' => 'required|string|max:255',
'field_type' => 'required|in:textbox,number,dropdown,checkbox,date,textarea',
'category' => 'nullable|string|max:100',
'description' => 'nullable|string',
'is_common' => 'nullable|boolean',
'default_value' => 'nullable|string',
'options' => 'nullable|array',
'validation_rules' => 'nullable|array',
'properties' => 'nullable|array',
];
}
}

View File

@@ -1,28 +0,0 @@
<?php
namespace App\Http\Requests\ItemMaster;
use Illuminate\Foundation\Http\FormRequest;
class ItemMasterFieldUpdateRequest extends FormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'field_name' => 'sometimes|string|max:255',
'field_type' => 'sometimes|in:textbox,number,dropdown,checkbox,date,textarea',
'category' => 'sometimes|nullable|string|max:100',
'description' => 'sometimes|nullable|string',
'is_common' => 'sometimes|nullable|boolean',
'default_value' => 'sometimes|nullable|string',
'options' => 'sometimes|nullable|array',
'validation_rules' => 'sometimes|nullable|array',
'properties' => 'sometimes|nullable|array',
];
}
}

View File

@@ -14,6 +14,7 @@ public function authorize(): bool
public function rules(): array
{
return [
'group_id' => 'nullable|integer|min:1', // 계층번호
'title' => 'required|string|max:255',
'type' => 'required|in:fields,bom',
];