AI Analysis: show match score on index and dashboard

This commit is contained in:
jeremy bayse
2026-03-22 22:38:59 +01:00
parent 26d723f239
commit 4459cbde69
3 changed files with 35 additions and 1 deletions

View File

@@ -144,6 +144,7 @@ const sortedCandidates = computed(() => {
</svg> </svg>
</div> </div>
</th> </th>
<th class="px-6 py-4 font-semibold text-slate-700 dark:text-slate-300">Adéquation IA</th>
<th class="px-6 py-4 font-semibold text-slate-700 dark:text-slate-300">Documents</th> <th class="px-6 py-4 font-semibold text-slate-700 dark:text-slate-300">Documents</th>
<th class="px-6 py-4 font-semibold text-slate-700 dark:text-slate-300 text-right">Actions</th> <th class="px-6 py-4 font-semibold text-slate-700 dark:text-slate-300 text-right">Actions</th>
</tr> </tr>
@@ -191,6 +192,22 @@ const sortedCandidates = computed(() => {
</span> </span>
</div> </div>
</td> </td>
<td class="px-6 py-4">
<div v-if="candidate.ai_analysis" class="flex items-center gap-2">
<div
class="px-2 py-0.5 rounded text-[10px] font-black"
:class="[
candidate.ai_analysis.match_score >= 80 ? 'bg-emerald-100 text-emerald-700' :
candidate.ai_analysis.match_score >= 60 ? 'bg-amber-100 text-amber-700' :
'bg-red-100 text-red-700'
]"
>
{{ candidate.ai_analysis.match_score }}%
</div>
<span class="text-[10px] font-bold text-slate-400 uppercase truncate max-w-[60px]">{{ candidate.ai_analysis.verdict }}</span>
</div>
<span v-else class="text-[10px] text-slate-300 italic">Non analysé</span>
</td>
<td class="px-6 py-4"> <td class="px-6 py-4">
<div class="flex gap-2"> <div class="flex gap-2">
<button <button

View File

@@ -70,6 +70,7 @@ const getStatusColor = (status) => {
<tr class="bg-slate-50/50 dark:bg-slate-900/30"> <tr class="bg-slate-50/50 dark:bg-slate-900/30">
<th class="px-8 py-4 text-[10px] font-black uppercase tracking-[0.2em] text-slate-400">Candidat</th> <th class="px-8 py-4 text-[10px] font-black uppercase tracking-[0.2em] text-slate-400">Candidat</th>
<th class="px-8 py-4 text-[10px] font-black uppercase tracking-[0.2em] text-slate-400">Score Pondéré</th> <th class="px-8 py-4 text-[10px] font-black uppercase tracking-[0.2em] text-slate-400">Score Pondéré</th>
<th class="px-8 py-4 text-[10px] font-black uppercase tracking-[0.2em] text-slate-400">Adéquation IA</th>
<th class="px-8 py-4 text-[10px] font-black uppercase tracking-[0.2em] text-slate-400">Statut</th> <th class="px-8 py-4 text-[10px] font-black uppercase tracking-[0.2em] text-slate-400">Statut</th>
<th class="px-8 py-4 text-[10px] font-black uppercase tracking-[0.2em] text-slate-400 text-right">Actions</th> <th class="px-8 py-4 text-[10px] font-black uppercase tracking-[0.2em] text-slate-400 text-right">Actions</th>
</tr> </tr>
@@ -85,6 +86,21 @@ const getStatusColor = (status) => {
{{ candidate.weighted_score }} / 20 {{ candidate.weighted_score }} / 20
</div> </div>
</td> </td>
<td class="px-8 py-5">
<div v-if="candidate.ai_analysis" class="flex items-center gap-2">
<div
class="px-2 py-0.5 rounded text-[10px] font-black"
:class="[
candidate.ai_analysis.match_score >= 80 ? 'bg-emerald-100 text-emerald-700' :
candidate.ai_analysis.match_score >= 60 ? 'bg-amber-100 text-amber-700' :
'bg-red-100 text-red-700'
]"
>
{{ candidate.ai_analysis.match_score }}%
</div>
</div>
<span v-else class="text-[10px] text-slate-300 italic font-medium">Non analysé</span>
</td>
<td class="px-8 py-5"> <td class="px-8 py-5">
<span <span
class="px-3 py-1 text-[10px] font-black uppercase tracking-widest rounded-full" class="px-3 py-1 text-[10px] font-black uppercase tracking-widest rounded-full"

View File

@@ -41,7 +41,8 @@ Route::get('/dashboard', function () {
'name' => $candidate->user->name, 'name' => $candidate->user->name,
'email' => $candidate->user->email, 'email' => $candidate->user->email,
'status' => $candidate->status, 'status' => $candidate->status,
'weighted_score' => $candidate->weighted_score 'weighted_score' => $candidate->weighted_score,
'ai_analysis' => $candidate->ai_analysis
]; ];
}) })
->values() ->values()