fix(agent): validation robuste des modeles Nvidia (payload production + repli 404/410) + logo noir/blanc
FlowDeck CI / test (push) Failing after 15s
FlowDeck CI / docker (push) Skipped

Validation:
- _validate_chat_models utilise le payload de production (temperature 0.2,
  sans max_tokens) : un 200 a la validation == 200 a l'usage reel.
- Race corrigee : payload reconstruit par modele (plus de noms croises entre
  requetes concurrentes) — la v5.1.8 retombait par intermittence sur la liste
  brute (68 modeles dont la plupart en 404/410).
- Retente une fois sur timeout/5xx (les modeles lents mais fonctionnels
  survivent) ; rejette les 4xx (404 inconnu, 410 retire) ; garde les 429.
- Verifie en live contre l'API NVIDIA : 12 modeles valides au lieu de 68.

Repli runtime:
- LLMClient._http_complete : sur 404/410, retente une fois avec le modele par
  defaut du provider et marque un notice dans LLMResponse.
- AgentEngine emet un evenement SSE "notice" (bandeau .fd-ap-notice dans le
  panneau Agent, reset a chaque conversation) ; le modele reel est persistee.

UI:
- FAB (rond bas droite) et logo header du panneau : rond noir/blanc qui suit
  le theme clair/sombre (--text-primary / --bg-primary), eclair monochrome
  SVG a la place de l'emoji robot.

Tests:
- 2 nouveaux tests (429 garde / 410 retire ; repli runtime sur 410).
- 278 tests passent.
This commit is contained in:
2026-09-07 14:45:28 -04:00
parent b15289b4bc
commit bd582866d1
8 changed files with 215 additions and 76 deletions
+35
View File
@@ -1,5 +1,40 @@
# Changelog — FlowDeck
## v5.1.9 (2026-09-07) — Validation robuste des modèles Nvidia + logo Agent noir & blanc
> La liste Nvidia « diminuée » de la v5.1.8 contenait encore des modèles en
> erreur 404/410. Deux causes réelles : (1) le payload de validation ne
> correspondait pas à celui utilisé au runtime et un `payload` partagé entre
> les requêtes concurrentes envoyait des noms de modèles croisés (race) ;
> (2) rien ne protégeait l'usage si un modèle devenait indisponible après
> validation.
### Validation des modèles (fournisseur bruité)
- `_validate_chat_models()` utilise désormais le **payload de production**
(`messages` + `temperature: 0.2`, sans `max_tokens`) : un modèle qui répond
200 à la validation répond aussi 200 à l'usage réel.
- **Race fixée** : le payload est reconstruit pour chaque modèle (plus de nom
de modèle croisé entre requêtes concurrentes) — c'est pourquoi la v5.1.8
retombait par intermittence sur la liste brute non validée.
- Un seul payload partagé retiré ; retente **une fois** sur timeout/5xx (les
modèles lents mais fonctionnels survivent) ; rejette définitivement les 4xx
(404 modèle inconnu, 410 retiré/déprécié) ; garde les 429 (routés donc
utilisables).
### Repli automatique au runtime (model not found / gone)
- `LLMClient._http_complete` : si le modèle choisi répond **404/410**, retente
une fois avec le modèle par défaut du provider et ajoute un `notice`
expliquant le basculement — visible dans le panneau Agent (nouvel événement
SSE « notice », bandeau `.fd-ap-notice`, réinitialisé à chaque conversation).
- Le modèle réellement utilisé est persisté dans l'historique de conversation.
### Panneau Agent — logo noir & blanc thémé
- Le rond bleu en bas à droite (FAB) et le logo du header du panneau (à gauche
de « How can I help you today? ») passent de l'accent bleu + émoji 🤖 à un
rond noir/blanc qui suit le thème clair/sombre, avec une étincelle ✨
monochrome (SVG `currentColor` : rond `--text-primary`, étincelle
`--bg-primary`).
## v5.1.8 (2026-09-07) — Multi-lignes réellement conservées + modèles IA validés (Nvidia)
> Deux correctifs : le bug multi-lignes (v5.1.7 corrigeait le symptôme au