Correction de la jauge données cibles analystes et ajout de la jauge Plage de 52 semaines
Billet #338 : Correction de la source des cibles analystes et ajout de la jauge Plage de 52 semaines
Type : Correction / Logique métier / Verrouillage par tests
Composants concernés : code_source_simule/flask_app.py, templates/titre_detail.html, tests/test_titre_detail.py, docs/tests/stock_detail.md, docs/llm-wiki/01_architecture/key-decisions.md
1. Contexte et symptômes
Certaines données sur la fiche détail des titres étaient problématiques : la jauge des cibles analystes réutilisait les valeurs de la plage de 52 semaines quand la ligne CSV active ne contenait pas de cible analytique. En clair, l’écran remplaçait une donnée absente par une autre série de données. Le résultat était trompeur pour les utilisateurs.
Ce problème apparaissait sur des titres comme AFLYY et UA, où le CSV contient des valeurs de cible vides ou N/A. Au lieu d’un état explicite « non disponible », l’interface affichait des valeurs de 52 semaines issues du mauvais bloc.
2. Objectif
Conserver ces deux familles de données séparées et claires :
- les cibles analystes doivent lire uniquement les colonnes de cible du CSV actif ;
- la Plage de 52 semaines doit utiliser ses propres bornes basse/haute sur 52 semaines ;
- une cible analytique manquante doit rester indisponible, jamais remplacée par les données de 52 semaines ;
- le prix courant reste partagé entre les deux jauges pour garder une lecture simple et cohérente.
3. Solution implémentée
3.1 — Lecture pilotée par la source analytique
La route de détail a été mise à jour pour résoudre les cibles analystes directement à partir du chemin CSV actif et pour ignorer an_haut / an_bas pour cette jauge. La fonction renvoie None si la ligne CSV est vide ou N/A, ce qui respecte la règle métier du produit pour les données manquantes.
3.2 — Jauge dédiée de la plage 52 semaines
Le bloc Plage de 52 semaines reçoit maintenant sa propre jauge, dans le même style visuel que la jauge d’analystes mais avec les libellés :
- 52-Week Low
- 52-Week High
La comparaison continue d’utiliser le même prix courant que le module d’analystes, afin que l’utilisateur garde un point de référence unique et cohérent.
3.3 — Verrouillage par tests de régression
Une batterie de tests dédiée a été ajoutée pour verrouiller ce contrat métier :
- cas prêt pour les données analystes issues du CSV ;
- cas indisponible quand les valeurs CSV sont vides ou
N/A; - message clair en cas de plage invalide (low > high) ;
- régression empêchant les seuils 52 semaines de remplacer une cible analytique absente ;
- jauge 52 semaines utilisant le prix courant et ses propres bornes basse/haute.
4. Validation
La suite complète du projet a été exécutée après le correctif :
- suite complète : 268 tests réussis ;
- avertissements : 3 (dépréciation pandas/pyarrow existante plus avertissements de parsing sur une fixture CSV corrompue connue) ;
- couverture du code applicatif (
code_source_simule/*) : 79 %.
Cette validation confirme que le correctif métier est cohérent et que la suite de régression reste verte.
5. Résultat
L’expérience utilisateur est désormais alignée avec le contrat de données :
- les cibles analystes manquantes restent manquantes ;
- les seuils 52 semaines restent dans leur propre module ;
- les deux jauges restent lisibles et comparables avec le même prix courant.
6. Résumé de la consommation de tokens
Au cours de cette session de correction et d’amélioration des jauges d'analyse, qui a duré plus de 2 heures, 175,27 crédits Copilot AI ont été consommés, pour un coût brut de 1,75 $; ce qui représente seulement 0,7 % du coût total d'un consultant sur une telle tâche.