Files
Inventory/dup-report.md

3.0 KiB
Raw Blame History

Rapport de déduplication

DUP-001 · Score 92 · Formulaire de contact site

  • Motif : duplication à lidentique du bloc de champs de contact (nom, téléphone, adresse…) entre les modales de création et dédition de site.
  • Occurrences détectées :
    • app/components/sites/SiteCreateModal.vue — lignes 1-52 (bloc de formulaire remplacé par <SiteContactFormFields />).
    • app/components/sites/SiteEditModal.vue — lignes 1-155 (même bloc de formulaire remplacé par <SiteContactFormFields />).
  • Extraction : nouveau composant app/components/sites/SiteContactFormFields.vue exposant la prop form: SiteForm (référence réactive vers lobjet du formulaire).
  • Plan / Statut : les deux modales importent désormais le composant partagé (<SiteContactFormFields :form="..." />), supprimant lancienne duplication. Aucun changement dAPI publique côté modale.

DUP-002 · Score 95 · Éditeur de contraintes (composants/pièces)

  • Motif : logique et template identiques pour la gestion des groupes requis dans TypeEditComponentRequirementsSection et TypeEditPieceRequirementsSection (ajout/suppression, formulaires, cases à cocher).
  • Occurrences détectées :
    • app/components/TypeEditComponentRequirementsSection.vue — lignes 1-94 (ancien template remplacé par <RequirementListEditor />).
    • app/components/TypeEditPieceRequirementsSection.vue — lignes 1-94 (même duplication remplacée).
  • Extraction : composant générique app/components/common/RequirementListEditor.vue paramétrable via :
    • v-model pour la liste de contraintes,
    • type-options, type-field pour la clé dassociation,
    • labels (structure textuelle),
    • defaultRequirement, requiredFallback, minFallback.
  • Plan / Statut : les deux sections nhébergent plus de logique métier, se contentent de fournir les options/labels spécifiques. La structure, les watchers et les props exposés restent inchangés côté parent.

DUP-003 · Score 88 · Formatage de dates UI

  • Motif : fonctions utilitaires de formatage (toLocaleDateString/Intl.DateTimeFormat) recopiées dans plusieurs pages (catalogues modèles et documents).
  • Occurrences détectées :
    • app/pages/component-catalog.vue — lignes 70-311 (affichage de la colonne « Modifié »).
    • app/pages/pieces-catalog.vue — lignes 70-310.
    • app/pages/documents.vue — lignes 90-188.
  • Extraction : utilitaire commun app/utils/date.ts exposant formatFrenchDate(value: Date | string | number | null | undefined): string avec gestion des valeurs nulles/invalides.
  • Plan / Statut : toutes les pages importent formatFrenchDate et lutilisent directement en template. Plus de fonction locale dupliquée.

Couverture & suites

  • Les trois duplications les plus impactantes repérées ont été factorisées (>= 80 % du volume ciblé).
  • Les contrôles npm run build passent avec succès ; aucun changement fonctionnel attendu.
  • Aucune duplication résiduelle critique détectée dans le périmètre ciblé après refacto.