Files
ObsiGate/docs/features/ai-provider-picker.md
T
bruno d6b7c0e9cb
CI / lint (push) Successful in 1m13s
CI / security (push) Successful in 43s
CI / test (push) Successful in 2m33s
CI / build (push) Successful in 39s
CI / e2e (push) Successful in 10m32s
feat(ai): section Fournisseur & modele compacte + correctifs menus @/ (#82, BUG-007, BUG-008)
Refonte de la section Fournisseur & modele de l'assistant : capacites regroupees dans une bulle d'information (survol/clic/appui long) au lieu d'une liste permanente, et liste de modeles avec recherche. Correctifs : detection Unicode + filtrage insensible aux accents des commandes / et mentions @, navigation clavier fiable, et prise en compte du contexte ad-hoc en mode General cote backend.
2026-09-12 12:40:03 -04:00

2.7 KiB

#82 — Assistant IA — Section « Fournisseur & modèle » compacte

Statut : ✅ Livré (en attente de validation utilisateur) Effort : 1 jour | Impact : 🟢 Références : Roadmap · Assistant IA #81 · Changelog

  • Description : rendre la barre de sélection du modèle de l'assistant IA plus discrète tout en conservant les informations utiles :
    1. Capacités via bulle — la liste complète des types d'endpoints (Chat, Embeddings, Rerank, Images, Video, Audio Speech, Audio Transcriptions, Vision) n'est plus affichée en permanence. Un bouton ⓘ révèle une bulle d'information au survol, au clic ou par appui long (mobile).
    2. Recherche de modèle — le <select> natif est remplacé par une liste déroulante compacte dotée d'un champ de recherche qui filtre les modèles en tapant (insensible à la casse et aux accents).
    3. Compatibilité — un <select class="ai-picker-model"> masqué reste présent (source de vérité) pour les commandes admin /model et l'état persisté obsigate_ai_picker.

A. Picker partagé — ✅ livré

  • frontend/js/ai.js : buildAIPickerUI() réécrit (provider compact + combobox modèle + bulle capacités). Le picker reste partagé par l'assistant (bookslm.js) et la barre d'édition IA.
  • renderCapabilityList() conservé et affiché dans la bulle (le panneau de configuration #cfg-ai-default-model-caps continue de l'utiliser directement).
  • Fermeture des popovers au clic extérieur via un unique listener délégué (pas de fuite).
  • i18n FR/EN (ai.model_search, ai.model_info).

B. Correctifs associés — ✅ livré

  • BUG-007 — détection / et @ Unicode + filtrage insensible aux accents + navigation clavier ↑/↓ fiabilisée (jeton de séquence, scrollIntoView).
  • BUG-008 — contexte ad-hoc @ pris en compte en mode Général côté backend (backend/bookslm_routes.py) et recherche de mention sur vault=all sans vault courant.

C. Tests — ✅ livré

  • tests/frontend/ai.test.mjs : filtrage accentué, mentions accentuées, navigation ↑/↓, recherche de modèle + bulle de capacités.
  • tests/test_bookslm.py : contexte ad-hoc en mode Général (/chat).

D. Points d'attention

  • La table de capacités reste statique (backend/model_capabilities.py) : un modèle inconnu retombe sur le défaut du fournisseur.
  • Le select masqué est conservé uniquement pour la rétro-compatibilité ; ne pas le supprimer sans migrer _cmdSwitchModel / _applyPickerSelection dans frontend/js/bookslm.js.