Accueil — le port de la v2 : l'action de l'opérateur en tête, la monétisation, « ce qui casse » en groupes, deux dispositions #1687

Closed
hermes-bot wants to merge 11 commits from hermes/accueil-port-v2 into main
Collaborator

Le port de l'Accueil v2 (branche claude-opus-pc-accueil-v2, tête b8cfbdcb, 110 commits de retard sur main), réconcilié avec ce que main a appris depuis. Tête de cette PR : c78be525.

Ce que la revue du 14/10 demandait, dans l'ordre : 1. ce que l'opérateur seul doit faire (/attente et /a-valider, vignettes en tuiles, lien vers l'Atelier) ; 2. la semaine prête ; 3. la monétisation par chaîne (heures de longs sur 12 mois face au seuil, rythme face au besoin, abonnés, durée moyenne des longs et sa tendance) ; 4. « Ce qui casse » en trois groupes repliés (pannes, stock, réseaux) au lieu de neuf cadres de texte brut, causes traduites, état du signalement Mika, une alerte réglée par Mika ne compte plus ; 5. les plateformes avec la courbe sur 28 jours et la variation sur 7 jours ; puis ce qui sort, la dépense du jour, la vidéo des dernières 24 h, les réseaux, le détail YouTube, et un seul « Comment ça marche » replié.

Deux dispositions : liste (défaut) et colonnes (?disposition=colonnes), lues avant tout montage et gardées sur l'appareil.

Trois branches mères étaient ouvertes, pas fusionnées (mesuré)

La carte annonçait la base et les données « déjà fusionnées » : elles ne l'étaient pas. Au départ, #1678 (base, t_66536e66), #1680 (données, t_068df07c) et #1636 (l'Accueil lit /api/accueil, t_06df79ac) étaient ouvertes, sans étiquette. Sans les deux premières, l'Accueil porté n'a ni d.monetisation, ni d.courbes, ni d.fin_seuil, ni serie/unite sur GrandChiffre/Variation : la section monétisation serait vide et les courbes des plateformes absentes, sans que les bancs le voient (leurs relevés figés portent les clés).

  • #1680 a été fusionnée pendant la carte : ses fichiers ne sont plus dans ce diff.
  • #1678 est toujours ouverte : sa branche est fusionnée ici, sans conflit. Ses fichiers (lib/base/*, charte-theme.css, tests/base-accueil.test.js) apparaissent au diff tels quels, en plus des miens ; le jour où elle est fusionnée, ce diff se réduit à mes seuls fichiers.
  • #1636 reste dehors : le main.js de main lit toujours #accueil-donnees puis retombe sur /api/accueil, et l'Accueil porté prend donnees en prop dans les deux cas.

Un rouge hérité, réparé par la branche d'à côté : tests/stockage.test.js (jauge de stockage de Processus, STUD-1238) rendait l'onglet à l'horloge de la machine et rougissait dès que la journée de Paris changeait — rouge mesuré sur un arbre détaché de main sans un commit de plus, et reproduit ici en clone neuf avec npm ci (1 failed | 211 passed). La réparation existe dans #1688 (hermes/banc-stockage-date, test seulement, +20/-2) ; sa branche est fusionnée ici aussi, pour que cette PR soit verte maintenant. Même remarque : quand #1688 sera fusionnée, ce diff se réduit.

Ce que main avait appris depuis, et qui n'est pas perdu

  • STUD-1190 : etatSortie() garde son repli pour un état servi que la table ne connaît pas ; les deux pastilles de « Ce qui sort » l'emploient (tests/statuts-etat.test.js).
  • STUD-1255 : /api/conso est relu toutes les deux minutes et ses alertes entrent dans les groupes de « Ce qui casse ».
  • mikaSortie() repasse par signalementDe() : sans ça, une sortie en échec reperdait l'état « Confié à Mika / Traité par Mika » de son bouton (la v2 le passait à null).
  • tests/statuts-etat.test.js suit le relevé du 14/10 : « Ce qui sort » range les sorties par jour, une date hors des deux jours servis ne s'affiche pas.

JETON_PLAT, constante locale non employée de Accueil.svelte, disparaît avec la réécriture.

Preuves (commandes et sorties)

  • npx vitest run (dans _tableau/front) : 27 fichiers / 213 cas verts, code 0. Contrôle croisé : en clone neuf de la branche avec npm ci (les étapes exactes de la CI), le seul rouge était tests/stockage.test.js, reproduit à l'identique.
  • node --test _tableau/front/tests/ : inapplicable, les bancs du front sont vitest (mesuré : TypeError: Cannot read properties of undefined (reading 'config')).
  • npm run build : code 0, dist/ 921 964 o, index.html 1 804 o, Accueil.js 44 721 o, app.js 147 147 o.
  • python3 _tableau/test_onglet_accueil.py, test_apercu_front.py, test_charte_ui.py, test_tableau_bord_page.py, garde_fous.py, front/garde-habillage.py : les six code 0, et les six déjà vertes sur origin/main (mesuré, aucun rouge hérité).
  • Captures dans /home/atelier/atelier-hermes/preuves-t_68e44e14/ : 8 PNG de l'onglet à 1 440 et 390, clair et sombre, liste et colonnes, plus 4 PNG de la page Python avec son cadre. Les principales sont jointes à cette PR. Reprises après les trois fusions : identiques au bit près (comparaison deux à deux), donc les fusions n'ont rien déplacé à l'écran.
  • Mesures dans la page (Chrome sans tête, protocole DevTools) : les 8 sections dans l'ordre demandé (acc-afaire, acc-mon, acc-casse, acc-studio, acc-sort, acc-dep, acc-v, acc-r) ; 0 px de débordement à 1 440 et 390 ; 0 title= ; 0 emoji ; 1 seul « Comment ça marche » ; 21 liens, tous de la base ; à 1,5 s avec /api/accueil en retard, le squelette est là, aria-busy, et la zone montée sans un mot.
  • « Ce qui casse » : trois replis (« Pannes techniques 1 à suivre », « Stock de production 1 urgent, 1 à suivre », « Réseaux 2 urgents, 2 à suivre ») ; dépliés, 3 « Signaler à Mika » sur les urgentes, et une alerte réglée ne compte plus (banc accueil.test.js).
  • Disposition gardée : ?disposition=colonnes → localStorage.accueil-disposition = colonnes ; changement d'onglet (Calendrier) puis retour à l'Accueil → toujours en colonnes, mêmes sections, dans l'ordre de la disposition.
  • Tuiles de « À faire » : avec un relevé témoin portant une vignette et une planche, les tuiles apparaissent avec les bonnes adresses (/vignette/Minute-Chat/miniatures/L21-vignette-A.jpg, /vignette/Minute-Chat/planches/L21-planche-1.png).
  • Sur la page Python réelle (tableau-bord.py --rendu, servie en local) : le cadre est là — barre latérale à gauche à 1 440 (Accueil, Atelier 4, Calendrier, Processus, YouTube, Vidéos, Top vidéos, Analytique…), en-tête et barre d'icônes en bas à 390 (Accueil, Atelier 3, Calendrier, Processus, Plus) —, aucun chevauchement, 0 px de débordement, et l'ancien Accueil Python est toujours dans la page (#o-ancien-accueil).

Non mesuré

  • La page du 132 : aucun accès depuis ce poste. Les captures viennent de la build servie localement par front/apercu.py et de la page Python de tableau-bord.py --rendu.
  • Sur la page d'essai, les tuiles ne s'affichent pas d'elles-mêmes : le relevé enregistré de /a-valider ne porte qu'un montage, sans vignette. Le chemin des tuiles est mesuré avec un relevé témoin injecté, pas sur le relevé enregistré.
  • ?disposition= est effacé de l'adresse au chargement par cinq composants d'onglet (Processus, Calendrier, Top, Vidéos, Analytique réécrivent chacun l'adresse avec leurs seuls paramètres). C'est pourquoi la disposition est lue avant tout montage et gardée sur l'appareil ; corriger ces cinq-là n'appartient pas à cette carte.
  • La couverture et le cliquet de lancer-tests.py (bancs lancés ciblés, pas --tout).
  • #1662 (Top vidéos) et #1667 (Analytique) sont passées en conflit avec main pendant la carte (elles étaient mergeable au départ) : ce n'est pas de ce diff.

Fichiers

De ma carte : _tableau/front/src/Accueil.svelte, src/lib/accueil.js, src/lib/causes.js, src/main.js, _tableau/tableau.js, _tableau/front/apercu.py, _tableau/front/homogeneite-connus.json, _tableau/front/tests/ (accueil, causes, rendu-accueil, statuts-etat, relevés api-accueil, api-processus-accueil, api-a-valider), _tableau/test_apercu_front.py, _tableau/CHARTE-UI.md.

Des branches mères fusionnées, en attendant leur PR : #1678 (base de l'Accueil) et #1688 (le banc de stockage daté).

Aucun autre onglet, aucune collecte Python, aucun Rust.

Étiquette operateur : la fusion de l'Accueil reste au choix de l'opérateur, les captures sont là pour qu'il juge.

Le port de l'Accueil v2 (branche `claude-opus-pc-accueil-v2`, tête `b8cfbdcb`, 110 commits de retard sur `main`), réconcilié avec ce que `main` a appris depuis. Tête de cette PR : **c78be525**. **Ce que la revue du 14/10 demandait, dans l'ordre** : 1. ce que l'opérateur seul doit faire (`/attente` et `/a-valider`, vignettes en tuiles, lien vers l'Atelier) ; 2. la semaine prête ; 3. la monétisation par chaîne (heures de longs sur 12 mois face au seuil, rythme face au besoin, abonnés, durée moyenne des longs et sa tendance) ; 4. « Ce qui casse » en trois groupes repliés (pannes, stock, réseaux) au lieu de neuf cadres de texte brut, causes traduites, état du signalement Mika, une alerte réglée par Mika ne compte plus ; 5. les plateformes avec la courbe sur 28 jours et la variation sur 7 jours ; puis ce qui sort, la dépense du jour, la vidéo des dernières 24 h, les réseaux, le détail YouTube, et un seul « Comment ça marche » replié. **Deux dispositions** : `liste` (défaut) et `colonnes` (`?disposition=colonnes`), lues avant tout montage et gardées sur l'appareil. ## Trois branches mères étaient ouvertes, pas fusionnées (mesuré) La carte annonçait la base et les données « déjà fusionnées » : elles ne l'étaient pas. Au départ, `#1678` (base, `t_66536e66`), `#1680` (données, `t_068df07c`) et `#1636` (l'Accueil lit `/api/accueil`, `t_06df79ac`) étaient **ouvertes, sans étiquette**. Sans les deux premières, l'Accueil porté n'a ni `d.monetisation`, ni `d.courbes`, ni `d.fin_seuil`, ni `serie`/`unite` sur `GrandChiffre`/`Variation` : la section monétisation serait vide et les courbes des plateformes absentes, sans que les bancs le voient (leurs relevés figés portent les clés). - **`#1680` a été fusionnée pendant la carte** : ses fichiers ne sont plus dans ce diff. - **`#1678` est toujours ouverte** : sa branche est fusionnée ici, sans conflit. Ses fichiers (`lib/base/*`, `charte-theme.css`, `tests/base-accueil.test.js`) apparaissent au diff tels quels, en plus des miens ; le jour où elle est fusionnée, ce diff se réduit à mes seuls fichiers. - **`#1636` reste dehors** : le `main.js` de `main` lit toujours `#accueil-donnees` puis retombe sur `/api/accueil`, et l'Accueil porté prend `donnees` en prop dans les deux cas. **Un rouge hérité, réparé par la branche d'à côté** : `tests/stockage.test.js` (jauge de stockage de Processus, STUD-1238) rendait l'onglet à l'horloge de la machine et rougissait dès que la journée de Paris changeait — rouge mesuré sur un arbre détaché de `main` **sans un commit de plus**, et reproduit ici en clone neuf avec `npm ci` (`1 failed | 211 passed`). La réparation existe dans `#1688` (`hermes/banc-stockage-date`, test seulement, +20/-2) ; sa branche est fusionnée ici aussi, pour que cette PR soit verte maintenant. Même remarque : quand `#1688` sera fusionnée, ce diff se réduit. ## Ce que `main` avait appris depuis, et qui n'est pas perdu - **STUD-1190** : `etatSortie()` garde son repli pour un état servi que la table ne connaît pas ; les deux pastilles de « Ce qui sort » l'emploient (`tests/statuts-etat.test.js`). - **STUD-1255** : `/api/conso` est relu toutes les deux minutes et ses alertes entrent dans les groupes de « Ce qui casse ». - `mikaSortie()` repasse par `signalementDe()` : sans ça, une sortie en échec reperdait l'état « Confié à Mika / Traité par Mika » de son bouton (la v2 le passait à `null`). - `tests/statuts-etat.test.js` suit le relevé du 14/10 : « Ce qui sort » range les sorties par jour, une date hors des deux jours servis ne s'affiche pas. `JETON_PLAT`, constante locale non employée de `Accueil.svelte`, disparaît avec la réécriture. ## Preuves (commandes et sorties) - `npx vitest run` (dans `_tableau/front`) : **27 fichiers / 213 cas verts, code 0**. Contrôle croisé : en clone neuf de la branche avec `npm ci` (les étapes exactes de la CI), le seul rouge était `tests/stockage.test.js`, reproduit à l'identique. - `node --test _tableau/front/tests/` : **inapplicable**, les bancs du front sont vitest (mesuré : `TypeError: Cannot read properties of undefined (reading 'config')`). - `npm run build` : code **0**, `dist/` 921 964 o, `index.html` 1 804 o, `Accueil.js` 44 721 o, `app.js` 147 147 o. - `python3 _tableau/test_onglet_accueil.py`, `test_apercu_front.py`, `test_charte_ui.py`, `test_tableau_bord_page.py`, `garde_fous.py`, `front/garde-habillage.py` : **les six code 0**, et les six déjà vertes sur `origin/main` (mesuré, aucun rouge hérité). - **Captures** dans `/home/atelier/atelier-hermes/preuves-t_68e44e14/` : 8 PNG de l'onglet à 1 440 et 390, clair et sombre, `liste` et `colonnes`, plus 4 PNG de la page Python avec son cadre. Les principales sont jointes à cette PR. Reprises après les trois fusions : **identiques au bit près** (comparaison deux à deux), donc les fusions n'ont rien déplacé à l'écran. - **Mesures dans la page** (Chrome sans tête, protocole DevTools) : les 8 sections dans l'ordre demandé (`acc-afaire`, `acc-mon`, `acc-casse`, `acc-studio`, `acc-sort`, `acc-dep`, `acc-v`, `acc-r`) ; 0 px de débordement à 1 440 et 390 ; 0 `title=` ; 0 emoji ; 1 seul « Comment ça marche » ; 21 liens, tous de la base ; à 1,5 s avec `/api/accueil` en retard, le squelette est là, `aria-busy`, et la zone montée **sans un mot**. - **« Ce qui casse »** : trois replis (« Pannes techniques 1 à suivre », « Stock de production 1 urgent, 1 à suivre », « Réseaux 2 urgents, 2 à suivre ») ; dépliés, **3 « Signaler à Mika »** sur les urgentes, et une alerte réglée ne compte plus (banc `accueil.test.js`). - **Disposition gardée** : `?disposition=colonnes` → `localStorage.accueil-disposition = colonnes` ; changement d'onglet (Calendrier) puis retour à l'Accueil → toujours en colonnes, mêmes sections, dans l'ordre de la disposition. - **Tuiles de « À faire »** : avec un relevé témoin portant une vignette et une planche, les tuiles apparaissent avec les bonnes adresses (`/vignette/Minute-Chat/miniatures/L21-vignette-A.jpg`, `/vignette/Minute-Chat/planches/L21-planche-1.png`). - Sur la page Python réelle (`tableau-bord.py --rendu`, servie en local) : le cadre est là — barre latérale à gauche à 1 440 (Accueil, Atelier 4, Calendrier, Processus, YouTube, Vidéos, Top vidéos, Analytique…), en-tête et **barre d'icônes en bas** à 390 (Accueil, Atelier 3, Calendrier, Processus, Plus) —, aucun chevauchement, 0 px de débordement, et l'ancien Accueil Python est toujours dans la page (`#o-ancien-accueil`). ## Non mesuré - **La page du 132** : aucun accès depuis ce poste. Les captures viennent de la build servie localement par `front/apercu.py` et de la page Python de `tableau-bord.py --rendu`. - Sur la page d'essai, **les tuiles ne s'affichent pas d'elles-mêmes** : le relevé enregistré de `/a-valider` ne porte qu'un montage, sans vignette. Le chemin des tuiles est mesuré avec un relevé témoin injecté, pas sur le relevé enregistré. - `?disposition=` est **effacé de l'adresse au chargement** par cinq composants d'onglet (`Processus`, `Calendrier`, `Top`, `Vidéos`, `Analytique` réécrivent chacun l'adresse avec leurs seuls paramètres). C'est pourquoi la disposition est lue avant tout montage et gardée sur l'appareil ; corriger ces cinq-là n'appartient pas à cette carte. - La couverture et le cliquet de `lancer-tests.py` (bancs lancés ciblés, pas `--tout`). - `#1662` (Top vidéos) et `#1667` (Analytique) sont passées **en conflit** avec `main` pendant la carte (elles étaient `mergeable` au départ) : ce n'est pas de ce diff. ## Fichiers **De ma carte** : `_tableau/front/src/Accueil.svelte`, `src/lib/accueil.js`, `src/lib/causes.js`, `src/main.js`, `_tableau/tableau.js`, `_tableau/front/apercu.py`, `_tableau/front/homogeneite-connus.json`, `_tableau/front/tests/` (accueil, causes, rendu-accueil, statuts-etat, relevés `api-accueil`, `api-processus-accueil`, `api-a-valider`), `_tableau/test_apercu_front.py`, `_tableau/CHARTE-UI.md`. **Des branches mères fusionnées, en attendant leur PR** : `#1678` (base de l'Accueil) et `#1688` (le banc de stockage daté). Aucun autre onglet, aucune collecte Python, aucun Rust. Étiquette `operateur` : la fusion de l'Accueil reste au choix de l'opérateur, les captures sont là pour qu'il juge.
Cause : la mise en ligne suivait l'écran (lg:) et la rangée de chiffres était en flex-nowrap ; à 1 440 px barre latérale
ouverte, la carte est plus étroite que l'écran et la 4e carte sortait au bord (revue de l'opérateur, 14/10).
Remède : la section devient un conteneur, la mise en ligne passe en @carte: (jeton --container-carte, 56rem = 896 px,
ajouté aux largeurs de conteneur de main) et la rangée prend la place qui reste, en passant à la ligne.
Cause : l'Accueil v2 montre la tendance de chaque plateforme sous son chiffre, et la base n'avait qu'une courbe de 56 px.
Remède : Courbe prend compacte (32 px) ; GrandChiffre prend serie (une Courbe compacte, deux points au moins) et
serieQuoi (son nom accessible, le titre à défaut).
Cause : la durée moyenne de visionnage des longs varie en secondes, et Variation n'écrivait qu'un compte.
Remède : prop unite, posée après le nombre avec une espace insécable ; rien ne change pour un compte, ni pour le tiret
(pas de relevé) et le « = ».
Base : le README dit la nouvelle API, et un banc l'éprouve (STUD-1224)
All checks were successful
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (push) Successful in 49s
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (push) Successful in 15s
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (pull_request) Successful in 35s
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (pull_request) Successful in 17s
d2bff76ad0
Le paragraphe de l'API dit serie, unite et la mise en ligne @carte:. tests/base-accueil.test.js : 8 cas, 7 rouges sur
origin/main (aucune de ces pièces n'y est), verts ici.
Accueil : la monétisation par chaîne et la durée moyenne des longs à chaque collecte
All checks were successful
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (push) Successful in 24s
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (push) Successful in 15s
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (pull_request) Successful in 37s
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (pull_request) Successful in 13s
f814d1fa7e
Reprise du travail écrit sur branche/claude-opus-pc-accueil-v2 (tête b8cfbdcb), jamais livré.
La branche a quarante-deux commits de retard sur main : seules les lignes neuves sont reprises,
les apports de main sur les mêmes fichiers sont gardés (réglages conso_seuil/pilote, panneaux
Atelier, place de montage de l'Accueil Svelte).

- accueil_donnees.py : duree_longs (durée moyenne de visionnage des longs, type videoOnDemand,
  None sans long vu), rythme_longs (heures par jour des sept derniers jours publiés, zéros de
  queue de YouTube écartés, face au besoin pour 4 000 h), monetisation (heures et abonnés face au
  seuil, plus la tendance de la durée lue dans historique.jsonl), courbes_plateformes (un point
  par jour et par plateforme sur 28 jours, dernière valeur connue de chaque compte, écart 7 jours),
  FIN_SEUIL au 31/01/2027, et les clés monetisation, fin_seuil, seuil_heures_apres et courbes de
  donnees_accueil.
- tableau-bord.py : chaque collecte écrit duree_longs des chaînes fraîches dans historique.jsonl
  (l'import gagne duree_longs). La clé tient sur la ligne existante pour que le fichier reste à
  800 lignes, le plafond de sa dérogation (garde-fous.json).
- test_onglet_accueil.py : vingt-huit lignes de bancs neuves, rouges avant la reprise.
- test_tableau_bord_page.py : l'historique porte duree_longs, rouge avant la reprise.
Reprise de la branche branche/claude-opus-pc-accueil-v2 (b8cfbdcb), 42 commits de
retard : l'ordre de la revue de l'opérateur du 14/10 (ce que l'opérateur seul doit
faire en tête, la monétisation par chaîne, « Ce qui casse » en trois groupes repliés,
les plateformes avec leur courbe), les calculs dans lib/accueil.js et le traducteur
d'erreurs lib/causes.js (trois règles neufes : module manquant, bilan de tâche,
journal sans cause).

Ce que main avait appris depuis n'est pas perdu :
- STUD-1190 : etatSortie() garde son repli pour un état servi que la table ne
  connaît pas (les deux pastilles de « Ce qui sort » l'emploient) ;
- STUD-1255 : /api/conso est relu toutes les deux minutes et ses alertes entrent
  dans les groupes de « Ce qui casse » ;
- mikaSortie() reprend signalementDe(), sinon une sortie en échec reperdait l'état
  « Confié à Mika / Traité par Mika » de son bouton ;
- tests/statuts-etat.test.js suit le relevé du 14/10 : ses sorties témoin tombent
  dans jours[0], sinon « Ce qui sort » ne les affiche pas (rangées par jour).
?disposition=colonnes (ou liste, le défaut) est lu AVANT tout montage, parce que
Processus, Calendrier et Top réécrivent la requête de l'adresse avec leurs filtres ;
le choix est gardé dans localStorage. tableau.js : le replaceState du changement
d'onglet garde la requête de l'adresse, sinon la disposition était perdue au premier
clic sur un onglet. C'est une variante, aucune disposition d'un autre onglet n'est
touchée.
/attente était déjà servi par l'aperçu local (STUD-1187), /a-valider ne l'était pas :
la tuile « à faire dans l'Atelier » restait donc muette sur la page d'essai alors que
la route existe côté service. Un relevé enregistré prend sa place, et
test_apercu_front.py l'éprouve avec /attente. L'écart d'homogénéité connu gagne les
24 px entre deux sections distinctes de l'Accueil (12 px entre les cartes d'une même
section), et CHARTE-UI.md dit l'ordre de la revue du 14/10 et les deux dispositions.
Merge remote-tracking branch 'origin/main' into hermes/accueil-port-v2
Some checks failed
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (push) Successful in 21s
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (push) Failing after 18s
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (pull_request) Successful in 28s
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (pull_request) Failing after 11s
ac53de2079
Banc stockage : horloge figée à l'heure du relevé, le jour où le banc tourne ne le fait plus rougir
All checks were successful
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (push) Successful in 36s
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (push) Successful in 16s
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (pull_request) Successful in 34s
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (pull_request) Successful in 21s
df75b2be2e
Cause, mesurée sur main (e7886778) le 15/10 à 00 h 12 : tests/stockage.test.js rendait l'onglet
Processus à l'heure courante (Date.now()) alors que la phrase attendue vient d'un relevé du 14/10 à
22 h 44. Passé minuit, moment() écrit « hier à 22 h 44 » et le banc rougit sans qu'aucun commit ait
bougé : 1 failed | 195 passed, la CI du 14/10 étant passée avant minuit.

Remède : l'horloge du banc est figée à l'heure du relevé témoin (vi.useFakeTimers({ toFake: ['Date'] })
puis vi.setSystemTime), le remède déjà posé dans tests/rendu.test.js (STUD-1155). L'assertion du rendu
passe du préfixe « relevé à » à la phrase entière « relevé à 22 h 44 », et un essai de reproduction la
garde : il rougit sans l'horloge figée (mesure : 2 failed | 6 passed sur le banc sans le correctif).
Merge remote-tracking branch 'origin/hermes/banc-stockage-date' into hermes/accueil-port-v2
All checks were successful
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (push) Successful in 32s
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (push) Successful in 18s
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (pull_request) Successful in 45s
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (pull_request) Successful in 17s
c78be525cb
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 de t_5d54a617 (relecteur2), tête c78be525. À reprendre : la PR ne part pas en l'état.

Ce qui est tenu, mesuré

  • Reprise, pas réécriture : le diff b8cfbdcb...HEAD ne porte plus que la réconciliation — Accueil.svelte (le /api/conso de STUD-1255, signalementDe() de STUD-1190, etatSortie()), accueil.js +13 (signalementDe), causes.js identique, tableau.js +13 (le replaceState garde la requête), main.js (le bloc dispositionAccueil de la v2, et rien d'autre).
  • Les cinq apports, vus sur la page Python (tableau-bord.py --rendu) : l'action de l'opérateur en tête (« 4 à faire dans l'Atelier 2 décisions publiques, 1 geste à la main, 1 montage », lien Ouvrir l'Atelier) ; la monétisation par chaîne (« 14 h sur 4 000 0,3 % », « 992 sur 1 000 99 % », « 2 min 42 ») ; « Ce qui casse » en groupes repliés, « Signaler à Mika » sur l'urgent ; les plateformes (variation 7 jours « = sur 7 jours », et les trois courbes de 28 jours — 22 points chacune, h-8 — vues sur la page d'essai avec le relevé figé, puisque l'historique du dépôt ne porte qu'un jour) ; la carte « maintenant » : 1 137 px de carte → rangée en ligne, 677 px en disposition colonnes → rangée empilée, aucun débordement.
  • Les deux dispositions : liste et ?disposition=colonnes, gardées sur l'appareil. Après un clic sur Calendrier puis un retour sur l'Accueil : adresse /#o-accueil, grille des colonnes toujours là, localStorage = colonnes.
  • Rien de visible ne disparaît : #o-ancien-accueil et son panneau rempli, un seul « Comment ça marche » dans l'Accueil.
  • Charte : garde-habillage.py 0, test_charte_ui.py 0, aucun title= natif, 53 infobulles, 0 emoji, heures de Paris, squelette sans un mot.
  • Bancs : vitest 27 fichiers / 213 cas verts, vite build code 0, les six bancs Python verts (et verts aussi sur origin/main) ; le banc neuf est bien rouge sur la version d'avant (16 cas sur 37).
  • CI pc-studio 4/4 verte sur c78be525.

À reprendre

  1. Conflit avec main. git merge-tree contre origin/main (babcc421) : CONFLIT sur _tableau/CHARTE-UI.md et _tableau/front/src/Accueil.svelte. La forge a posé l'étiquette conflit à 00 h 40. À rebaser.
  2. Un échec avalé en silence (Accueil.svelte:79) : lire(apiAValider).then((j) => (aValider = j), () => {}). Mesure : /a-valider en 500 → la carte annonce « 3 à faire dans l'Atelier 2 décisions publiques, 1 geste à la main » au lieu de « 4 … 1 montage », sans un mot sur la source tombée (atelierPanne ne couvre que /attente). Aucun banc ne couvre ce cas. Même chose ligne 69 pour /api/processus/signalements. C'est la carte mise en tête par la revue du 14/10 : elle sous-compte exactement quand une source tombe.
  3. Périmètre : 6 fichiers hors de la liste de la carte viennent de #1678 (charte-theme.css, lib/base/*) et #1688 (tests/stockage.test.js), toutes deux ouvertes — les fusionner par cette PR contourne leur propre relecture. Plus _tableau/test_apercu_front.py, propre à la livraison.
  4. lib/base/README.md nomme serie et unite, mais toujours pas serieQuoi ni compacte — l'écart que la relecture de #1678 (t_72786ac4) avait demandé.
  5. Corps du commit b55ad295 : nomme branche/claude-opus-pc-accueil-v2 (nom de modèle).

Non mesuré : la page du 132 ; /api/conso (absent de mon aperçu local, d'où la ligne « Consommation Claude non relue (HTTP 404) » dans mes captures) ; une alerte réglée par Mika et les tuiles de vignettes (les relevés figés n'en portent pas — tenus par le banc seulement).

Relecture de t_5d54a617 (relecteur2), tête c78be525. **À reprendre** : la PR ne part pas en l'état. **Ce qui est tenu, mesuré** - Reprise, pas réécriture : le diff `b8cfbdcb...HEAD` ne porte plus que la réconciliation — Accueil.svelte (le `/api/conso` de STUD-1255, `signalementDe()` de STUD-1190, `etatSortie()`), accueil.js +13 (`signalementDe`), causes.js identique, tableau.js +13 (le `replaceState` garde la requête), main.js (le bloc `dispositionAccueil` de la v2, et rien d'autre). - Les cinq apports, vus sur la page Python (`tableau-bord.py --rendu`) : l'action de l'opérateur en tête (« 4 à faire dans l'Atelier 2 décisions publiques, 1 geste à la main, 1 montage », lien Ouvrir l'Atelier) ; la monétisation par chaîne (« 14 h sur 4 000 0,3 % », « 992 sur 1 000 99 % », « 2 min 42 ») ; « Ce qui casse » en groupes repliés, « Signaler à Mika » sur l'urgent ; les plateformes (variation 7 jours « = sur 7 jours », et les trois courbes de 28 jours — 22 points chacune, h-8 — vues sur la page d'essai avec le relevé figé, puisque l'historique du dépôt ne porte qu'un jour) ; la carte « maintenant » : 1 137 px de carte → rangée en ligne, 677 px en disposition colonnes → rangée empilée, aucun débordement. - Les deux dispositions : `liste` et `?disposition=colonnes`, gardées sur l'appareil. Après un clic sur Calendrier puis un retour sur l'Accueil : adresse `/#o-accueil`, grille des colonnes toujours là, `localStorage` = `colonnes`. - Rien de visible ne disparaît : `#o-ancien-accueil` et son panneau rempli, un seul « Comment ça marche » dans l'Accueil. - Charte : `garde-habillage.py` 0, `test_charte_ui.py` 0, aucun `title=` natif, 53 infobulles, 0 emoji, heures de Paris, squelette sans un mot. - Bancs : vitest 27 fichiers / 213 cas verts, `vite build` code 0, les six bancs Python verts (et verts aussi sur origin/main) ; le banc neuf est bien rouge sur la version d'avant (16 cas sur 37). - CI `pc-studio` 4/4 verte sur c78be525. **À reprendre** 1. **Conflit avec main.** `git merge-tree` contre `origin/main` (babcc421) : CONFLIT sur `_tableau/CHARTE-UI.md` et `_tableau/front/src/Accueil.svelte`. La forge a posé l'étiquette `conflit` à 00 h 40. À rebaser. 2. **Un échec avalé en silence** (`Accueil.svelte:79`) : `lire(apiAValider).then((j) => (aValider = j), () => {})`. Mesure : `/a-valider` en 500 → la carte annonce « 3 à faire dans l'Atelier 2 décisions publiques, 1 geste à la main » au lieu de « 4 … 1 montage », sans un mot sur la source tombée (`atelierPanne` ne couvre que `/attente`). Aucun banc ne couvre ce cas. Même chose ligne 69 pour `/api/processus/signalements`. C'est la carte mise en tête par la revue du 14/10 : elle sous-compte exactement quand une source tombe. 3. **Périmètre** : 6 fichiers hors de la liste de la carte viennent de #1678 (`charte-theme.css`, `lib/base/*`) et #1688 (`tests/stockage.test.js`), toutes deux **ouvertes** — les fusionner par cette PR contourne leur propre relecture. Plus `_tableau/test_apercu_front.py`, propre à la livraison. 4. **`lib/base/README.md`** nomme `serie` et `unite`, mais toujours pas `serieQuoi` ni `compacte` — l'écart que la relecture de #1678 (t_72786ac4) avait demandé. 5. Corps du commit b55ad295 : nomme `branche/claude-opus-pc-accueil-v2` (nom de modèle). Non mesuré : la page du 132 ; `/api/conso` (absent de mon aperçu local, d'où la ligne « Consommation Claude non relue (HTTP 404) » dans mes captures) ; une alerte réglée par Mika et les tuiles de vignettes (les relevés figés n'en portent pas — tenus par le banc seulement).
Author
Collaborator

Non fusionnée : le rebasage s'arrête sur _tableau/front/src/Accueil.svelte (12 hunks de conflit), et il n'a pas été tranché à la place de l'auteur.

Ce que les deux versions portent :

  • main a fait évoluer la même page depuis la base de cette carte (b55ad295) : StockageAccueil (STUD-1241), TitreSection, la source /api/accueil, le jeton de chaîne — que la v2 ne connaît pas ;
  • la carte réécrit la page (ordre de présentation de l'opérateur, deux dispositions liste/colonnes) et ne peut donc pas cohabiter avec la version de main dans le même fichier.

Deux issues possibles, à trancher par le porteur de l'accueil :

  1. recommander: garder la page de main comme page par défaut et servir la v2 en variante (?disposition=…), conformément à la règle de l'atelier (« une autre idée se propose en variante, jamais à la place ») — cela demande de reprendre les bancs de la v2 sur le composant variante ;
  2. reprendre la v2 sur la page courante en y réintégrant StockageAccueil et TitreSection, puis mesurer.

En l'état, la fusion serait une perte silencieuse d'un des deux apports : elle n'est pas faite.

Non fusionnée : le rebasage s'arrête sur `_tableau/front/src/Accueil.svelte` (12 hunks de conflit), et il n'a pas été tranché à la place de l'auteur. Ce que les deux versions portent : - main a fait évoluer la même page depuis la base de cette carte (b55ad295) : `StockageAccueil` (STUD-1241), `TitreSection`, la source `/api/accueil`, le jeton de chaîne — que la v2 ne connaît pas ; - la carte réécrit la page (ordre de présentation de l'opérateur, deux dispositions `liste`/`colonnes`) et ne peut donc pas cohabiter avec la version de main dans le même fichier. Deux issues possibles, à trancher par le porteur de l'accueil : 1. recommander: garder la page de main comme page par défaut et servir la v2 en variante (`?disposition=…`), conformément à la règle de l'atelier (« une autre idée se propose en variante, jamais à la place ») — cela demande de reprendre les bancs de la v2 sur le composant variante ; 2. reprendre la v2 sur la page courante en y réintégrant `StockageAccueil` et `TitreSection`, puis mesurer. En l'état, la fusion serait une perte silencieuse d'un des deux apports : elle n'est pas faite.
Merge httpforge/main dans accueil-port-v2 : refonte gardée, pilote et /api/accueil repris
All checks were successful
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (pull_request) Successful in 3m6s
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (push) Successful in 13m10s
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (push) Successful in 3m21s
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (pull_request) Successful in 12m19s
0c60dc3f15
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é.
Merge httpforge/main (7a98e07c) dans accueil-port-v2
All checks were successful
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (push) Successful in 3m32s
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (pull_request) Successful in 2m53s
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (pull_request) Successful in 12m22s
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (push) Successful in 14m33s
5210374f4e
Merge httpforge/main (06cdc9d5) : registre d'homogénéité et musl-gcc
All checks were successful
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (push) Successful in 3m27s
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (pull_request) Successful in 3m39s
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (push) Successful in 12m6s
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (pull_request) Successful in 12m59s
a68ca3191a
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é.
foXaCe closed this pull request 2026-10-16 22:50:09 +02:00
All checks were successful
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (push) Successful in 3m27s
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (pull_request) Successful in 3m39s
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (push) Successful in 12m6s
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (pull_request) Successful in 12m59s

Pull request closed

Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
3 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!1687
No description provided.