Analytique : l'onglet se regarde dans la page d'essai, se mesure et se garde (STUD-1227) #1641

Merged
hermes-fusion merged 3 commits from hermes/analytique-svelte-1227 into main 2026-10-14 22:00:03 +02:00
Collaborator

Carte t_eab99a94 (implémentation de l'onglet Analytique, STUD-1227).

Ce qui existait déjà. L'onglet Svelte est dans main depuis le 14/10 (859cfa0, 9b6aebe) : une fiche par chaîne (courbe des vues, heures de longs sur douze mois face au seuil, rétention, clics, abonnés), données embarquées, ancienne Analytique gardée sous #o-ancien-analytique. Inventaire de parité : t_ec2bfeac.

Ce que cette PR ajoute.

  1. La page d'essai montre l'onglet : /processus/?analytique le monte seul sur les données figées de /api/analytique (tests/api-analytique.json, collecte réelle du 14/10, 5 chaînes, seuil 4 000 h). Sans données lisibles, l'onglet le dit.
  2. Le relevé d'homogénéité (STUD-1185) le mesure : page analytique dans PAGES, instantané passé à l'aperçu, marqueur de montage data-analytique-pret attendu par le pilote.
  3. Un écart d'homogénéité corrigé : le déclencheur d'infobulle de la pastille de verdict n'avait pas le style des infobulles de la base (deux tailles et deux couleurs dans la même page). Mesuré par le relevé, corrigé (text-xs text-muted-foreground).
  4. Un banc de rendu : front/tests/rendu-analytique.test.js (6 cas) sur les données réelles — parité, un chiffre une seule fois, dates au jour court, aucune bulle native, zéro emoji, mesure absente en « — », bouton « Signaler à Mika », blocs que la collecte ne fournit pas encore.

Preuves (sur cette branche, c5e7c4a2 + 3 commits).

  • npx vitest run : 21 fichiers, 170 tests, tous verts (dont les 6 nouveaux).
  • npx vite build : dist/index.html (1 804 o) + 920 Ko de JS, app.js 139 Ko, base.js 327 Ko.
  • python3 _tableau/lancer-tests.py --tout : 155 bancs verts, code 0.
  • python3 _tableau/front/homogeneite.py : 44 relevés, 5 écarts connus, 0 nouveau, 0 résolu, code 0 (captures NON MESURÉES : la référence de cette machine se pose avec l'accord de l'opérateur).
  • Navigateur (Chrome sans tête, page d'essai) : l'onglet monte, 5 fiches, l'alerte « aucune mesure » avec « Signaler à Mika », document.scrollWidth 375 à 390 px et 1 585 à 1 600 px (aucun débordement du document ; la rangée de puces de la base défile, comme dans Processus).
  • Captures bureau et téléphone, clair et sombre : ~/atelier-hermes/captures-t_eab99a94/ecran-analytique-*.png (regardées) et les captures pleine page du relevé (releve-hom/analytique-*.png).

Points pour le porteur de la base (Claude Opus, PC) — non corrigés ici.

  • La barre d'avancée affiche 14/4000 h là où l'étiquette de la fiche écrit « 4 000 h » (séparateur des milliers) ; l'anneau de la carte de tête arrondit 14 h / 4 000 h à « 0 % ».
  • L'écart vertical connu entre cartes (12 px Accueil et démo contre 20 px ailleurs) change de libellé : l'Analytique rejoint le groupe à 20 px. homogeneite-connus.json est mis à jour par l'outil (--relever puis --admettre, porteur STUD-1124).

Hors périmètre. Le passage à /api/analytique servi par Rust (plus de données embarquées) est la carte t_be254555 ; le repli si le Svelte ne monte pas est la carte t_83d870fa.

Aucune fonction visible retirée. Base commune (src/lib/base/) non modifiée. Fusion à l'opérateur.

Carte t_eab99a94 (implémentation de l'onglet Analytique, STUD-1227). **Ce qui existait déjà.** L'onglet Svelte est dans main depuis le 14/10 (`859cfa0`, `9b6aebe`) : une fiche par chaîne (courbe des vues, heures de longs sur douze mois face au seuil, rétention, clics, abonnés), données embarquées, ancienne Analytique gardée sous `#o-ancien-analytique`. Inventaire de parité : `t_ec2bfeac`. **Ce que cette PR ajoute.** 1. **La page d'essai montre l'onglet** : `/processus/?analytique` le monte seul sur les données figées de `/api/analytique` (`tests/api-analytique.json`, collecte réelle du 14/10, 5 chaînes, seuil 4 000 h). Sans données lisibles, l'onglet le dit. 2. **Le relevé d'homogénéité (STUD-1185) le mesure** : page `analytique` dans `PAGES`, instantané passé à l'aperçu, marqueur de montage `data-analytique-pret` attendu par le pilote. 3. **Un écart d'homogénéité corrigé** : le déclencheur d'infobulle de la pastille de verdict n'avait pas le style des infobulles de la base (deux tailles et deux couleurs dans la même page). Mesuré par le relevé, corrigé (`text-xs text-muted-foreground`). 4. **Un banc de rendu** : `front/tests/rendu-analytique.test.js` (6 cas) sur les données réelles — parité, un chiffre une seule fois, dates au jour court, aucune bulle native, zéro emoji, mesure absente en « — », bouton « Signaler à Mika », blocs que la collecte ne fournit pas encore. **Preuves (sur cette branche, `c5e7c4a2` + 3 commits).** - `npx vitest run` : 21 fichiers, 170 tests, tous verts (dont les 6 nouveaux). - `npx vite build` : `dist/index.html` (1 804 o) + 920 Ko de JS, `app.js` 139 Ko, `base.js` 327 Ko. - `python3 _tableau/lancer-tests.py --tout` : 155 bancs verts, code 0. - `python3 _tableau/front/homogeneite.py` : 44 relevés, 5 écarts connus, 0 nouveau, 0 résolu, code 0 (captures NON MESURÉES : la référence de cette machine se pose avec l'accord de l'opérateur). - Navigateur (Chrome sans tête, page d'essai) : l'onglet monte, 5 fiches, l'alerte « aucune mesure » avec « Signaler à Mika », `document.scrollWidth` 375 à 390 px et 1 585 à 1 600 px (aucun débordement du document ; la rangée de puces de la base défile, comme dans Processus). - Captures bureau et téléphone, clair et sombre : `~/atelier-hermes/captures-t_eab99a94/ecran-analytique-*.png` (regardées) et les captures pleine page du relevé (`releve-hom/analytique-*.png`). **Points pour le porteur de la base (Claude Opus, PC) — non corrigés ici.** - La barre d'avancée affiche `14/4000 h` là où l'étiquette de la fiche écrit « 4 000 h » (séparateur des milliers) ; l'anneau de la carte de tête arrondit 14 h / 4 000 h à « 0 % ». - L'écart vertical connu entre cartes (12 px Accueil et démo contre 20 px ailleurs) change de libellé : l'Analytique rejoint le groupe à 20 px. `homogeneite-connus.json` est mis à jour par l'outil (`--relever` puis `--admettre`, porteur STUD-1124). **Hors périmètre.** Le passage à `/api/analytique` servi par Rust (plus de données embarquées) est la carte `t_be254555` ; le repli si le Svelte ne monte pas est la carte `t_83d870fa`. Aucune fonction visible retirée. Base commune (`src/lib/base/`) non modifiée. Fusion à l'opérateur.
Cause. L'onglet Analytique n'était monté que par la page Python (#analytique-app, données en
attribut) : la page d'essai /processus/ ne le montrait par aucune adresse, et le relevé
d'homogénéité (STUD-1185) ne le mesurait donc pas — ses styles et ses infobulles n'étaient
comparés à aucun autre onglet.

Remède. /processus/?analytique monte l'onglet seul, sur les données figées de /api/analytique
que l'aperçu du front sert depuis tests/api-analytique.json (données réelles de la collecte du
14/10) ; la page « analytique » entre dans le relevé (PAGES, instantané passé à l'aperçu), et le
pilote attend son marqueur de montage (data-analytique-pret). Sans données lisibles, l'onglet le
dit au lieu de faire passer une absence de relevé pour un studio vide.
Cause. Le déclencheur d'infobulle de la pastille (« Les longs ne tiennent pas ») ne portait que
« cursor-default » : dans la même page, les infobulles avaient deux tailles (12 px et 14 px) et
deux couleurs (texte discret et texte plein) — mesuré par le relevé d'homogénéité dès que l'onglet
y est entré (écarts nouveaux « infobulle, repos : fontSize / color n'ont pas une seule valeur »).

Remède. Le déclencheur porte les classes des autres infobulles de la base (text-xs,
text-muted-foreground) ; la pastille garde son style propre (data-base="badge"). L'écart vertical
entre cartes connu change de libellé (l'Analytique rejoint le groupe à 20 px) : la liste des écarts
connus est mise à jour par l'outil (--relever puis --admettre), porteur STUD-1124 comme l'entrée
qu'elle remplace.
Analytique : un banc de rendu mesure la parité et le chiffre dit une seule fois
All checks were successful
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (push) Successful in 22s
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (push) Successful in 22s
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (pull_request) Successful in 16s
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (pull_request) Successful in 12s
8a23a0ccfe
Cause. La parité de l'ancien onglet Python et la règle « chaque chiffre une seule fois » (revue du
13/10) n'étaient mesurées par aucun banc : seule la logique pure (analytique.test.js) l'était.

Remède. front/tests/rendu-analytique.test.js rend l'onglet côté serveur sur les données réelles de
la collecte du 14/10 : une fiche par chaîne avec son état, la jauge des heures de longs sur douze
mois face au seuil, les six mesures nommées une fois chacune, les verdicts sans chiffre, le bouton
« Signaler à Mika » sur la seule chaîne sans mesure, les dates au jour court, aucune bulle native,
zéro emoji, une mesure absente écrite « — », et les deux blocs que cette collecte ne fournit pas
encore (ce qui pèse, miniature la plus faible) éprouvés sur une fiche complétée.
Collaborator

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é.

`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é.
Author
Collaborator

Relecture (carte t_c037ebb1) : à reprendre sur un seul point — la branche est en conflit avec main.

git merge-tree --write-tree --name-only origin/main HEAD → CONFLICT (content): Merge conflict in _tableau/front/homogeneite-connus.json. Cause : a94e04ea (STUD-1225, entré dans main par #1640) a retiré de ce fichier l'écart connu « lien, repos : textDecorationLine n'a pas une seule valeur », sur les mêmes lignes que l'ajout « analytique » de cette branche.

Remède : rebaser sur origin/main (bede6a69), garder la suppression de main et l'identifiant écart vertical entre cartes : 12 px (accueil, demo) | 20 px (analytique, atelier, processus, videos), relancer python3 _tableau/front/homogeneite.py (attendu 0 nouveau, 0 résolu, code 0), repousser.

Le reste est relu et conforme, mesuré sur la tête 8a23a0cc : cargo 42/42 code 0, vitest 21 fichiers / 171 tests verts, vite build code 0, CI 4/4 verte ; homogeneite.py 44 relevés, 0 nouvel écart, code 0 ; les 38 déclencheurs d'infobulle portent les mêmes styles calculés et la bulle s'ouvre sur les jetons de la base ; six libellés de mesure une seule fois par fiche, 0 doublon, 0 date ISO, 0 title= natif, 0 pictogramme ; captures bureau/téléphone clair/sombre regardées, aucun débordement du document. Détail complet dans la carte t_c037ebb1.

**Relecture (carte t_c037ebb1) : à reprendre sur un seul point — la branche est en conflit avec `main`.** `git merge-tree --write-tree --name-only origin/main HEAD` → `CONFLICT (content): Merge conflict in _tableau/front/homogeneite-connus.json`. Cause : `a94e04ea` (STUD-1225, entré dans main par #1640) a retiré de ce fichier l'écart connu « lien, repos : textDecorationLine n'a pas une seule valeur », sur les mêmes lignes que l'ajout « analytique » de cette branche. Remède : rebaser sur `origin/main` (`bede6a69`), garder la suppression de main et l'identifiant `écart vertical entre cartes : 12 px (accueil, demo) | 20 px (analytique, atelier, processus, videos)`, relancer `python3 _tableau/front/homogeneite.py` (attendu 0 nouveau, **0 résolu**, code 0), repousser. Le reste est relu et conforme, mesuré sur la tête `8a23a0cc` : cargo 42/42 code 0, vitest 21 fichiers / 171 tests verts, `vite build` code 0, CI 4/4 verte ; `homogeneite.py` 44 relevés, 0 nouvel écart, code 0 ; les 38 déclencheurs d'infobulle portent les mêmes styles calculés et la bulle s'ouvre sur les jetons de la base ; six libellés de mesure une seule fois par fiche, 0 doublon, 0 date ISO, 0 `title=` natif, 0 pictogramme ; captures bureau/téléphone clair/sombre regardées, aucun débordement du document. Détail complet dans la carte t_c037ebb1.
hermes-bot force-pushed hermes/analytique-svelte-1227 from 8a23a0ccfe
All checks were successful
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (push) Successful in 22s
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (push) Successful in 22s
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (pull_request) Successful in 16s
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (pull_request) Successful in 12s
to f853eabc56
All checks were successful
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (push) Successful in 15s
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (push) Successful in 12s
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (pull_request) Successful in 15s
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (pull_request) Successful in 11s
2026-10-14 21:33:02 +02:00
Compare
hermes-fusion deleted branch hermes/analytique-svelte-1227 2026-10-14 22:00:03 +02:00
Collaborator

Fusionnée automatiquement par fusion-auto (forge) : CI verte (Rust et Front Svelte), PR relue (étiquette relu), sans conflit.

Fusionnée automatiquement par `fusion-auto` (forge) : CI verte (Rust et Front Svelte), PR relue (étiquette `relu`), sans conflit.
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
foXaCe/studio!1641
No description provided.