screen() ->released() ->create([ 'code' => 'KSS01', 'name' => '스크린 블라인드 표준형', 'description' => '매개변수 기반 스크린 블라인드', 'product_family' => 'SCREEN', ]); // Create parameters for KSS01 ModelParameter::factory() ->screenParameters() ->create(['model_id' => $kss01->id]); // Create formulas for KSS01 ModelFormula::factory() ->screenFormulas() ->create(['model_id' => $kss01->id]); // Create condition rules for KSS01 BomConditionRule::factory() ->screenRules() ->create(['model_id' => $kss01->id]); // Create KST01 (Steel) Model $kst01 = Model::factory() ->steel() ->released() ->create([ 'code' => 'KST01', 'name' => '스틸 도어 표준형', 'description' => '매개변수 기반 스틸 도어', 'product_family' => 'STEEL', ]); // Create parameters for KST01 ModelParameter::factory() ->steelParameters() ->create(['model_id' => $kst01->id]); // Create formulas for KST01 ModelFormula::factory() ->steelFormulas() ->create(['model_id' => $kst01->id]); // Create condition rules for KST01 BomConditionRule::factory() ->steelRules() ->create(['model_id' => $kst01->id]); // Create additional test models for edge cases $testModels = [ // Draft model for testing incomplete states [ 'code' => 'TEST-DRAFT', 'name' => '테스트 드래프트 모델', 'status' => 'DRAFT', 'product_family' => 'SCREEN', ], // Inactive model for testing filtering [ 'code' => 'TEST-INACTIVE', 'name' => '테스트 비활성 모델', 'status' => 'RELEASED', 'product_family' => 'SCREEN', 'is_active' => false, ], // Complex model for performance testing [ 'code' => 'COMPLEX-01', 'name' => '복합 테스트 모델', 'status' => 'RELEASED', 'product_family' => 'SCREEN', ], ]; foreach ($testModels as $modelData) { $model = Model::factory()->create($modelData); // Add basic parameters ModelParameter::factory() ->count(3) ->number() ->create(['model_id' => $model->id]); // Add basic formulas ModelFormula::factory() ->count(2) ->number() ->create(['model_id' => $model->id]); // Add condition rules BomConditionRule::factory() ->count(2) ->create(['model_id' => $model->id]); } // Create models for multi-tenant testing $tenant2Models = Model::factory() ->count(3) ->screen() ->create(['tenant_id' => 2]); foreach ($tenant2Models as $model) { ModelParameter::factory() ->count(2) ->create(['model_id' => $model->id, 'tenant_id' => 2]); ModelFormula::factory() ->count(1) ->create(['model_id' => $model->id, 'tenant_id' => 2]); } // Create performance test data (large dataset) if (app()->environment('testing')) { $performanceModel = Model::factory() ->screen() ->create([ 'code' => 'PERF-TEST', 'name' => '성능 테스트 모델', ]); // Large number of parameters for performance testing ModelParameter::factory() ->count(50) ->create(['model_id' => $performanceModel->id]); // Large number of formulas ModelFormula::factory() ->count(30) ->create(['model_id' => $performanceModel->id]); // Large number of condition rules BomConditionRule::factory() ->count(100) ->create(['model_id' => $performanceModel->id]); } } }