AI Analysis: enforce 7-day rate limit per candidate

This commit is contained in:
jeremy bayse
2026-03-25 19:02:26 +01:00
parent 40c8aa2e5a
commit 7a05b7e6b3
4 changed files with 22 additions and 32 deletions

View File

@@ -5,6 +5,7 @@ namespace App\Http\Controllers;
use App\Models\Candidate;
use App\Services\AIAnalysisService;
use Illuminate\Http\Request;
use Carbon\Carbon;
class AIAnalysisController extends Controller
{
@@ -21,6 +22,16 @@ class AIAnalysisController extends Controller
abort(403);
}
// Restriction: Une analyse tous les 7 jours maximum par candidat
if ($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([
'error' => "Une analyse a déjà été effectuée il y a moins de 7 jours. Merci de patienter avant de relancer l'IA."
], 422);
}
}
try {
$analysis = $this->aiService->analyze($candidate, $request->provider);

View File

@@ -115,8 +115,9 @@ class AIAnalysisService
default => $this->callOllama($prompt),
};
// Inject provider name for display
// Inject metadata for display and tracking
$analysis['provider'] = $provider;
$analysis['analyzed_at'] = now()->toIso8601String();
return $analysis;
}