diff --git a/client/src/pages/LearningSettings.tsx b/client/src/pages/LearningSettings.tsx index 7d3f863..f76456c 100644 --- a/client/src/pages/LearningSettings.tsx +++ b/client/src/pages/LearningSettings.tsx @@ -1,4 +1,4 @@ -import { useState } from "react"; +import { useState, useEffect } from "react"; import DashboardLayout from "@/components/DashboardLayout"; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; @@ -34,14 +34,31 @@ const FIELD_COLORS: Record = { isSubscription: "bg-orange-100 text-orange-800", }; -const DEFAULT_CONFIDENCE_THRESHOLD = 2; +const DEFAULT_THRESHOLD = 2; export default function LearningSettings() { const utils = trpc.useUtils(); const { data: learnings, isLoading } = trpc.learnings.list.useQuery(); - const [confidenceThreshold, setConfidenceThreshold] = useState(DEFAULT_CONFIDENCE_THRESHOLD); + const { data: settings, isLoading: settingsLoading } = trpc.settings.get.useQuery(); + + const [confidenceThreshold, setConfidenceThreshold] = useState(DEFAULT_THRESHOLD); const [editingThreshold, setEditingThreshold] = useState(false); - const [thresholdInput, setThresholdInput] = useState(String(DEFAULT_CONFIDENCE_THRESHOLD)); + const [thresholdInput, setThresholdInput] = useState(String(DEFAULT_THRESHOLD)); + + // Sync threshold from DB when settings load + useEffect(() => { + if (settings?.learningConfidenceThreshold != null) { + setConfidenceThreshold(settings.learningConfidenceThreshold); + setThresholdInput(String(settings.learningConfidenceThreshold)); + } + }, [settings?.learningConfidenceThreshold]); + + const upsertSettingsMutation = trpc.settings.upsert.useMutation({ + onSuccess: () => { + utils.settings.get.invalidate(); + }, + onError: () => toast.error("Erreur lors de la sauvegarde du seuil"), + }); const deleteMutation = trpc.learnings.delete.useMutation({ onSuccess: () => { @@ -97,6 +114,7 @@ export default function LearningSettings() { } setConfidenceThreshold(val); setEditingThreshold(false); + upsertSettingsMutation.mutate({ learningConfidenceThreshold: val }); toast.success(`Seuil de confiance mis à jour : ${val} application(s)`); }; @@ -184,10 +202,15 @@ export default function LearningSettings() { Un apprentissage est marqué Confirmé quand il a été appliqué au moins{" "} {confidenceThreshold} fois. En dessous, il est En observation. + Ce réglage est sauvegardé et partagé entre toutes vos sessions. - {editingThreshold ? ( + {settingsLoading ? ( +
+ Chargement... +
+ ) : editingThreshold ? (