feat(ops): accueil « Mon aujourd'hui » v2 — chiffres exacts + état terrain live + actions réelles
Applique « ne pas réutiliser une UX/métrique faible telle quelle » : - Boîte de réception : remplace le compteur de session 'unread' (démarrait à 0, trompeur) par un VRAI décompte via /conversations/inbox-tickets — « à trier » (non assignés) + total ouvert. Tickets sur moi = _assign contient mon courriel. - Interventions aujourd'hui : ajoute l'ÉTAT TERRAIN LIVE (en route / sur place via /roster/geofence-states, pastilles qui pulsent) en plus du découpage par statut. - Barre d'ACTIONS réelles : « Allouer un technicien » → ouvre le copilote NL PRÉ-REMPLI (event ops:assistant → MainLayout), « Nouvelle vente », « Rechercher ⌘K ». Le pont ops:assistant est ajouté dans MainLayout (propre). - États chargement (« … ») / vide, focus clavier, prefers-reduced-motion. Vérifié en dev : rendu, 199 à trier (donnée réelle), event allocate + palette OK, 0 erreur console. Build OK, leak-clean, déployé. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
386e36f863
commit
dbbcd721e4
Binary file not shown.
|
|
@ -243,8 +243,10 @@ const { togglePalette, openPalette } = useCommandPalette()
|
|||
function onGlobalKey (e) {
|
||||
if ((e.metaKey || e.ctrlKey) && (e.key === 'k' || e.key === 'K')) { e.preventDefault(); togglePalette() }
|
||||
}
|
||||
onMounted(() => window.addEventListener('keydown', onGlobalKey))
|
||||
onBeforeUnmount(() => window.removeEventListener('keydown', onGlobalKey))
|
||||
// Ouvre le copilote NL PRÉ-REMPLI depuis un autre composant (ex. accueil → « Allouer un technicien »).
|
||||
function onAssistantEvent (e) { onNlCommand((e && e.detail && e.detail.text) || '') }
|
||||
onMounted(() => { window.addEventListener('keydown', onGlobalKey); window.addEventListener('ops:assistant', onAssistantEvent) })
|
||||
onBeforeUnmount(() => { window.removeEventListener('keydown', onGlobalKey); window.removeEventListener('ops:assistant', onAssistantEvent) })
|
||||
|
||||
const auth = useAuthStore()
|
||||
const { can, isLoaded, userName, userEmail } = usePermissions()
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user