feat(assistant): #91 etapes enrichies (sous-sections Reflechon/Sources, chevrons, indicateur anime, suppression barre de chargement)
This commit is contained in:
@@ -107,14 +107,32 @@
|
||||
- [x] **G2.** Événements en **direct** : les steps sont poussés sur une file
|
||||
`asyncio.Queue` par la boucle agent et émis dès leur exécution — le bloc
|
||||
« N étapes » grandit pendant que l'assistant travaille (plus de liste fin de run).
|
||||
- [x] **G3.** Ligne « Réflexion » (`ai.step.thought`) : quand le modèle émet un
|
||||
texte intermédiaire avec ses appels d'outils, il est publié comme event SSE
|
||||
`step` et affiché dans la liste (`. thought` Notion).
|
||||
- [x] **G3.** Sous-section **« Réflexion ▶ / ▼ »** : quand le modèle émet un texte
|
||||
intermédiaire avec ses appels d'outils, il est publié comme event SSE `step` et
|
||||
rendu comme une **sous-section repliable** à l'intérieur du bloc d'étapes —
|
||||
le chevron passe de ▶ à ▼ à l'ouverture et le texte (jusqu'à 1 200 caractères)
|
||||
s'affiche en dessous, en retrait sur un filet vertical.
|
||||
- [x] **G4.** Nouveaux outils principaux côté **web** (`backend/tools/web.py`,
|
||||
risques READ, scope IN_APP, SSRF-guard + limite de taille) :
|
||||
`web_search` (SearXNG auto-hébergé, configurable via `OBSIGATE_SEARXNG_URL`)
|
||||
et `fetch_url` (lecture d'une page publique, HTML → texte).
|
||||
Steps affichés : « Recherche sur le web : … » / « Page web consultée : … ».
|
||||
- [x] **G5.** **Sources web** : le backend enrichit l'événement SSE `tool` de
|
||||
`sources [{title, url}]` (`_tool_sources` : résultats `web_search` plafonnés à 8,
|
||||
page `fetch_url`) et le frontend affiche une sous-section « Sources (N) » **ouverte
|
||||
par défaut** avec les liens cliquables (`target="_blank"`, `rel="noopener
|
||||
noreferrer"`). Aucun résultat → pas de section.
|
||||
- [x] **G6.** **En-tête d'étapes** : libellé « N étapes » suivi du chevron
|
||||
▶ / ▼ (fin du préfixe « > »), et **indicateur animé** (trois points en
|
||||
pulsation décalée, pur CSS, respecte `prefers-reduced-motion`) devant le libellé
|
||||
pendant l'exécution. La **barre de chargement** au-dessus de la zone de saisie est
|
||||
supprimée ; en chat simple, l'indicateur s'affiche dans la bulle de réponse en
|
||||
attente. Les états d'ouverture (étapes, réflexion, sources) sont mémorisés sur le
|
||||
message : le re-rendu d'un token ne referme jamais ce que l'utilisateur a ouvert.
|
||||
- [x] **G7.** `web_search` avertit explicitement le modèle quand l'instance SearXNG
|
||||
ne remonte aucun résultat (moteurs amont suspendus/CAPTCHA) : `warning` +
|
||||
`unresponsive_engines` dans le résultat — sans ce signal, l'assistant relançait la
|
||||
même recherche jusqu'au quota d'outils.
|
||||
|
||||
### Outils restants — documentés pour le futur (hors #91)
|
||||
La catégorie Notion « étapes » peut s'étendre ; chaque futur outil devra être un
|
||||
|
||||
Reference in New Issue
Block a user