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

37 lines
1.8 KiB
PHP

<?php
use App\Models\Opportunity;
use App\Services\OpportunityCanonicalContract;
use App\Services\OpportunityManagement;
use Illuminate\Contracts\Console\Kernel;
use Illuminate\Support\Facades\DB;
use Illuminate\Validation\ValidationException;
$root = dirname(__DIR__);
require $root.'/vendor/autoload.php';
require __DIR__.'/portal-qa-environment.php';
$target = portalQaEnvironment();
$app = require $root.'/bootstrap/app.php';
$app->make(Kernel::class)->bootstrap();
$identity = portalQaAssertTarget($target);
$rows = DB::transaction(function () {
DB::statement('SET TRANSACTION READ ONLY');
$result = [];
foreach (range(31, 39) as $id) {
$o = Opportunity::findOrFail($id);
$p = app(OpportunityManagement::class)->values($o)['canonical'] ?? [];
try {
$valid = app(OpportunityCanonicalContract::class)->validateSubmission($o);
$errors = [];
} catch (ValidationException $e) {
$errors = $e->errors();
}
$result[] = ['id' => $id, 'category' => $o->opportunity_category, 'status' => $o->status, 'payload_keys' => array_keys($p), 'errors' => $errors,
'gates' => app(OpportunityCanonicalContract::class)->gates($o), 'resource_counts' => ['locations' => count($p['locations'] ?? []), 'documents' => count($p['documents'] ?? []), 'images' => count($p['images'] ?? [])]];
}
return $result;
});
file_put_contents($root.'/storage/app/private/investmoz-v2/portal-audit/next-contract-inspection-qa.json', json_encode(['target' => $identity, 'rows' => $rows, 'active_writes' => 0], JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE));
echo json_encode(array_map(fn ($r) => ['id' => $r['id'], 'category' => $r['category'], 'errors' => $r['errors'], 'resources' => $r['resource_counts']], $rows), JSON_UNESCAPED_UNICODE).PHP_EOL;