gigafibre-fsm/apps/ops/src
louispaulb 69290d7b07 feat(assistant): désambiguïsation client via options cliquables (un seul champ)
Remplace le 2e champ « rechercher un client » du chat par une liste d'options
que l'ASSISTANT propose DANS le fil (comme un menu de désambiguïsation). Plus
naturel, plus simple : on écrit une seule chose, et si le client est ambigu
l'assistant liste les candidats probables — un clic les envoie comme tour suivant.

Backend (staff-agent.js + agent-tools.json) :
- lecteur find_customer(query) → CANDIDATS via /collab/customer-search (réutilise
  l'endpoint de l'ancien typeahead). 1 candidat → l'assistant prend l'id ; >1 →
  il demande « lequel ? » sans réénumérer (l'UI affiche la liste).
- execToolPlan capte les candidats (find_customer + check_service ambigu) dans
  ctx.options ; plan() renvoie { options } ; prompt : règle « identifier le client ».
Frontend (OrchestratorDialog.vue + MainLayout.vue) :
- retire le q-select entitySearch (+ la prop et le binding MainLayout) ; composer
  = un seul champ. Rend d.options en q-list cliquable ; pickOption envoie
  « label (id) » comme tour suivant ; options effacées à l'envoi/au reset.

Vérifié live (dev→hub prod) : « redémarre le modem du client Tremblay » → 1 champ,
8 options cliquables + « lequel ? » ; clic « Tremblay (Filtr-Aqua) Sylvain » →
tour « … (C-SYLVT…) » envoyé, options effacées, l'assistant continue ; 0 erreur console.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-20 08:54:53 -04:00
..
api feat(dispatch): « Proposer au client » directement dans le flux Dispo par motif (in-ticket/conversation) 2026-07-19 15:25:37 -04:00
boot feat(ops): dispatch auto complet + perf Boîte/rapports + fix session 2026-07-02 08:49:35 -04:00
components feat(assistant): désambiguïsation client via options cliquables (un seul champ) 2026-07-20 08:54:53 -04:00
composables chore(reconcile): commit MES hunks déployés dans les fichiers co-édités (split via git apply --cached) 2026-07-19 20:06:47 -04:00
config feat(ops): « / » = accueil universel adapté au rôle (step 3/3) + consolidation Thème/Équipe→Paramètres 2026-07-19 15:35:33 -04:00
css fix(ops/mobile): Network GPON tient sur mobile (onglets défilants + arbre enroulé + boutons tactiles) 2026-07-04 20:56:11 -04:00
data ops : types de job = source unique (config/job-types) 2026-07-07 21:27:32 -04:00
layouts feat(assistant): désambiguïsation client via options cliquables (un seul champ) 2026-07-20 08:54:53 -04:00
modules fix(realtime): l'app terrain et le panneau pannes SURVIVENT aux redéploiements du hub 2026-07-19 12:26:37 -04:00
pages chore(reconcile): commit MES hunks déployés dans les fichiers co-édités (split via git apply --cached) 2026-07-19 20:06:47 -04:00
router feat(ops): « / » = accueil universel adapté au rôle (step 3/3) + consolidation Thème/Équipe→Paramètres 2026-07-19 15:35:33 -04:00
stores chore(ops): supprime le sous-système dispatch MORT (23 fichiers, 0 importeur) 2026-07-19 10:32:18 -04:00
utils ticket panel: décodage entités HTML + fil unifié + lien client cherchable 2026-07-07 07:09:25 -04:00
App.vue fix(ops): overlay accès — message exact « n'a pas pu charger » + détail erreur + piste extension 2026-07-03 17:31:41 -04:00