$selectionPayload * @return array{latestRun: OperationRun|null, missing: Collection, lowConfidence: bool} */ public function missingForSelection(Tenant $tenant, array $selectionPayload): array { $normalized = $this->selectionHasher->normalize($selectionPayload); $normalized['policy_types'] = $this->policyTypeResolver->filterRuntime($normalized['policy_types']); $selectionHash = $this->selectionHasher->hash($normalized); $latestRun = OperationRun::query() ->where('tenant_id', $tenant->getKey()) ->where('type', 'inventory_sync') ->where('status', 'completed') ->where('context->selection_hash', $selectionHash) ->orderByDesc('completed_at') ->orderByDesc('id') ->first(); if (! $latestRun) { return [ 'latestRun' => null, 'missing' => InventoryItem::query()->whereRaw('1 = 0')->get(), 'lowConfidence' => true, ]; } $missingQuery = InventoryItem::query() ->where('tenant_id', $tenant->getKey()) ->whereIn('policy_type', $normalized['policy_types']) ->where(function ($query) use ($latestRun): void { $query ->whereNull('last_seen_operation_run_id') ->orWhere('last_seen_operation_run_id', '!=', $latestRun->getKey()); }); $lowConfidence = $latestRun->outcome !== 'succeeded'; return [ 'latestRun' => $latestRun, 'missing' => $missingQuery->get(), 'lowConfidence' => $lowConfidence, ]; } }