diff --git a/client/src/pages/Settings.tsx b/client/src/pages/Settings.tsx index 3332c8f..d6a2575 100644 --- a/client/src/pages/Settings.tsx +++ b/client/src/pages/Settings.tsx @@ -685,6 +685,8 @@ export default function Settings() { const [showMistralKey, setShowMistralKey] = useState(false); const [showManusKey, setShowManusKey] = useState(false); const [showGeminiKey, setShowGeminiKey] = useState(false); + const [referentialEngine, setReferentialEngine] = useState<{ engineName: string | null; model: string | null } | null>(null); + const [referentialEngineError, setReferentialEngineError] = useState(null); useEffect(() => { if (settings) { @@ -724,15 +726,28 @@ export default function Settings() { const testReferentielIaMutation = trpc.settings.testReferentielIa.useMutation({ onSuccess: (data) => { + setReferentialEngine({ engineName: data.engineName, model: data.model }); + setReferentialEngineError(null); const engine = data.engineName ? ` Moteur sélectionné : ${data.engineName}.` : ""; const model = data.model ? ` Modèle : ${data.model}.` : ""; toast.success(`Connexion au Référentiel IA réussie.${engine}${model}`); }, onError: (error) => { + setReferentialEngine(null); + setReferentialEngineError(error.message || "Le moteur sélectionné n'a pas pu être obtenu."); toast.error(error.message || "Connexion au Référentiel IA impossible"); }, }); + const selectReferentielIa = () => { + if (testReferentielIaMutation.isPending) return; + setAiProvider("referentiel"); + setReferentialEngine(null); + setReferentialEngineError(null); + // Cette demande interroge uniquement la recommandation centralisée, sans analyser de facture. + testReferentielIaMutation.mutate(); + }; + const testSftpMutation = trpc.sftp.testConnection.useMutation({ onSuccess: (data) => { if (data.success) { @@ -953,7 +968,7 @@ export default function Settings() { +
+ {testReferentielIaMutation.isPending ? ( +
+ + Recherche du moteur décidé par le Référentiel IA… +
+ ) : referentialEngine ? ( +
+

Moteur qui sera utilisé : {referentialEngine.engineName || "défini par le Référentiel IA"}

+

+ {referentialEngine.model ? `Modèle : ${referentialEngine.model}` : "Le modèle est également déterminé par le Référentiel IA."} +

+
+ ) : referentialEngineError ? ( +

Impossible d’obtenir le moteur. Utilisez « Vérifier la connexion » pour réessayer.

+ ) : ( +

Le moteur recommandé s’affichera automatiquement après la sélection.

+ )} +
)} diff --git a/todo.md b/todo.md index 3132099..a5dc358 100644 --- a/todo.md +++ b/todo.md @@ -9,6 +9,10 @@ - [x] Vérifier une invocation contrôlée via la passerelle sans utiliser de document métier - [ ] Vérifier une extraction réelle via la passerelle et sa traçabilité dans le Référentiel IA +## Affichage du moteur Référentiel IA — recette — 02/10/2026 +- [x] Afficher le moteur et le modèle recommandés dès la sélection du Référentiel IA +- [ ] Valider l’affichage, puis déployer en recette sans toucher à MySQL ni au volume PDF + ## Correction connexion Référentiel IA — recette — 02/10/2026 - [x] Identifier le repli bloqué par une variable de jeton vide dans le conteneur - [x] Corriger la lecture du secret Docker lorsqu’une variable vide est présente