Skip to content

Conversation

jereze
Copy link
Contributor

@jereze jereze commented Aug 26, 2025

Summary by CodeRabbit

  • New Features

    • Ajout d’un état pour “Tous polluants” : métabolite non-pertinent au-dessus de la limite indicative (0,9 µg/L), couleur #FDC70C, sans pictogramme.
  • Style

    • Clarification des libellés pour les seuils : formulation uniforme indiquant les plages de concentration (p.ex. <0,1 µg/L ; entre 0,1 et 0,9 µg/L ; >0,9 µg/L ; >3 µg/L).
    • Précision du libellé de non-conformité : dépassement par un métabolite pertinent de 0,1 µg/L (eau non conforme).

Copy link

coderabbitai bot commented Aug 26, 2025

Walkthrough

Ajout d’un nouvel état sup_limite_indicative pour la catégorie « tous » et renommage/réorganisation des clés de seuils (ex. inf_limite_qualiteinf_limites, sup_limite_qualitesup_limite_indicative, sup_limite_qualite_sup_3sup_valeur_sanitaire) dans webapp/lib/polluants.ts, avec mise à jour des libellés de concentration.

Changes

Cohort / File(s) Summary
Configuration des résultats (polluants)
webapp/lib/polluants.ts
- Ajout: resultats.sup_limite_indicative pour la catégorie tous (label: "Au moins un métabolite non-pertinent dépasse la limite indicative de 0,9 µg/L", couleur "#FDC70C", picto: null).
- Renommages globaux de clés : inf_limite_qualiteinf_limites, inf_limite_qualite_sup_0_1inf_limites_sup_0_1, sup_limite_qualitesup_limite_indicative, sup_limite_qualite_sup_3sup_valeur_sanitaire.
- Mise à jour des libellés associés (concentrations : "< 0,1 µg/L", "0,1–0,9 µg/L", "> 0,9 µg/L (dépassement indicative)", "> 3 µg/L (dépassement valeur sanitaire)").
- Ajustement des commentaires/indentation et clarification dans le commentaire de getAllEnabledCategories (comportement inchangé).

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Suggested labels

team-data-analyst

Suggested reviewers

  • LounesAbd

Poem

Sous la table des seuils une note dorée,
0,9 chuchote, 0,1 garde sa vérité.
Clés remaniées, libellés remis en ordre,
Un nouveau signal brille sans désordre.
Merci la team, pour ces seuils mieux accordés 🌊✨

Tip

🔌 Remote MCP (Model Context Protocol) integration is now available!

Pro plan users can now connect to remote MCP servers from the Integrations page. Connect with popular remote MCPs such as Notion and Linear to add more context to your reviews and chats.

✨ Finishing Touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/update-calculations

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

CodeRabbit Commands (Invoked using PR/Issue comments)

Type @coderabbitai help to get the list of available commands.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Status, Documentation and Community

  • Visit our Status Page to check the current availability of CodeRabbit.
  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (2)
webapp/lib/polluants.ts (2)

427-433: Libellé “inf_limite_qualite” (métabolites) — clair; micro-amélioration de précision possible

OK pour la reformulation. Option mineure si vous souhaitez harmoniser la granularité avec les libellés “0,1 µg/L / 0,9 µg/L” ailleurs: expliciter les seuils pour éviter toute ambiguïté côté usager.

Proposition (optionnelle):

- "Au moins un métabolite quantifié sans dépassement de la limite réglementaire ou indicative",
+ "Au moins un métabolite quantifié sans dépassement de la limite de qualité (0,1 µg/L) ni de la limite indicative (0,9 µg/L)",

78-96: Catégorie “tous” — micro-corrections rédactionnelles

Quelques accords/grammaire à corriger pour des textes plus propres en FR.

Proposition (strictement éditoriale):

       non_recherche: {
-        label: "Aucun polluants recherché dans les 12 derniers mois",
+        label: "Aucun polluant recherché dans les 12 derniers mois",
       },
       inf_limites: {
-        label: "Aucun dépassement des limites réglementaire",
+        label: "Aucun dépassement des limites réglementaires",
       },
       sup_limite_qualite: {
-        label: "Au moins un dépassement des limites réglementaire",
+        label: "Au moins un dépassement de la limite de qualité",
       },
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between c61843f and 47a338f.

⛔ Files ignored due to path filters (8)
  • dbt_/models/intermediate/_int__models.yml is excluded by none and included by none
  • dbt_/models/intermediate/int__resultats_udi_communes.sql is excluded by none and included by none
  • dbt_/models/intermediate/int__valeurs_de_reference.sql is excluded by none and included by none
  • dbt_/models/intermediate/pesticide/metabolite/_int__metabolite_models.yml is excluded by none and included by none
  • dbt_/models/intermediate/pesticide/metabolite/int__resultats_metabolite_udi_dernier.sql is excluded by none and included by none
  • dbt_/models/intermediate/tous/int__resultats_tous_udi_dernier.sql is excluded by none and included by none
  • dbt_/seeds/references_generations_futures.csv is excluded by !**/*.csv and included by none
  • dbt_/seeds/schema.yml is excluded by none and included by none
📒 Files selected for processing (1)
  • webapp/lib/polluants.ts (1 hunks)
🧰 Additional context used
🧬 Code graph analysis (1)
webapp/lib/polluants.ts (1)
webapp/components/PollutionMapMarker.tsx (1)
  • cat (163-178)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: test
🔇 Additional comments (3)
webapp/lib/polluants.ts (3)

84-96: Catégorie “tous” — souhaitez-vous rendre visible l’état “sup_limite_indicative” ici aussi ?

Aujourd’hui “tous” distingue seulement “inf_limites / sup_limite_qualite / sup_limite_sanitaire”. Si vous souhaitez que la carte et les récapitulatifs reflètent également les dépassements “indicatifs” (0,9 µg/L, non pertinents) quand on regarde “tous”, on peut ajouter un état miroir de celui introduit pour “métabolites”.

Proposition (à confirmer côté produit/calculs; insertion juste après “inf_limites”):

       inf_limites: {
         label: "Aucun dépassement des limites réglementaires",
         couleur: "#74c476",
         couleurAlt: "#c7e9c0",
         picto: null,
       },
+      sup_limite_indicative: {
+        label: "Au moins un métabolite non-pertinent dépasse la limite indicative de 0,9 µg/L",
+        couleur: "#FDC70C",
+        couleurAlt: "#FDC70C",
+        picto: null,
+      },
       sup_limite_qualite: {
         label: "Au moins un dépassement de la limite de qualité",
         couleur: "#fe9929",
         couleurAlt: "#fe9929",
         picto: "warning",
       },

Si vous ne souhaitez pas afficher cet état dans “tous”, pas de souci — mais pensez alors à vérifier la cohérence attendue côté carte/légende et statistiques globales.


441-447: Vérifier la présence du champ “pertinent” dans la définition des métabolites

Merci d’avoir validé que le terme apparaît uniquement dans les libellés et légendes. Il nous faut maintenant confirmer que chaque métabolite porte bien un indicateur binaire (ou équivalent) pertinent: boolean dans la configuration, et que ce champ est utilisé par la logique de calcul de resultat.

Points à valider une fois le script exécuté :

  • La section id: "metabolite" dans webapp/lib/polluants.ts doit contenir un champ type pertinent (ou un mapping vers un objet où figure cette propriété).
  • Si ce champ est absent, ou s’il est nommé différemment, ajouter / corriger la définition pour que la classification pertinent/non-pertinent soit toujours disponible.
  • Enfin, vérifier dans la fonction qui agrège les résultats (celle qui construit resultat pour chaque substance) que ce champ pertinent est bien pris en compte pour appliquer le bon seuil (0,1 µg/L vs 0,9 µg/L).

Dès que nous aurons confirmé la présence et l’usage de ce champ, nous pourrons clore cette vérification.


434-440: Vérification de l’intégration de sup_limite_indicative

Points vérifiés côté code

  • webapp/lib/polluants.ts : le nouvel état sup_limite_indicative est bien défini immédiatement après inf_limite_qualite et avant sup_limite_qualite, garantissant l’ordre d’insertion nécessaire pour un tri naturel via Object.entries.
  • webapp/lib/colorMapping.ts : la légende est construite dynamiquement à partir de categoryDetails.resultats, de sorte que chaque clé déclarée (dont sup_limite_indicative) est automatiquement prise en compte sans modification de switch/case.
  • webapp/app/api/udi/[udi_id]/route.ts : le mapping infoCategorie.resultats[dataRecord.statut_titre] couvre dynamiquement tous les identifiants, y compris sup_limite_indicative, pour l’affichage et l’API.

Points à vérifier manuellement

  • Génération ETL : assurez-vous que votre pipeline produit bien la valeur sup_limite_indicative dans le champ row.resultat.
  • Analytics / tableaux de bord : validez qu’aucune agrégation ne regroupe par inadvertance sup_limite_indicative avec sup_limite_qualite.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
webapp/lib/polluants.ts (2)

96-102: Clé “sup_limite_sanitaire” incohérente avec le reste du code (risque de stats à 0 pour “tous”)

Dans PollutionMapLegend.tsx, les stats annuelles s’appuient sur la clé ${period}_${category}_sup_valeur_sanitaire. Ici, la catégorie “tous” expose sup_limite_sanitaire. Probable effet: compteur/ratio non calculé pour “tous”.

Proposition (harmonisation avec les autres catégories):

-      sup_limite_sanitaire: {
+      sup_valeur_sanitaire: {
         label: "Au moins un dépassement des limites sanitaires",
         couleur: "#f03b20",
         couleurAlt: "#bd0026",
         picto: "red cross",
       },

427-447: Vérifier et propager sup_limite_indicative dans l’agrégateur, la carte et les stats

Il manque actuellement toute prise en charge de sup_limite_indicative une fois définie dans polluants.ts. Merci d’ajouter les points suivants :

  • Agrégateur
    • Contrôler dans la fonction de calcul des états (probablement dans webapp/lib/polluants.ts) que sup_limite_indicative est bien généré comme résultat lorsque la limite indicative est dépassée.

  • Carte & légende
    • Mettre à jour webapp/components/PollutionMapLegend.tsx pour :

    • afficher la couleur et le picto associés à sup_limite_indicative,
    • inclure cette clé dans les filtres/tri du composant.
  • Statistiques annuelles
    • Dans la construction des noms de stat (getStatistic), ajouter la clé sup_limite_indicative (au lieu de ne gérer que sup_valeur_sanitaire) afin que le ratio annuel tienne compte de ce nouvel état.

🧹 Nitpick comments (4)
webapp/lib/polluants.ts (4)

78-102: Corrections de libellés (accords) dans la catégorie “tous”

Quelques fautes d’accords qui se verront côté UI.

Proposition de patch:

       non_recherche: {
-        label: "Aucun polluants recherché dans les 12 derniers mois",
+        label: "Aucun polluant recherché dans les 12 derniers mois",
         couleur: "#cccccc",
         couleurAlt: "#f7f7f7",
         picto: null,
       },
       inf_limites: {
-        label: "Aucun dépassement des limites réglementaire",
+        label: "Aucun dépassement des limites réglementaires",
         couleur: "#74c476",
         couleurAlt: "#c7e9c0",
         picto: null,
       },
-      sup_limite_qualite: {
-        label: "Au moins un dépassement des limites réglementaire",
+      sup_limite_qualite: {
+        label: "Au moins un dépassement des limites réglementaires",
         couleur: "#fe9929",
         couleurAlt: "#fe9929",
         picto: "warning",
       },

524-549: Harmoniser couleurs/pictos pour l’UX (indicative = ambre, sanitaire = rouge + croix)

Ici, “sup_limite_indicative” est orange (#fe9929) avec picto “warning” alors que, plus haut, il est ambre (#FDC70C) sans picto. Et “sup_valeur_sanitaire” est orange foncé + “warning” alors que partout ailleurs c’est rouge + “red cross”. Pour cohérence visuelle et message de sévérité:

  • indicative: #FDC70C, pas de picto
  • valeur sanitaire: #f03b20/#bd0026, picto “red cross”
               sup_limite_indicative: {
                 label:
                   "Concentration > 0,9 µg/L (dépassement de la limite indicative)",
-                couleur: "#fe9929",
-                couleurAlt: "#fe9929",
-                picto: "warning",
+                couleur: "#FDC70C",
+                couleurAlt: "#FDC70C",
+                picto: null,
               },
               sup_valeur_sanitaire: {
                 label:
                   "Concentration > 3 µg/L (dépassement de la valeur sanitaire)",
-                couleur: "#d95f0e",
-                couleurAlt: "#d95f0e",
-                picto: "warning",
+                couleur: "#f03b20",
+                couleurAlt: "#bd0026",
+                picto: "red cross",
               },

620-645: Même harmonisation couleurs/pictos à appliquer ici

Répéter l’alignement “indicative = #FDC70C sans picto” et “valeur sanitaire = #f03b20/#bd0026 + red cross”.

               sup_limite_indicative: {
                 label:
                   "Concentration > 0,9 µg/L (dépassement de la limite indicative)",
-                couleur: "#fe9929",
-                couleurAlt: "#fe9929",
-                picto: "warning",
+                couleur: "#FDC70C",
+                couleurAlt: "#FDC70C",
+                picto: null,
               },
               sup_valeur_sanitaire: {
                 label:
                   "Concentration > 3 µg/L (dépassement de la valeur sanitaire)",
-                couleur: "#d95f0e",
-                couleurAlt: "#d95f0e",
-                picto: "warning",
+                couleur: "#f03b20",
+                couleurAlt: "#bd0026",
+                picto: "red cross",
               },

803-813: Typo dans le séparateur décimal

Il y a un espace: “0, 1 µg/L”. À corriger en “0,1 µg/L”.

-                label: "Concentration > 0, 1 µg/L (dépassement de la limite de qualité, eau non conforme)",
+                label: "Concentration > 0,1 µg/L (dépassement de la limite de qualité, eau non conforme)",
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 47a338f and 3c4543c.

⛔ Files ignored due to path filters (9)
  • dbt_/models/intermediate/pesticide/int__resultats_pesticide_udi_dernier.sql is excluded by none and included by none
  • dbt_/models/intermediate/pesticide/metabolite_specifique/_int__metabolite_specifique_models.yml is excluded by none and included by none
  • dbt_/models/intermediate/pesticide/metabolite_specifique/int__resultats_metabolite_specifique_commune_dernier.sql is excluded by none and included by none
  • dbt_/models/intermediate/pesticide/metabolite_specifique/int__resultats_metabolite_specifique_udi_dernier.sql is excluded by none and included by none
  • dbt_/models/intermediate/tous/int__resultats_tous_udi_dernier.sql is excluded by none and included by none
  • dbt_/tests/test_metabolite_results.sql is excluded by none and included by none
  • dbt_/tests/test_metabolite_specifique_results.sql is excluded by none and included by none
  • dbt_/tests/test_pesticide_results.sql is excluded by none and included by none
  • dbt_/tests/test_sub_active_results.sql is excluded by none and included by none
📒 Files selected for processing (1)
  • webapp/lib/polluants.ts (8 hunks)
🧰 Additional context used
🧬 Code graph analysis (1)
webapp/lib/polluants.ts (3)
webapp/components/PollutionMapMarker.tsx (1)
  • cat (163-178)
webapp/app/lib/mock-data.ts (1)
  • Synthese (36-42)
webapp/components/PollutionMapLegend.tsx (1)
  • categoryDetails (187-198)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: test
🔇 Additional comments (3)
webapp/lib/polluants.ts (3)

715-735: Règle “pertinent” OK

Pour un métabolite pertinent, le couple {<0,1} / {>0,1 non conforme} est conforme à la sémantique attendue. RAS.


892-905: Règle “pertinent” OK (Atrazine déséthyl)

Libellé et seuil “> 0,1 µg/L (non conforme)” alignés. RAS.


1503-1517: LGTM sur l’exclusion de “tous” dans la récursivité

Lecture claire, exclusion explicite de “tous”, rien à signaler.

@jereze jereze merged commit 05862ce into main Aug 27, 2025
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant