Repository navigation
feat(core): forme compacte du KPI en panne et lien vers la page des données sur un 404 (#1222) - #1264
Merged
Merged
Conversation
… 404 (#1222) Un dsfr-data-kpi dont la source échoue garde sa place et sa hauteur : « — » à la place du chiffre, son libellé, une phrase courte par cause du barème. Jamais un nombre, ni 0 ni le chiffre du chargement précédent — y compris pour un bloc monté après la panne, qui lisait jusqu'ici le cache. Nouvel attribut source-page sur dsfr-data-source : la page publique des données, proposée en lien sur la seule cause « données introuvables ». Rien n'est déduit de base-url, dataset-id ou resource. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FrLwzPx5CG4VsPHEdo5ZVs
…es oracle et docs (#1222) - e2e/kpi-source-en-panne.spec.ts : 503, 404, hors ligne, avec et sans bandeau, hauteur de la tuile mesurée à 1280 et 375 px (ajouté à e2e-layout.yml) - deux contrôles de vérification des données : une tuile en panne n'affiche pas un nombre (ni 0, ni l'ancien chiffre), trois mutations constatées rouges - attendus de la troisième voix, ARCHITECTURE, lexique, changeset Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FrLwzPx5CG4VsPHEdo5ZVs
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #1222
Suite de #1203 / #1219 (0.44.0) : les deux éléments de la planche laissés de côté.
1. Forme compacte pour le KPI
Un
dsfr-data-kpidont la source échoue ne reçoit plus l'encart commun (renderSourceError), qui doublait la hauteur de la tuile. Il garde sa place et ses 140 px : « — » à la place du chiffre, son libellé (l'usager doit savoir quel chiffre manque), et une phrase courte.source-page· Détailserror-messagede la source remplace la phrase, comme dans l'encart complet.dsfr-data-source-status: la tuile n'a ni bouton, ni lien, ni détail, nirole— c'est la planche. Le bandeau porte tout, une fois (règleisSourceCoveredByBanner, inchangée).<details>replié à la suite de la phrase : zéro hauteur ajoutée tant qu'il est fermé, accessible au clavier (un attributtitlene l'est pas).dsfr-data-kpi-groupsont des KPI, dans les deux orientations). Graphique — jauge comprise —, liste, podium, display et repeat gardent l'encart complet : leur bloc a la hauteur d'un graphique.aria-hidden, le lecteur d'écran lit le libellé et la phrase ; la figure se nomme « Libellé: phrase » au lieu du dernier chiffre reçu ;role="status"sans bandeau ; gris--text-mention-grey.Défaut corrigé au passage
Un afficheur monté après la panne de sa source (onglet ouvert, bloc ajouté par script) lisait le cache — que
dispatchDataErrorne purge pas — et affichait l'ancien chiffre à côté de voisins en panne.SourceSubscriberMixinrelit maintenant le registre d'erreur à l'abonnement, comme il relit déjàisDataIdle. Vaut pour tous les afficheurs.2. Lien vers la source sur un 404
Ce que la bibliothèque connaît, et pourquoi rien n'est dérivé :
base-url+dataset-id…/explore/dataset/<id>/se construit, mais disparaît avec le jeu : mesuré sur data.economie.gouv.fr, API 404 et page 404. Le lien dérivé mènerait à une page morte, exactement dans le cas où il sert. Etbase-urlpeut être un proxy.resource(identifiant de ressource)GET /api/2/datasets/resources/<id>/./datasets/r/<id>existe mais télécharge le fichier, ce n'est pas une page.base-url=…/api/docs/<doc>/tables/<t>/recordsdataset-idurldatabox-sourceRetenu : (a) un attribut explicite, (c) rien sinon. Pas de (b). Nouvel attribut
source-pagesurdsfr-data-source. Le lien « Consulter la page de ces données » n'apparaît que pour la cause « données introuvables » (404, 410) : dans l'encart complet, dans la tuile compacte (il passe à la ligne quand la tuile est étroite), et dans le bandeau — qui le porte seul quand il couvre la source.safeSourcePagen'admet quehttp(s)ou une adresse relative, le schéma étant lu par l'analyseur d'URL (insensible àjava\nscript:). Refus → aucun lien, un avertissement console.rel="noopener", pas detarget. Liaison d'attribut Lit : pas d'injection de balisage.relay-url) : le lien est la valeur de l'attribut, jamaisattemptedUrl; un test le vérifie avec une requête réellement relayée.Changements visibles pour une page existante
dsfr-data-kpi__error(elle reste celle de l'erreur de configuration). Cibler.dsfr-data-status--source-error(commune depuis la 0.44.0) ou.dsfr-data-status--compact.aria-labelde la figure : « Libellé: Chiffre momentanément indisponible » au lieu de « Libellé: ».source-page, rien ne change sur un 404.Vérification des données (ADR-122)
Ces états ne sont pas des chiffres, mais un « 0 » ou l'ancien chiffre à la place du tiret en serait un. Deux contrôles déterministes dans
affichages:kpi-source-introuvable-pas-un-nombre: source en 404 dès le départ, KPIcountetsum→ « — » ; témoin sur le jeu servi.kpi-source-en-panne-apres-chargement: la source livre, puis répond 404 ; une tuile montée dès le départ et une tuile montée après la panne → « — ».Preuves de mutation, constatées rouges puis retirées (
tools/oracle/README.md) :formatValue(0)attendus.jsonrégénéré et commité (6 entrées).Tests
tests/kpi-source-indisponible.test.ts(68 tests) : phrase par cause, forme compacte par cause, jamais un nombre, bandeau, états voisins,safeSourcePage, lien par cause, relais.e2e/kpi-source-en-panne.spec.ts(9 tests, ajouté àe2e-layout.yml) : 503, 404, réseau coupé puis rétabli ; KPI seul et avec bandeau ; hauteur de la tuile mesurée à 1280 et 375 px.tests/source-errors-lisibles.test.ts(feat(core): erreurs de données lisibles — bandeau par source, message clair par bloc, relance (#1203) #1219) : assertions inchangées ; le bloc témoin de l'encart complet devient undsfr-data-podium, puisque le KPI a pris sa forme propre.tests/data/kpi-rendu-reference.json: seul le cas « erreur de source » est réécrit.npm run buildnpm run test:runnpm run typecheck:tests·npm run lint·npm run check:accentsnpm run check:specs-tables·npm run check:studio-couverturesource-pageexclu du Studio avec sa raison)npm run verifÉcarts à la planche
🤖 Generated with Claude Code
https://claude.ai/code/session_01FrLwzPx5CG4VsPHEdo5ZVs