# PHASE K — SCORE GLOBAL & RECOMMANDATIONS --- ## Tableau de synthèse | Catégorie | Score /10 | Pondération | Score pondéré | Justification | |-----------|-----------|-------------|---------------|---------------| | Architecture | **7.0** | ×1.3 | **9.1** | Routing exemplaire, TypeScript strict, feature modules en cours, mais dualité components/features et client.ts monstre | | Design System | **6.5** | ×1.0 | **6.5** | Tokens ambitieux et complets, mais fragmentation (kodo/veza), CSS vanilla parallèle, duplications composants | | Cohérence UI | **7.0** | ×1.0 | **7.0** | Icônes uniformes, layout responsive, button system solide, mais hacks CSS et duplications | | Accessibilité | **6.5** | ×1.0 | **6.5** | ARIA extensif, focus management, mais skip nav absent, sémantique HTML minimale | | Sécurité | **8.0** | ×1.5 | **12.0** | JWT httpOnly, DOMPurify strict, CSRF, pas de secrets hardcodés — exemplaire | | Performance | **6.0** | ×1.2 | **7.2** | Routes lazy, manual chunks, mais build cassé, vendor 925KB, images non-lazy | | Dette technique | **5.0** | ×1.0 | **5.0** | 706 `as any`, 25 fichiers morts, client.ts 2237L, build cassé, hooks >600L | | Scalabilité | **5.5** | ×1.0 | **5.5** | Theming prêt, routing scalable, mais i18n non externalisé, white-labeling bloqué | | Maturité perçue | **6.5** | ×1.0 | **6.5** | Design distinctif et ambitieux, mais finitions manquantes et placeholders | ### Calcul du score global | | Somme pondérée | Somme pondérations | |---|---|---| | Total | **65.3** | **10.0** | | **SCORE GLOBAL** | **6.5 / 10** | | --- ## Recommandations immédiates (semaine 1-2) ### 1. Fixer le build cassé - **Fichier** : `src/components/views/education-view/useEducationView.ts` → import `educationService` manquant - **Temps** : 15 minutes - **Impact** : 🔴 Critique — débloque le déploiement ### 2. Supprimer les fichiers orphelins - **Fichiers** : 25 fichiers identifiés en Phase H6 (~3 000 LOC de code mort) - **Temps** : 2-4 heures - **Impact** : Réduit la confusion, améliore la navigabilité du code ### 3. Supprimer les CSS vanilla parallèles - **Fichiers** : `styles/button.css`, `styles/card.css`, `styles/input.css`, `styles/badge-avatar.css`, `styles/header.css` - **Temps** : 1 jour (vérifier qu'aucun composant n'utilise encore les classes `.btn-veza`, `.card-veza`, etc.) - **Impact** : Élimine la double maintenance CSS ↔ composants React ### 4. Supprimer les hacks CSS `!important` - **Fichiers** : `styles/fix-input-focus.css`, `styles/fix-login-form.css` - **Temps** : 4-8 heures - **Impact** : Élimine les overrides imprévisibles ### 5. Résoudre les duplications de composants - **Actions** : - Supprimer `ui/loading-spinner.tsx` → utiliser `ui/Spinner.tsx` - Supprimer `ui/button-loading.tsx` → utiliser `Button` prop `loading` - Choisir entre `modal.tsx` et `dialog/` → migrer vers un seul - Consolider `DataList` et `Accordion` (legacy → nouveau) - **Temps** : 1-2 jours - **Impact** : API claire pour les développeurs --- ## Recommandations court terme (mois 1-2) ### 1. Split `services/api/client.ts` (2 237 lignes) - **Description** : Décomposer en modules (interceptors, retry, cache, csrf, request-builder) - **Prérequis** : Aucun - **Effort** : L (3-5 jours) - **Impact** : Critique — fichier le plus modifié du projet ### 2. Migrer components/ → features/ - **Description** : Déplacer `components/player/`, `components/settings/`, `components/social/`, `components/education/`, `components/commerce/`, `components/studio/` dans les modules features correspondants - **Prérequis** : Fixer les imports, mettre à jour les barrel exports - **Effort** : L (1 semaine) - **Impact** : Majeur — architecture clarifiée ### 3. Activer `@typescript-eslint/no-explicit-any: 'warn'` - **Description** : Réactiver la règle ESLint, corriger progressivement les ~120 `any` dans le code source (pas les tests ni les types générés) - **Prérequis** : Aucun - **Effort** : M (2-3 jours pour la correction initiale) - **Impact** : Majeur — type safety restaurée ### 4. Unifier les tokens de design (`--kodo-*` ↔ `--veza-*`) - **Description** : Choisir un namespace unique, migrer toutes les références - **Prérequis** : Décision de nommage - **Effort** : M (2-3 jours) - **Impact** : Majeur — source de vérité unique pour les couleurs ### 5. Ajouter skip navigation - **Description** : Ajouter `Skip to content` en haut du layout - **Prérequis** : `id="main-content"` sur le `
` - **Effort** : XS (30 minutes) - **Impact** : Critique (WCAG 2.4.1) ### 6. Ajouter sémantique HTML - **Description** : `