PATH:
home
/
cardxfeb
/
public_html
/
app
/
Jobs
/
Editing: GenerateAiCardJob.php
<?php namespace App\Jobs; use App\Models\Vcard; use App\Models\User; use App\Services\AiCardGeneratorService; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\SerializesModels; use Illuminate\Support\Facades\Log; class GenerateAiCardJob implements ShouldQueue { use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; public int $tries = 3; public int $timeout = 180; // 3 min multi-source takes longer public int $backoff = 30; public function __construct( public User $user, public string|array $sources, // single URL or array of URLs public int $vcardId ) {} public function handle(AiCardGeneratorService $aiService): void { $vcard = Vcard::findOrFail($this->vcardId); $vcard->update(['ai_status' => 'processing']); $sourcesCount = is_array($this->sources) ? count($this->sources) : 1; Log::info("[GenerateAiCardJob] Starting: user#{$this->user->id}, vcard#{$this->vcardId}, {$sourcesCount} source(s)"); $result = $aiService->generate($this->user, $this->sources, $vcard); if ($result['success']) { Log::info("[GenerateAiCardJob] Done: template_id={$result['template_id']}, confidence={$result['confidence']}"); } else { Log::error("[GenerateAiCardJob] Failed: " . ($result['error'] ?? 'unknown')); $this->fail(new \Exception($result['error'] ?? 'AI generation failed')); } } public function failed(\Throwable $exception): void { Vcard::find($this->vcardId)?->update(['ai_status' => 'failed']); Log::error("[GenerateAiCardJob] Permanently failed: " . $exception->getMessage()); } }
SAVE
CANCEL