embedding ?? $this->embeddingService->embed($ticket->message); if ($ticket->embedding === null) { $ticket->embedding = $embedding; $ticket->save(); } $candidates = $this->articleRepository->findSimilarByEmbedding($embedding, 5); $classification = $this->classifierService->rank($ticket->message, $candidates); $bestArticle = $classification->articleId ? Article::find($classification->articleId) : null; AIDecision::query()->create([ 'ticket_id' => $ticket->id, 'article_id' => $bestArticle?->id, 'confidence' => $classification->confidence, 'explanation' => $classification->explanation, 'raw_response' => $classification->rawResponse, ]); return [ 'best_article' => $bestArticle, 'confidence' => $classification->confidence, 'explanation' => $classification->explanation, 'top_3_candidates' => collect($candidates)->take(3)->map(fn ($c) => $c->toArray())->values()->all(), ]; } }