Files
Investidor-V2/tools/portal-functional-scope-inspect-qa.php
T
nala 287e991486
tests / ci (push) Waiting to run
oportunidades 7
2026-10-13 11:40:29 +02:00

18 lines
2.4 KiB
PHP

<?php
// Exact isolated QA, read-only inventory for candidate scope and documentary authorization.
$root=dirname(__DIR__);$dir=$root.'/storage/app/private/investmoz-v2/portal-audit';
$plan=json_decode(file_get_contents($dir.'/portal-stability-latest.json'),true,512,JSON_THROW_ON_ERROR);
putenv('STABILITY_QA_MODE=consumers');$app=(static fn($p)=>require $p)($plan['source'].'/tools/portal-stability-runtime.php');
$identity=Illuminate\Support\Facades\DB::selectOne('SELECT current_database() AS database,inet_server_port() AS port');
throw_unless($identity->database==='stability_consumers_20261011_084534_test'&&(int)$identity->port===55441,RuntimeException::class,'Exact QA required');
$proof=Illuminate\Support\Facades\DB::transaction(function(){
Illuminate\Support\Facades\DB::statement('SET TRANSACTION READ ONLY');$cases=[];
foreach([15,30,31,32,33,34,35,54] as $id){$o=App\Models\Opportunity::findOrFail($id);$cases[$id]=['type'=>$o->opportunity_category,'canonical'=>app(App\Services\OpportunityManagement::class)->values($o)['canonical']??[]];}
$links=Illuminate\Support\Facades\DB::table('opportunity_documents as r')->join('documents as d','d.id','=','r.document_id')->whereIn('r.opportunity_id',[15,54])->whereNull('r.deleted_at')->get(['r.id','r.opportunity_id','r.document_id','d.sha256']);
$actors=[];foreach([17,21,22,23,24,25,26] as $id){$u=App\Models\User::findOrFail($id);$actors[$id]=['can_manage'=>$u->can('manage-portal'),'can_view_54'=>app(App\Services\PortalProfileAccess::class)->canView($u,App\Models\Opportunity::findOrFail(54))];}
$images=[];foreach(Illuminate\Support\Facades\DB::table('opportunity_images')->whereNull('deleted_at')->get()as$image){$payload=json_decode($image->payload,true,512,JSON_THROW_ON_ERROR);$ids=[$image->document_id,...array_column($payload['derivatives']??[],'document_id')];$images[]=['resource_id'=>$image->id,'opportunity_id'=>$image->opportunity_id,'documents'=>Illuminate\Support\Facades\DB::table('documents')->whereIn('id',$ids)->get(['id','sha256','source_system','malware_scan_status'])];}
return ['cases'=>$cases,'links'=>$links,'actors'=>$actors,'images'=>$images];
});
file_put_contents($dir.'/functional-scope-inspection-qa-20261011.json',json_encode(['identity'=>$identity]+$proof,JSON_PRETTY_PRINT|JSON_UNESCAPED_UNICODE|JSON_THROW_ON_ERROR));
echo json_encode(['identity'=>$identity,'actors'=>$proof['actors'],'image_bindings'=>$proof['images']],JSON_UNESCAPED_UNICODE|JSON_THROW_ON_ERROR).PHP_EOL;