Refonte de l'onglet Processus : l'onglet compose la base, et deux variantes se comparent (STUD-1124) #1658
Loading…
Reference in a new issue
No description provided.
Delete branch "hermes/processus-shadcn-refondre"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Ce que la passe a mesuré d'abord
Le mandat demandait de remplacer dans
Processus.svelteles sept composants maison delib/base/par « leur équivalent shadcn copié ». Vérification fichier par fichier : ils sont déjà shadcn —BarreAvancee=Progress+ le compte,BadgeEtat=Badge+ le mot de l'état,Infobulle=Tooltip+ l'appui au doigt,EnTeteTriable=Table.Head+ le bouton de tri,CarteMaintenant=Card+Anneau+GrandChiffre. Les recopier dans l'onglet aurait rendu sept présentations au lieu d'une (CHARTE-UI : un seul style par type d'élément, celui delib/base/) et fait sortirhomogeneite.pyen 1 : il refuse une action sansdata-base. Aucun de ces composants n'est orphelin : chacun est lu par l'Accueil, l'Analytique, Vidéos, Top ou le Calendrier. Aucun fichier delib/base/n'est touché par cette branche.Ce qui change
MessageOrigine, le repli des essais porteLIEN(contour de focus de la base), le ticket d'un essai signalé passe àLien.Demo.svelte: le bouton clair/sombre devient laPucede la base (écart « action sans data-base » de la démo résolu, six habillages locaux tolérés retirés).?finition=mat, déclarée parProcessus.svelteet annoncée parmain.js, était morte (l'onglet ne passait pas la prop à la carte « Maintenant ») : elle est de nouveau lue.ProcessusVarianteA.svelte(« une seule liste ») etProcessusVarianteB.svelte(« le tableau d'abord »), se regardent par?disposition=A|B, chargées à part. Le porteur resteProcessus.svelte: aucune promotion, la promotion visible reste à ratifier.Mesures (2026-10-14, Chrome 154, styles calculés de 4 pages × 4 configurations)
data-baseContraste minimum : 4,99:1 en clair, 6,43:1 en sombre, identique pour les trois. Écarts d'homogénéité sur les quatre pages : 4, dont 2 déjà connus (l'en-tête de groupe sans
data-basesur les trois pages ; l'écart vertical entre cartes, décision de la base) — après correction de deux écarts que les variantes avaient introduits (contour de focus du repli, deux fonds pour le même typeligne).Poids gzip, même commande de build, base de la PR (
1465663e) contre la branche :app.js139 396 → 139 846 octets (33 073 → 33 283),ProcessusVarianteA.js23 008 (7 461),ProcessusVarianteB.js24 315 (7 644). Aucune feuille CSS séparée (les styles sont injectés dansapp.js).Porte
_tableau/test_charte_svelte.py: OK, 0 écart surfront/src/._tableau/front/garde-habillage.py: 0 refus (32 exceptions, 38 avant)._tableau/test_homogeneite.py: OK — 44 relevés (Chrome/155.0.8059.79), 2 écarts connus, 0 nouveaux, 0 résolus._tableau/test_page_processus.pyet_tableau/test_serveur_processus.py: OK.npx vitest run: 195 tests, 26 fichiers, 0 échec (179 avant ; le banctests/variantes.test.jsajoute 6 cas : même information que le porteur, quatre chiffres, dates au format de la charte, zéro emoji, aucun bouton sans état).vite build: vert,dist/avecindex.htmlet les morceaux.Captures
Sur le PC,
/home/atelier/atelier-hermes/captures-t_11210c3f/:cote-a-cote-bureau-sombre.png,cote-a-cote-bureau-clair.png,cote-a-cote-telephone-sombre.png,cote-a-cote-telephone-clair.png(porteur | A | B | démo de la base) etpng/(les 16 captures unitaires +releve.json). La page « Contenu » de YouTube Studio n'a pas pu être jointe : ce poste n'a pas de session YouTube ouverte, et aucun identifiant n'est employé pour en ouvrir une.Trois points signalés, non tranchés ici
<button data-entete>, permis par la charte, mais le relevé le compte comme une action sansdata-basesur les trois présentations (3 occurrences par page). Il manque un composant d'en-tête danslib/base/— la base a un seul porteur.Processus.svelte(button py-1,li border-b,li border-b-0,tr bg-muted/50×2,tr border-b×2) tiennent àanimate:flip: une directive d'animation ne s'applique qu'à un élément, jamais à un composant, donc la ligne reste un<tr>écrit à la main plutôt queTable.Row. Les variantes prennentTable.Rowet perdent le réordonnancement animé — c'est mesuré et documenté.grouper()réunit les essais d'un même travail en une ligne, et les deux échecs du témoin appartiennent au même épisode que la ligne relancée. Comportement du porteur, repris par les variantes, signalé et non corrigé (le trancher change ce que l'onglet compte).Documentation
_tableau/front/historique-variantes-processus.md(raisons, mesures, retour arrière en une ligne),LECONS.md(leçon datée),_tableau/LXC-132.md(les variantes ne changent rien au déploiement).OUTILS.mdnon touché : aucune commande n'est ajoutée.Refs STUD-1124.
fusion-auto: pas de fusion, la PR est en conflit avec main : à rebaser. Le chef de l'atelier renvoie la carte à l'agent ; l'étiquette tombera d'elle-même une fois corrigé.bdac375fcb81e40fecfe81e40fecfec52e3c55aeRebasé sur
mainet poussé (c52e3c55). Un conflit :LECONS.md— les deux côtés ajoutaient en fin de fichier ; les deux apports sont gardés.Mesures locales : 44/44 fichiers de banc, 376 essais verts ;
npx vite buildcode 0, 1881 octets + 1012K de JS.fusion-auto: pas de fusion, la CI est rouge (Rust). Le chef de l'atelier renvoie la carte à l'agent ; l'étiquette tombera d'elle-même une fois corrigé.fusion-auto: pas de fusion, la PR est en conflit avec main : à rebaser. Le chef de l'atelier renvoie la carte à l'agent ; l'étiquette tombera d'elle-même une fois corrigé.c52e3c55aea660dd6789fusion-auto: pas de fusion, la PR est en conflit avec main : à rebaser. Le chef de l'atelier renvoie la carte à l'agent ; l'étiquette tombera d'elle-même une fois corrigé.fusion-auto: pas de fusion, la CI est rouge (Rust). Le chef de l'atelier renvoie la carte à l'agent ; l'étiquette tombera d'elle-même une fois corrigé.a660dd6789ad8b4a53beLe conflit est réglé et le rouge est levé. Tête poussée :
38fc8f5f.Ce qui a été fait :
origin/main(le commit de la refonte est réécrit au-dessus demain), conflits résolus sur_tableau/habillage-exceptions.jsonet_tableau/front/src/Demo.svelte;38fc8f5f: les variantes passent les garde-fous demain. Après rebasage, deux bancs demainviraient au rouge sur cette branche — c'était la cause de l'étiquetteci-rouge:_tableau/test_onglets_doublons.py: les deux variantes du Processus n'étaient classées dans aucun onglet → elles rejoignent les composants de l'ongletprocessus;_tableau/test_pilote_sans_mika.py: des « Mika » écrits en dur dans les textes visibles des variantes → elles passent parnomPilote(), comme le porteurProcessus.svelte.Mesures locales, sur
38fc8f5f:_tableau/lancer-tests.py --tout: 200 bancs verts, code 0 (avant le correctif : 2 bancs en échec,test_onglets_doublons.pyettest_pilote_sans_mika.py) ;npx vitest rundans_tableau/front: 48 fichiers, 419 tests verts, code 0 ;npx vite build: code 0,dist/index.htmlprésent (1,88 kB) etdist/assets/*.jsde taille réelle ;Relevé de la forge : la CI est repartie sur
38fc8f5f(les deux jobs Rust tournent environ 7 min chacun, plus la file d'attente de l'exécutant) ; l'étiquetteconflita disparu et la PR est fusionnable.Non mesuré : aucune capture d'écran jointe à ce commentaire, et le relevé d'homogénéité dit « NON MESURÉ : captures sans référence » — l'aspect des deux variantes (
?disposition=A/?disposition=B) n'est donc pas couvert par une référence d'image.fusion-auto: pas de fusion, la CI est rouge (Rust). Le chef de l'atelier renvoie la carte à l'agent ; l'étiquette tombera d'elle-même une fois corrigé.38fc8f5f9bdda50a0b53Fusionnée automatiquement par
fusion-auto(forge) : CI verte, sans conflit.