Front Svelte — Analytique : lire /api/analytique, plus de données embarquées (t_be254555) #1667
Loading…
Reference in a new issue
No description provided.
Delete branch "hermes/front-analytique-api"
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?
Carte t_be254555 (chantier t_abdd8136 : tableau du 132, 100 % Svelte et 100 % Rust).
Ce que la carte change.
Analytique.svelterecevait ses chiffres par l'attributdata-donneesdu conteneur#analytique-app, écrits par Python (analytique_donnees.onglet_analytique) : la page portait le calcul, et l'onglet n'était donc ni 100 % Svelte ni 100 % Rust alors que la routeGET /api/analytiqueest livrée (t_39612182, PR 1651).main.jsmonte le composant sur/api/analytique(la page n'écrit plus rien dans le conteneur) ; la page d'essai/processus/?analytiquepasse par la même route.lib/analytique.jsgagnelire(api, fetch): la raison de la route passe avant le statut, la session expirée se dit à part.Analytique.sveltelit la route au montage, dit la raison d'un échec à l'écran et montre le squelette de la charte pendant l'attente — jamais une phrase, jamais un « aucune chaîne » qui ferait passer une absence de relevé pour un studio vide.p-analytiquedetableau-bord.pyne pose plus que la place de montage (#analytique-app) et le squelette : sans cela le panneau garderait un contenu calculé par Python (data-donnees), mesurécontenu:Analytique(manque non déclaré, CI rouge)./api/analytiqueentre dans le relaisserveur_processus.py: le service Rust n'écoute que sur la boucle locale du 132, sans ce relais la page du 132 afficherait une panne. Même motif que/api/accueil(t_c833b356) et/api/top(t_87c3e84d).test_100_svelte_rust.pyne déclare pluspage:Analytiqueen manque : la mesure du jour donne l'onglet 100 % (Svelte / socle //api/analytiquerust).analytique_donnees.pyn'est pas touché : il reste en service jusqu'au lot 3.Preuves mesurées.
md5sum) ; 5 fiches, 45 boutons, 8 tracés, 0 px de débordement, aucune erreur JS.#analytique-appet la même fixture : l'ancien lit le JSON que Python écrivait dans la page, le nouveau lit la route/api/analytique(corps identique au doré deanalytique_donnees.donnees_analytique, parité mesurée par t_39612182)./api/analytique) : « Onglet Analytique injoignable (HTTP 404). Recharger la page. » — aucune donnée inventée.npx vitest run: 26 fichiers / 197 cas verts (donttests/analytique-api.test.js, 8 cas neufs).npx vite build: code 0,dist/index.htmlprésent, 916 Ko, 13 fichiers JS > 5 Ko.python3 _tableau/lancer-tests.py --tout --sans-couverture: 160 bancs verts, code 0.garde_fous.py: rien à redire./home/atelier/atelier-hermes/captures-t_be254555/(avant/après conteneur, page d'essai, panne, 4 configurations).Non mesuré. Le 132 lui-même (aucun accès depuis cette carte) : la route y arrive par le déploiement automatique après fusion, et le relais est éprouvé par
test_serveur_processus.pysur un faux service. La couverture (bancs lancés avec--sans-couverture).Écart au mandat, dit. La carte demandait « aucun Python touché » : quatre fichiers Python sont modifiés (
tableau-bord.py,serveur_processus.py, et les deux bancs qui les suivent). Aucun ne touche au calcul des données —analytique_donnees.pyetonglet_analytique.pysont intacts — mais sans eux l'onglet ne peut pas être mesuré 100 % (le panneau doit porter la place de montage) ni fonctionner sur le 132 (le relais doit porter la route). Même motif que la carte Top vidéos (t_87c3e84d).Captures (worktree de la carte t_be254555, Chrome sans tête)
apres-conteneur-sombre-1440.png
avant-conteneur-sombre-1440.png
apres-conteneur-clair-390.png
essai-sombre-1440.png
panne-sombre-1440.png
Avant et après tournent sur le même conteneur
#analytique-appet la même fixture (tests/api-analytique.json) : l'ancienne build lit le JSON écrit par Python dans la page, la nouvelle lit/api/analytique. Texte identique au caractère près (même sha256) et PNG identiques au bit près (md5sum) en bureau 1440 et téléphone 390, sombre et clair. La dernière capture est la route injoignable (aperçu sans/api/analytique).Relecture faite (carte t_be3ced67). Le fond est vérifié, mesuré sur les deux vraies pages rendues par
tableau-bord.py --renduet le même JSON des deux côtés :npx vitest run26 fichiers / 197 cas verts ;npx vite buildcode 0 (dist 916 Ko, 13 JS > 5 Ko) ;lancer-tests.py --tout159 bancs verts ; CI pc-studio 4/4 verte sur7b2a5004; fusion simulée sans conflit.Pourquoi l'étiquette
operateuret nonrelu: la PR touche quatre fichiers Python (tableau-bord.py: la place de montage dans le panneau ;serveur_processus.py:/api/analytiquedans le relais du 132 ;test_serveur_processus.py,test_100_svelte_rust.py) alors que le mandat disait « aucun fichier Python modifié ». Le calcul des données reste intact (analytique_donnees.py,onglet_analytique.pynon touchés). Sans les deux fichiers de production, l'onglet ne peut être ni mesuré 100 % par le banc du chantier, ni fonctionner sur le 132 : c'est à l'opérateur de trancher cet écart, donc seul l'opérateur fusionnera.Note, mesurée : le repli en échec de l'onglet (
window.analytiqueEchec, PR #1655) n'est pas encore dansmainet ne porte aucune étiquette — cette PR ne le retire pas, elle ne le fournit pas non plus.Bancs et captures :
_tableau/test_100_svelte_rust.py→Analytique Svelte socle /api/analytique — 100 %; preuves sur/home/atelier/atelier-hermes/relecture-t_be3ced67/.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é.7b2a5004b39c45fb40c0fusion-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é.bab76be87a46a6176af1