Repository navigation
feat(normalize): compute — tableau mixte rendu vide, colonnes vides averties (suite de #1258, #1237) - #1262
Merged
Conversation
…dans compute (#1237) Arbitrages du propriétaire sur la PR #1258. `array_min` / `array_max` rendent `null` sur un tableau MIXTE — des éléments numériques et non numériques (`950 ; 1050 ; vers 1970`) — au lieu de basculer en ordre de texte, qui répondait « 1050 ». La donnée se nettoie par attributs, vu sur le vrai composant : deux normalize chaînés, `compute="d = replace(join(d, ';'), 'vers ', '')"` puis `split="d:;"`, pour une cellule collée comme pour un vrai tableau ; `replace-fields` élément par élément sur un vrai tableau. Dans un seul normalize, `replace` compare la cellule entière et le `replace()` de compute passe après `split`. Deux avertissements console, une fois par composant et par cause, relayés par le journal du volet Diagnostic : le tableau mixte (champ + recette), et la colonne entièrement vide parce que le champ ne porte aucun tableau (champ + `split` à poser). Silence quand la colonne est réellement vide ou qu'une partie des lignes porte un tableau. Oracles TS et Python alignés (mixte → null, étape `replace-text`), contrôle `compute-element-sans-split-avertit` ajouté, les deux autres étendus (mixte → vide ; nettoyé → 950 ; silences). Dix mutations vues rouges. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FrLwzPx5CG4VsPHEdo5ZVs
…97 observations, 514 à trois voix (#1237) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FrLwzPx5CG4VsPHEdo5ZVs
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.
Suite de #1258 (mergée pendant que ces arbitrages étaient appliqués) : les deux points tranchés par le propriétaire sur
array_min/array_maxet sur les colonnes calculées vides. Même branche, un commit de fond.Refs #1237
Ce qui change
1. Un tableau mixte rend une valeur vide. Sur
950 ; 1050 ; vers 1970— des éléments numériques et non numériques —array_minetarray_maxrendentnullau lieu de basculer en ordre de texte, qui répondait « 1050 ». Tout numérique : comparaison en nombre ; tout textuel (dates ISO) : en texte. Inchangé.2. Deux avertissements console, une fois par composant et par cause, relayés par le journal du volet Diagnostic (qui capte déjà
console.warn) :split, valeur seule) : nomme le champ et lesplità poser.Silence quand la colonne est réellement vide, et quand une partie des lignes porte un tableau. Un attribut
computeousplitmodifié remet le compte à zéro.La question préalable : « ça se corrige avec un dsfr-data-normalize ? »
Oui, dans les deux cas — établi sur le vrai composant (tests) et au navigateur (page minimale, bundle construit).
replace="vers 1970:1970"+splitreplacecompare la cellule entièresplit+compute="datation = replace(datation, 'vers ', '')"computepasse aprèssplit, etreplace()rend un texte (950,1050,1970), plus un tableaucompute="datation = replace(join(datation, ';'), 'vers ', '')", puissplit="datation:;" compute="premiere = array_min(datation)"joinrecolle,splitredécoupe)replace-fields="datation:vers 1970:1970"(élément par élément, valeur exacte)La recette en deux normalize répare aussi une année seule stockée en nombre (
1930→'1930').Limites de la recette, à connaître :
replace()est littéral, donc chaque préfixe à retirer (« vers », « avant »…) demande unreplaceimbriqué ;replace-fieldsdemande d'énumérer chaque valeur fautive.Vérification
null; nouvelle étapereplace-text(la recette énoncée sans la grammaire).compute-plus-petit-et-plus-grand-element-d-un-tableaucouvre les deux côtés (mixte → vide et avertissement ; nettoyé → 950, sans un mot) ;compute-element-de-tableau-element-atexige le silence quand une partie des lignes porte un tableau ; nouveaucompute-element-sans-split-avertit(colonne vide recalculée par les trois voix, avertissement exigé).tools/oracle/README.md) : mixte comparé en texte → « 1050 » là où l'oracle dit « — » ; avertissement du mixte retiré ; avertissement sans tableau retiré ; avertissement dit même quand une partie des lignes porte un tableau. Les six mutations de feat(normalize): compute — élément d'un tableau (element_at, array_min, array_max) (AM-103, #1237) #1258 ont été rejouées, toujours rouges.npm run verif: 303 passés, 1 en attente.test:run(9387),typecheck:tests,lint,check:accents,check:specs-tables,check:studio-couverture: verts.Conséquence à connaître
Un tableau qui mêle des codes en chiffres et des codes à lettre (
['75056', '2A004']) est mixte :array_miny rend vide, avec l'avertissement. C'est l'application directe de la règle ; avant, il était comparé en texte.Autre
createComputeTracker,computeArrayWarnings(et leurs types).applyComputeprend un troisième argument facultatif.compute-element-de-tableau.md, pas encore publié) est complété plutôt que doublé.🤖 Generated with Claude Code
https://claude.ai/code/session_01FrLwzPx5CG4VsPHEdo5ZVs