[đ ] Router les versions du suivi corporel sans casser les anciens Daily Reviews
âš 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