publicReferences()->where('location_type', 'province')->where('name', 'Inhambane')->first(); if (! $province) throw new \LogicException('QA requires the existing public Inhambane reference'); $sector = Sector::where('slug', 'turismo')->firstOrFail(); $editor = User::factory()->create(); $reviewer = User::factory()->create(); $zone = InvestmentZone::query()->create(['id'=>(string)Str::uuid(), 'code'=>'SINT-QA-'.Str::random(8), 'name'=>'SINTÉTICO QA — Parque Industrial de Balama', 'category'=>'industrial_park', 'physical_category'=>'industrial_park', 'publication_status'=>'published','validation_status'=>'validated', 'editor_id'=>$editor->id,'reviewer_id'=>$reviewer->id, 'published_at'=>now(), 'source_evidence'=>[['source_type'=>'promoter','url'=>'https://example.invalid/synthetic-qa','supports'=>'SINTÉTICO QA: não constitui informação sobre o parque real.']]]); $other = InvestmentZone::query()->create(['id'=>(string)Str::uuid(),'code'=>'SINT-QA-'.Str::random(8),'name'=>'SINTÉTICO QA — Outro parque', 'category'=>'industrial_park','physical_category'=>'industrial_park','publication_status'=>'published','validation_status'=>'validated','editor_id'=>$editor->id,'reviewer_id'=>$reviewer->id, 'published_at'=>now(),'source_evidence'=>[['source_type'=>'promoter','url'=>'https://example.invalid/synthetic-qa','supports'=>'SINTÉTICO QA: outra associação.']]]); $prefix='SINTÉTICO QA turismo '.Str::upper(Str::random(8)); $create = function(string $name, string $purpose, string $currency, int $level, ?string $stage=null, ?string $target=null, bool $private=false) use ($sector,$province,$zone,$prefix) { $row=['related_id'=>$target??$zone->id,'relation_type'=>'located_in','classification'=>['target_type'=>'park','purpose'=>$purpose, 'disclosure'=>'public','requested_state'=>'preliminary','source_reference'=>'SINTÉTICO QA — ensaio de pesquisa','citation'=>'Fixture local']]; return Opportunity::forceCreate(['reference'=>'SINT-QA-'.Str::random(10),'slug'=>'sintetico-qa-'.Str::uuid(),'title'=>$prefix.' '.$name, 'summary'=>'Dados sintéticos para ensaio exclusivo em QA.','sector_id'=>$sector->id,'province'=>'Inhambane','primary_territory_id'=>$province->id, 'maturity_level'=>$level,'maturity_label'=>$stage?OpportunityMaturity::STAGES[$stage]:OpportunityMaturity::LEGACY_LABELS[$level], 'estimated_investment_amount'=>'300000.00','estimated_investment_currency'=>$currency,'opportunity_category'=>'investment_project', 'status'=>$private?'draft':'published','published_at'=>$private?null:now(), 'workflow_context'=>['publication'=>['visibility'=>'public','classification'=>[$row], 'maturity'=>['catalogue_version'=>$stage?OpportunityMaturity::VERSION:OpportunityMaturity::LEGACY,'stage'=>$stage]]]]); }; return ['query'=>$prefix,'zone'=>$zone,'other_zone'=>$other,'province'=>$province, 'associated'=>$create('associada','park_operation','USD',2), 'nearby'=>$create('apenas próxima','proximity','USD',2,'concept'), 'same_territory'=>$create('mesmo território','administrative_boundary','MZN',4,'feasibility'), 'other_park'=>$create('outro parque','park_operation','USD',4,'feasibility',$other->id), 'private'=>$create('privada','park_operation','USD',2,null,null,true)]; } }