diff --git a/app/Http/Controllers/AIAnalysisController.php b/app/Http/Controllers/AIAnalysisController.php index c198331..a5cea22 100644 --- a/app/Http/Controllers/AIAnalysisController.php +++ b/app/Http/Controllers/AIAnalysisController.php @@ -23,7 +23,10 @@ class AIAnalysisController extends Controller } // Restriction: Une analyse tous les 7 jours maximum par candidat - if ($candidate->ai_analysis && isset($candidate->ai_analysis['analyzed_at'])) { + // Le super_admin peut outrepasser cette restriction via le paramètre 'force' + $shouldCheckRestriction = !($request->force && auth()->user()->isSuperAdmin()); + + if ($shouldCheckRestriction && $candidate->ai_analysis && isset($candidate->ai_analysis['analyzed_at'])) { $lastAnalysis = Carbon::parse($candidate->ai_analysis['analyzed_at']); if ($lastAnalysis->diffInDays(now()) < 7) { return response()->json([ diff --git a/resources/js/Pages/Admin/Candidates/Show.vue b/resources/js/Pages/Admin/Candidates/Show.vue index 7f9342a..5b19e56 100644 --- a/resources/js/Pages/Admin/Candidates/Show.vue +++ b/resources/js/Pages/Admin/Candidates/Show.vue @@ -248,6 +248,7 @@ watch( const aiAnalysis = ref(props.candidate.ai_analysis || null); const isAnalyzing = ref(false); const selectedProvider = ref(props.ai_config?.default || 'ollama'); +const forceAnalysis = ref(false); // Error Modal state const showErrorModal = ref(false); @@ -263,7 +264,8 @@ const runAI = async () => { isAnalyzing.value = true; try { const response = await axios.post(route('admin.candidates.analyze', props.candidate.id), { - provider: selectedProvider.value + provider: selectedProvider.value, + force: forceAnalysis.value }); aiAnalysis.value = response.data; } catch (error) { @@ -630,6 +632,19 @@ const runAI = async () => { + +
+ + +
+