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.
This commit is contained in:
@@ -52,6 +52,9 @@
|
||||
dans `GET /api/config/ai-models`.
|
||||
- [x] Affichage ☑/□ dans le picker de l'assistant (`frontend/js/ai.js`) et dans le panneau de
|
||||
configuration (`#cfg-ai-default-model-caps`, `frontend/js/config.js`).
|
||||
- [x] **#82** — dans le picker de l'assistant, la liste permanente est remplacée par un bouton
|
||||
d'information ⓘ et une bulle au survol/clic/appui long, avec recherche de modèle. Détail :
|
||||
[ai-provider-picker.md](./ai-provider-picker.md).
|
||||
|
||||
## F. Tests & documentation — ✅ livré
|
||||
- [x] Backend : `tests/test_model_capabilities.py`, `tests/test_skills.py`, `tests/test_ai_vision.py`,
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
# #82 — Assistant IA — Section « Fournisseur & modèle » compacte
|
||||
|
||||
> **Statut :** ✅ Livré (en attente de validation utilisateur)
|
||||
> **Effort :** 1 jour | **Impact :** 🟢
|
||||
> **Références :** [Roadmap](../ROADMAP.md) · [Assistant IA #81](./ai-assistant-commands.md) · [Changelog](../../CHANGELOG.md)
|
||||
|
||||
- **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é
|
||||
- [x] `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.
|
||||
- [x] `renderCapabilityList()` conservé et affiché dans la bulle (le panneau de configuration
|
||||
`#cfg-ai-default-model-caps` continue de l'utiliser directement).
|
||||
- [x] Fermeture des popovers au clic extérieur via un unique listener délégué (pas de fuite).
|
||||
- [x] i18n FR/EN (`ai.model_search`, `ai.model_info`).
|
||||
|
||||
## B. Correctifs associés — ✅ livré
|
||||
- [x] **BUG-007** — détection `/` et `@` Unicode + filtrage insensible aux accents + navigation
|
||||
clavier ↑/↓ fiabilisée (jeton de séquence, `scrollIntoView`).
|
||||
- [x] **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é
|
||||
- [x] `tests/frontend/ai.test.mjs` : filtrage accentué, mentions accentuées, navigation ↑/↓,
|
||||
recherche de modèle + bulle de capacités.
|
||||
- [x] `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`.
|
||||
Reference in New Issue
Block a user