Repository navigation
[Refactor] M11-04 — Découper les gros écrans (camera.tsx 830, barcode.tsx 551) #184
Copy link
Copy link
Closed
Labels
epic/identificationIdentificationIdentificationpriority-mediumPriorité normalePriorité normalerefactorRefactoring sans changement de comportementRefactoring sans changement de comportementsize/lGrande (> 1 j, à découper)Grande (> 1 j, à découper)
Milestone
Description
Activity
- addedrefactorRefactoring sans changement de comportementRefactoring sans changement de comportementpriority-mediumPriorité normalePriorité normaleepic/identificationIdentificationIdentificationsize/lGrande (> 1 j, à découper)Grande (> 1 j, à découper)
on Sep 7, 2026 Points relayés depuis la revue complète du code (#183, PR #193 mergée) :
collection/index.tsx:85-92(Mineure) :setStatependant le render pour répondre au changement deparams.edition(pattern d'ajustement fragile, pas de correctif trivial sûr).camera.tsx:86-176(Mineure) : intervalle d'analyse recréé à chaque changement destate.status(déps correctes, relance inutile à chaque transition).barcode.tsx/camera.tsx/form-barcode.tsx(Moyenne, partagé avec [Refactor] M11-05 — Découper services & composants métier #185) : styles caméra recopiés à l'identique (reticle 220×220, scanHint, torch, overlays, buttonPressed) — à extraire une fois les écrans découpés.
Rapport complet : commentaire sur #183.
Compléments relayés par la passe de validation complémentaire de #183 (2ᵉ revue exhaustive) :
- Échec d'initialisation DB ⇒ écran blanc définitif (Élevée) :
dbPromisemémorise la promesse rejetée (dependencies.ts:41-44) ;_layout.tsx:33-42sans.catch→ aucune surface d'erreur, application vide. À traiter ici (couche écrans/entrée) ou sur [Refactor] M11-05 — Découper services & composants métier #185. clearDetailmort ⇒ flash de fiche erronée (Moyenne) :collection/[id]/index.tsx:75n'affiche le loader que si!detail→ en ouvrant la fiche B après A, le contenu de A s'affiche d'abord (loader à conditionner sur l'id, ouclearDetailà appeler au retour — le fix appartient aux screens, la purge à [Refactor] M11-06 — Code mort, commentaires et conventions #186).collection/[id]/edit.tsxne charge pas son propre détail (Moyenne) : dépend du store global « déjà rempli » → données périmées en navigation directe/deep-link.scan/result.tsx: échec deloadDetail= « Statut indisponible » sans retry + boutons Ajouter/Voir masqués (Moyenne) → flux d'ajout bloqué ; ajouter un état d'erreur avec retry.
Contexte complet : commentaire de validation sur #183.
- Échec d'initialisation DB ⇒ écran blanc définitif (Élevée) :
✅ Correctifs #184 livrés (PR #198, merge sur
develop)Le découpage des écrans de scan est complété et couvert :
Structure
- Code-barres (
scan/barcode.tsx560 → ~200 lignes) :barcode-styles.ts,barcode-pending-sheets.tsx(confirm/success/unknown continu),barcode-overlay-controls.tsx, hookuse-barcode-scanning.ts. - Caméra OCR (
scan/camera.tsx841 → ~200 lignes) :camera-ocr-styles.ts,ocr-analyzing-overlay.tsx,ocr-confirm-overlay.tsx,ocr-result-overlay.tsx,ocr-analysis.ts, hookuse-ocr-analysis.ts. - M-6 : styles privés des écrans mutualisés dans
*styles.ts(pas de duplication camera/barcode restante).
Couverture (composé avec les tests écrans)
barcode-pending-sheets.tsx: branches 58 % → 70,8 %ocr-analyzing-overlay.tsx: branches 61,7 % → 82,3 %ocr-confirm-overlay.tsx: branches 57,1 % → 78,6 %- +3 suites dédiées (44 tests), total 442 tests, CI Quality verte, seuils de couverture satisfaits.
Couverture des composants de scan au-dessus du seuil de 70 % (branches et stmts).
- Code-barres (
Metadata
Metadata
Assignees
Labels
epic/identificationIdentificationIdentificationpriority-mediumPriorité normalePriorité normalerefactorRefactoring sans changement de comportementRefactoring sans changement de comportementsize/lGrande (> 1 j, à découper)Grande (> 1 j, à découper)
Projects
- StatusShow more project fieldsDone
Objectif
Composants trop longs et peu testables : réduire, isoler les fonctions critiques dans des modules dédiés, extraire sous-composants.
Périmètre
Livrables