'array', 'is_active' => 'boolean', 'options' => 'array', 'required_workers' => 'integer', ]; /** * 중간검사 양식 */ public function documentTemplate(): BelongsTo { return $this->belongsTo(Documents\DocumentTemplate::class); } /** * 작업일지 양식 (관계명: work_log_template 컬럼과 충돌 방지) */ public function workLogTemplateRelation(): BelongsTo { return $this->belongsTo(Documents\DocumentTemplate::class, 'work_log_template_id'); } /** * 공정 자동 분류 규칙 (패턴 규칙) */ public function classificationRules(): HasMany { return $this->hasMany(ProcessClassificationRule::class)->orderBy('priority'); } /** * 공정-품목 연결 (중간 테이블) */ public function processItems(): HasMany { return $this->hasMany(ProcessItem::class)->orderBy('priority'); } /** * 연결된 품목 (다대다) */ public function items(): BelongsToMany { return $this->belongsToMany(Items\Item::class, 'process_items') ->withPivot(['priority', 'is_active']) ->withTimestamps() ->orderByPivot('priority'); } /** * 공정 단계 */ public function steps(): HasMany { return $this->hasMany(ProcessStep::class)->orderBy('sort_order'); } /** * 작업지시들 */ public function workOrders(): HasMany { return $this->hasMany(Production\WorkOrder::class); } }