Admin: Super Admin can bypass the 7-day AI analysis restriction
This commit is contained in:
@@ -23,7 +23,10 @@ class AIAnalysisController extends Controller
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Restriction: Une analyse tous les 7 jours maximum par candidat
|
// 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']);
|
$lastAnalysis = Carbon::parse($candidate->ai_analysis['analyzed_at']);
|
||||||
if ($lastAnalysis->diffInDays(now()) < 7) {
|
if ($lastAnalysis->diffInDays(now()) < 7) {
|
||||||
return response()->json([
|
return response()->json([
|
||||||
|
|||||||
@@ -248,6 +248,7 @@ watch(
|
|||||||
const aiAnalysis = ref(props.candidate.ai_analysis || null);
|
const aiAnalysis = ref(props.candidate.ai_analysis || null);
|
||||||
const isAnalyzing = ref(false);
|
const isAnalyzing = ref(false);
|
||||||
const selectedProvider = ref(props.ai_config?.default || 'ollama');
|
const selectedProvider = ref(props.ai_config?.default || 'ollama');
|
||||||
|
const forceAnalysis = ref(false);
|
||||||
|
|
||||||
// Error Modal state
|
// Error Modal state
|
||||||
const showErrorModal = ref(false);
|
const showErrorModal = ref(false);
|
||||||
@@ -263,7 +264,8 @@ const runAI = async () => {
|
|||||||
isAnalyzing.value = true;
|
isAnalyzing.value = true;
|
||||||
try {
|
try {
|
||||||
const response = await axios.post(route('admin.candidates.analyze', props.candidate.id), {
|
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;
|
aiAnalysis.value = response.data;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
@@ -630,6 +632,19 @@ const runAI = async () => {
|
|||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- Force option for Super Admin -->
|
||||||
|
<div v-if="$page.props.auth.user.role === 'super_admin'" class="flex items-center gap-2 px-4 py-2 bg-red-50 dark:bg-red-900/20 border border-red-100 dark:border-red-900/50 rounded-xl">
|
||||||
|
<input
|
||||||
|
type="checkbox"
|
||||||
|
id="forceAnalysis"
|
||||||
|
v-model="forceAnalysis"
|
||||||
|
class="rounded border-red-300 text-red-600 focus:ring-red-500/20 w-4 h-4 cursor-pointer"
|
||||||
|
/>
|
||||||
|
<label for="forceAnalysis" class="text-[10px] font-black uppercase tracking-widest text-red-600 cursor-pointer select-none">
|
||||||
|
Forcer (Bypass 7 jours)
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
<PrimaryButton
|
<PrimaryButton
|
||||||
@click="runAI"
|
@click="runAI"
|
||||||
:disabled="isAnalyzing"
|
:disabled="isAnalyzing"
|
||||||
|
|||||||
Reference in New Issue
Block a user