From 386e36f8639efac91034aef26f0c8da0ce1f3912 Mon Sep 17 00:00:00 2001 From: louispaulb Date: Sun, 19 Jul 2026 14:58:33 -0400 Subject: [PATCH] =?UTF-8?q?feat(ops):=20accueil=20=C2=AB=20Mon=20aujourd'h?= =?UTF-8?q?ui=20=C2=BB=20adapt=C3=A9=20au=20r=C3=B4le=20en=20t=C3=AAte=20d?= =?UTF-8?q?u=20tableau=20de=20bord?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- apps/ops/src/components/shared/MonAujourdhui.vue | Bin 0 -> 7173 bytes apps/ops/src/pages/DashboardPage.vue | 4 ++++ 2 files changed, 4 insertions(+) create mode 100644 apps/ops/src/components/shared/MonAujourdhui.vue diff --git a/apps/ops/src/components/shared/MonAujourdhui.vue b/apps/ops/src/components/shared/MonAujourdhui.vue new file mode 100644 index 0000000000000000000000000000000000000000..6debda2589df6d1dbbba6f731187786ccb5ad0c8 GIT binary patch literal 7173 zcmcgxOOG4J5zd*vqD&i}q0HfHWqFsoOM5NpAVXRU*7{;aST|>yWJ~i>&&)nT6Ywd3 zuYrF+j@bn8$v_Uing1leBwzJBI799#c7Viy*PQO^de>Lg?W4riDo!bpX%UKNv3r2=;Zm?`Ug7s zn!Z~9`1ElPT$s_rg?O7ua)nMMg_ek8p~d>Alz25!o066Jp$|X4VF>`rSM@+ zDyF^(nxtu@y)K24vZl7gE32T}3!L3HtJbzku&$~D@2x~kl zr2GR*E2TT7&6*yRmbCsr3hOjRJii9$Ih@LiP#c%XeMrqchPbU()4<~M2)0bG7eX?D$WJhXUcseQ8>q( zn)P#0j65&t{786kLP3@4OjfR)DV?MoF>IEJZQC6>o>1YrGNio=;RBPt`;IINF4ii5 zr<2%Msono$@=?F@a`39yE!3N9Dbrl;7VBk;AdORM0lBAHFqPWAC4jZyef?r5cwJfm zf#Kbec(U@k!Pb7ldsRXh03p%3Vh(0Cj^C)EWwg3yZS=}#INyK{nx5NpQ zr+AkslSpZcIcf9&9Rhj^pA|0ol)n97IbU_@gXPxN>RYgww~%BlMDt+@+yKo#|0T!# zgv1QEwlJV*C(sGVlZA@m9{^S088A+-fA#@(zjS(qcaueQ`2`YZH*nkrtP3SC&xP-w zb8=a5MDA}swMm+-urv>*d2U%9j_PJBx(v^&tvcH$;WWB>mo~0J<(e`gynZOOw|l0v zZIg2~y_<_hYQ9t@^^3EUv#(!(?Mno0NpB=qC|3kB#OE5v=lXjj37Q?2+{lkOjo#m% z9^4lri&kis)j0uJo`=$_ojoy29J2c9fjn>z9&DX{64G-Wp%N0NErmZ0AvDvC<9pKw zv*}>#_(R~oFVSIYhtIfIm~L8^K9UFW1$5;}@1weQmah(B183#^eVH|KwTEhQLN~ zDO6g`7q<0CC9z1|1$_}s;mf5NDx^-v_?ckv@G@U|=iC{_0Ag-4DDs(-z6X+*RtVU{ zF)IgV>lNaw0+o(wZ@|_<$BhQY$IBJwmPlhzGuZcS4DeW?OCE_bQB|!Gs$Rjo?17cJ#!1NT+|e~BuYjAJ zU$#U>QvV)#>zlb2_=~<^X8wdO6i?Q%pQV^x;YLehsK=~-uWuM_XTRxetyQa@c@0fxPe%m!dp8Y z6HXe%?a9$wN1@7zG2*z5qR)ah?sI>_$7m2=)uk%8P5sFcpeUSFW+0sW-DCquy1?vv zuGM^zmh6TPn(XG0VOI~pRtSVMRdeJ0a{6w@Yll3^rtL}n28Li4M~{z>X~?sa8I}@M zQY-<=UI2K^+h-u3j3KYeb2GC*3EstkdE|}?r%$FJP zu~MKFcL$K>Sl(PKOyIs;IfqN=y}BvIL{T@wV6n*D3{O>fJ*!e16NJe)+)AjH4JN4$HS}%Sa^*2*R>&W;JGcu6Fo3wi6B(ZGx&{v@p+TnqRpX2P|{=k#-E?o$1 zJ5CfQ4gh?Hr?xJ=Kby_)aETYa5RT!O#m*tdpOP^K5X?^=#&w@xTV}qzIwaxaUglu- z3^0vPMIu?=AyGJ@!Qc=*D~0PF=<4EuV@ytOFp|MxnNk}IQ+bubyy5-`1WlXxKG6_1+++2M ztZcGyg8ap?xT1m)Gj@!>Pz3=`ld(c&LFO%FA$*7S7W;E^ z<`KyAa&>$;Lz!_B-XU$b7;+|PJm6BR-o0C@_v72EcaN)=0mNApbw2D3O9bJOeoT3m z~z;$O4A@cmnj^@d;!ld + + + @@ -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'