feat(ops): accueil « Mon aujourd'hui » adapté au rôle en tête du tableau de bord

Concrétise « chacun voit ses outils, pas les 24 » : bandeau personnel dont CHAQUE carte est gated par capacité —
- Ma boîte (view_clients) : notifications non lues → /communications
- Tickets sur moi (view_all_tickets|view_own_tickets) : Issues ouvertes filtrées sur _assign = mon courriel → /tickets
- Interventions aujourd'hui (view_all_jobs) : Dispatch Jobs du jour groupés par statut → /planification
Salutation + date FR localisées (America/Toronto). Données via endpoints EXISTANTS (erp listDocs + cloche), filtrage
« à moi » côté client, dégradé gracieux (« — ») si indispo. Additif (monté au-dessus de OutageAlertsPanel), styles --ops-*.
Vérifié en dev : rendu + 3 cartes + salutation nommée + 0 erreur console. Build OK, leak-clean, déployé.
Reste (différé) : atterrissage par rôle au niveau ROUTAGE (les non-managers arrivent ailleurs que sur '/') + sources
« à moi » dédiées (non-lus par canal, mes jobs par tech) au lieu du filtrage client.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
louispaulb 2026-07-19 14:58:33 -04:00
parent b99cbdd6cd
commit 386e36f863
2 changed files with 4 additions and 0 deletions

Binary file not shown.

View File

@ -1,5 +1,8 @@
<template>
<q-page padding>
<!-- Accueil personnel adapté au rôle (cartes gated par capacité) « ses outils, pas les 24 ». -->
<MonAujourdhui />
<!-- Real-time outage alerts -->
<!-- Ouvre le TICKET précis (détail natif via deep link ?open=), pas seulement la liste. -->
<OutageAlertsPanel class="q-mb-md" @open-ticket="id => $router.push(id ? { path: '/tickets', query: { open: id } } : '/tickets')" />
@ -217,6 +220,7 @@ import { HUB_SSE_URL } from 'src/config/dispatch'
import { startOfWeek, localDateStr } from 'src/composables/useHelpers'
import HelpHint from 'src/components/shared/HelpHint.vue'
import OutageAlertsPanel from 'src/components/shared/OutageAlertsPanel.vue'
import MonAujourdhui from 'src/components/shared/MonAujourdhui.vue'
import OccupancyStrip from 'src/components/shared/OccupancyStrip.vue'
import DisclosureSection from 'src/components/shared/DisclosureSection.vue'
import OverflowMenu from 'src/components/shared/OverflowMenu.vue'