Checkpoint: Paramètres > Intelligence IA affiche désormais automatiquement le moteur, et le modèle quand il est fourni, décidés par le Référentiel IA dès sa sélection. La consultation ne transmet aucune facture ; un état de chargement et une reprise sur erreur sont affichés. Test Référentiel IA, TypeScript et build validés.

This commit is contained in:
Manus
2026-10-02 15:13:56 +00:00
parent 32b07370d8
commit aebdafd026
2 changed files with 39 additions and 1 deletions

View File

@@ -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<string | null>(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() {
<button
type="button"
onClick={() => setAiProvider("referentiel")}
onClick={selectReferentielIa}
className={`relative flex flex-col items-center gap-3 p-5 rounded-xl border-2 transition-all cursor-pointer ${
aiProvider === "referentiel"
? "border-violet-500 bg-violet-50 dark:bg-violet-950/20 shadow-md"
@@ -1115,6 +1130,25 @@ export default function Settings() {
Vérifier la connexion
</Button>
</div>
<div className="rounded-lg border border-violet-200 bg-white/70 p-3 text-sm dark:border-violet-800 dark:bg-violet-950/20" aria-live="polite">
{testReferentielIaMutation.isPending ? (
<div className="flex items-center gap-2 text-violet-800 dark:text-violet-200">
<Loader2 className="h-4 w-4 animate-spin" />
Recherche du moteur décidé par le Référentiel IA…
</div>
) : referentialEngine ? (
<div className="space-y-1 text-violet-900 dark:text-violet-100">
<p className="font-semibold">Moteur qui sera utilisé : {referentialEngine.engineName || "défini par le Référentiel IA"}</p>
<p className="text-xs text-violet-700 dark:text-violet-300">
{referentialEngine.model ? `Modèle : ${referentialEngine.model}` : "Le modèle est également déterminé par le Référentiel IA."}
</p>
</div>
) : referentialEngineError ? (
<p className="text-violet-800 dark:text-violet-200">Impossible d’obtenir le moteur. Utilisez « Vérifier la connexion » pour réessayer.</p>
) : (
<p className="text-violet-800 dark:text-violet-200">Le moteur recommandé s’affichera automatiquement après la sélection.</p>
)}
</div>
</div>
)}

View File

@@ -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