2026.07.22 (Mer)

✹ RĂ©sumĂ© de GPT-5.6 Sol  

Le rĂ©cit de la dĂ©couverte qu’à force de modifier l’interface du suivi corporel, les anciens billets pouvaient devenir incompatibles avec la structure la plus rĂ©cente, puis du rattachement de renderer, schema et validator Ă  une mĂȘme version grĂące Ă  un unique schema_version.

body_review avait une version, mais le renderer ne l’utilisait pas

AprĂšs avoir créé un MVP de suivi alimentaire dans le blog, j’ai sĂ©parĂ© Aujourd'hui et 7 derniers jours dans la vue repliĂ©e et empĂȘchĂ© les cartes dĂ©ployĂ©es de se casser dans les espaces Ă©troits. J’ai aussi remplacĂ© les Ă©toiles blanches des verdicts de coaching par le mĂȘme affichage de note que celui du suivi corporel.

En continuant Ă  modifier l’écran, j’ai vu un problĂšme plus important. Le front matter contenait dĂ©jĂ  schema_version, mais _includes/body-review.html ignorait cette valeur et rendait directement la structure la plus rĂ©cente. Si la structure des donnĂ©es changeait ensuite, les anciens Daily Reviews pouvaient passer dans le nouveau renderer et se casser.

Atteindre directement le renderer vN depuis schema_version

Je n’ai pas rempli body-review.html d’une liste croissante de case when pour chaque version. Le chemin est construit à partir du nombre, puis le fichier correspondant est inclus directement.

{%- assign schema_version = review.schema_version | plus: 0 -%}
{%- capture renderer_path -%}body-review/v{{ schema_version }}.html{%- endcapture -%}
{% include {{ renderer_path }} review=review %}

v4 mĂšne Ă  body-review/v4.html et v100 Ă  body-review/v100.html. Il n’existe pas non plus de limite supĂ©rieure qui bloquerait soudainement v101. Si le fichier de cette version existe, la mĂȘme rĂšgle le relie ; sinon, le build Ă©choue au lieu de revenir silencieusement Ă  la version la plus rĂ©cente.

Garder renderer, schema et validator sous le mĂȘme numĂ©ro

Versionner uniquement l’écran pouvait encore dĂ©synchroniser la validation des entrĂ©es. J’ai donc fait de chaque version un ensemble de trois fichiers.

_includes/body-review/v4.html
_project/blog-system/body-review-schemas/v4.yml
_project/blog-system/body-review-validators/v4.rb

Le vĂ©rificateur repĂšre tous les vN du repository et Ă©choue si l’un des trois fichiers manque ou si le renderer n’a pas son marqueur body-review--vN. Une nouvelle version n’est ajoutĂ©e que lorsque la structure des donnĂ©es doit changer, tandis qu’un billet dĂ©jĂ  publiĂ© continue d’ĂȘtre interprĂ©tĂ© par la version qu’il dĂ©clare.

J’ai aussi profitĂ© de v4 pour corriger les problĂšmes visuels qui me gĂȘnaient. Le rĂ©sumĂ© repliĂ© place Aujourd'hui et 7 derniers jours sur des lignes distinctes, et les cartes dĂ©ployĂ©es passent de trois colonnes Ă  deux, puis une, selon la largeur du component lui-mĂȘme. Le suivi corporel et les verdicts de coaching utilisent le mĂȘme include de note, tandis que les textes de l’UI et les labels d’accessibilitĂ© viennent des data de chaque langue active.

Les simples changements de texte ou de style peuvent dĂ©sormais rester dans v4. Si une modification casse le data shape, j’ajoute un nouvel ensemble vN. CrĂ©er un nouvel Ă©cran n’oblige plus Ă  réécrire en mĂȘme temps tous les anciens billets.

Laisser un commentaire