Skip to content

Perf — 2 micro-items P2-C non livrés (LabChart hover memo + heatmap Journal montée) #136

Description

@aliceout

Contexte

La relecture post-audit (finding par finding) a trouvé deux micro-items perf qui figuraient sur la ligne 127 de la roadmap passe 2 (lot P2-C : « memo(LiteMarkdown), fixes HRT (rows, LabChart hover), heatmap Journal montée ») mais qui n'ont pas été livrés et n'ont pas été annotés « non livré ». Les deux autres items de la ligne (memo(LiteMarkdown), HRT rows) ont bien été faits.

Ni l'un ni l'autre n'est bloquant — ce sont des micro-optimisations de rendu. Mais ils étaient dans le plan, donc on les trace.

1. LabChart — recalcule toute la géométrie à chaque survol

packages/web/src/app/flow/HRT/components/LabChart.tsx

coords / linePath / areaPath sont calculés inline au render (≈ lignes 201-206), pas dans un useMemo. Le survol met à jour hover (setHover, ligne 170) → chaque mouvement de souris re-render le composant et recalcule tout le tracé SVG. C'est exactement le motif que l'audit pointait.

Correctif : useMemo sur coords/linePath/areaPath (deps : points/échelles), de sorte que le survol ne recalcule que l'index actif (active), pas la géométrie.

2. Journal — la heatmap se démonte/remonte à chaque toggle

packages/web/src/app/flow/Journal/views/PrimaryColumn.tsx:88 fait {!chartCollapsed ? <Chart /> : null} → démontage/remontage complet du graphe à chaque ouverture/fermeture.

Mood fait déjà mieux (packages/web/src/app/flow/Mood/views/PrimaryColumn.tsx:120-136) : le <Chart/> reste monté en permanence, masqué par une transition CSS grid-rows (1fr0fr). Pas de remontage, pas de recalcul heatmap.

Correctif : appliquer le pattern Mood à Journal (garder le Chart monté derrière le collapse CSS).

Critères d'acceptation

  • LabChart : géométrie mémoïsée, le survol ne la recalcule plus.
  • Journal : heatmap maintenue montée derrière un collapse CSS (pattern Mood).
  • Roadmap passe 2 ligne 127 : cocher ou annoter ces deux items.

Réf : docs/Audit-2026-06-passe2.md ligne 127 ; relecture post-audit.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions