Files
binome/PROBLEMES_TECHNIQUES.md
Julien Calixte c433d0d7bf migrate to Vue3
2025-07-21 01:20:57 +02:00

7.6 KiB

Problèmes Techniques Identifiés - Application Binôme

📊 Résumé Exécutif

Score global des tests : 85/100
Statut : Migration réussie avec optimisations recommandées
Problèmes identifiés : 5 problèmes techniques à résoudre


🔴 PROBLÈME CRITIQUE #1 - Configuration ESLint Obsolète

Description du Problème

  • ESLint Version : 6.7.2 (sortie en 2019)

  • Version actuelle recommandée : 8.x ou 9.x

  • Extensions dépréciées utilisées dans .eslintrc.js :

    '@vue/prettier/@typescript-eslint' // ❌ DÉPRÉCIÉ
    

Impact

  • ⚠️ Messages de dépréciation constants
  • 🐛 Règles de linting obsolètes
  • 🔒 Vulnérabilités de sécurité potentielles
  • 🚫 Incompatibilité avec les nouvelles fonctionnalités TypeScript

Solution Recommandée

# 1. Upgrade ESLint et dépendances
pnpm remove eslint @typescript-eslint/eslint-plugin @typescript-eslint/parser
pnpm add -D eslint@^8.57.0 @typescript-eslint/eslint-plugin@^6.0.0 @typescript-eslint/parser@^6.0.0

# 2. Upgrade extensions Vue
pnpm add -D eslint-plugin-vue@^9.0.0 @vue/eslint-config-typescript@^12.0.0 @vue/eslint-config-prettier@^8.0.0

Nouvelle Configuration .eslintrc.js

module.exports = {
  root: true,
  env: {
    node: true,
    'vue/setup-compiler-macros': true
  },
  extends: [
    'plugin:vue/vue3-essential',
    'eslint:recommended',
    '@vue/eslint-config-typescript',
    '@vue/eslint-config-prettier'
  ],
  parserOptions: {
    ecmaVersion: 'latest'
  },
  rules: {
    '@typescript-eslint/no-unused-vars': 'warn',
    'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
    'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off'
  }
}

Priorité : 🔴 CRITIQUE

Effort estimé : 2-3 heures


🟡 PROBLÈME IMPORTANT #2 - TypeScript Obsolète

Description du Problème

  • Version actuelle : ~3.9.3 (sortie en 2020)
  • Version requise par le brief : 5.8
  • Version recommandée : ^5.8.0 (dernière stable)

Impact

  • 🚫 Fonctionnalités TypeScript modernes non disponibles
  • 🔧 Pas de support pour les nouvelles syntaxes
  • 🐛 Problèmes de compatibilité avec les dépendances modernes
  • 📉 Performance de compilation sous-optimale

Fonctionnalités Manquées

  • Template Literal Types améliorés
  • Conditional Types avancés
  • Utility Types modernes
  • Import Assertions
  • Satisfies Operator

Solution Recommandée

# Upgrade TypeScript
pnpm remove typescript
pnpm add -D typescript@^5.8.0

# Vérifier la compatibilité
pnpm tsc --noEmit

Mise à Jour tsconfig.json

{
  "compilerOptions": {
    "target": "ES2022",
    "module": "ESNext",
    "moduleResolution": "bundler",
    "strict": true,
    "jsx": "preserve",
    "importHelpers": true,
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
    "sourceMap": true,
    "baseUrl": ".",
    "types": ["vite/client"],
    "paths": {
      "@/*": ["src/*"]
    },
    "lib": ["ES2022", "DOM", "DOM.Iterable"],
    "skipLibCheck": true,
    "noEmit": true
  }
}

Priorité : 🟡 IMPORTANTE

Effort estimé : 1-2 heures


🟡 PROBLÈME IMPORTANT #3 - Prettier Obsolète

Description du Problème

  • Version actuelle : ^1.19.1 (sortie en 2019)
  • Version recommandée : ^3.0.0
  • Écart : 4 ans de retard

Impact

  • 🎨 Formatage non optimal du code
  • 🔧 Règles de formatage obsolètes
  • 🚫 Pas de support pour les nouvelles syntaxes
  • Performance de formatage réduite

Solution Recommandée

# Upgrade Prettier
pnpm remove prettier eslint-plugin-prettier
pnpm add -D prettier@^3.0.0 eslint-plugin-prettier@^5.0.0

Nouvelle Configuration .prettierrc

{
  "semi": false,
  "singleQuote": true,
  "tabWidth": 2,
  "trailingComma": "none",
  "printWidth": 80,
  "endOfLine": "lf",
  "arrowParens": "avoid"
}

Priorité : 🟡 IMPORTANTE

Effort estimé : 30 minutes


🟠 PROBLÈME MINEUR #4 - Dépréciations Sass

Description du Problème

  • Warnings Sass avec @import dans vite.config.ts
  • Syntaxe dépréciée : @import sera supprimé dans Sass 3.0
  • Syntaxe moderne : @use et @forward

Impact

  • ⚠️ Messages d'avertissement lors du build
  • 🔮 Préparation pour Sass 3.0
  • 📦 Optimisation du bundle CSS

Fichiers Concernés

Solution Recommandée

// Avant (déprécié)
@import "@/styles/variables.scss";

// Après (moderne)
@use "@/styles/variables" as vars;

Mise à Jour vite.config.ts

css: {
  preprocessorOptions: {
    scss: {
      additionalData: `@use "@/styles/variables" as *;`
    }
  }
}

Priorité : 🟠 MINEURE

Effort estimé : 1 heure


🟠 PROBLÈME MINEUR #5 - Configuration Persistence Pinia

Description du Problème

  • Configuration basique de la persistence dans src/store/index.ts
  • Pas d'optimisation des stratégies de sauvegarde
  • Pas de gestion d'erreurs pour localStorage

Impact Actuel

  • Fonctionnalité opérationnelle
  • Optimisations possibles
  • 🛡️ Gestion d'erreurs améliorable

Configuration Actuelle

persist: {
  key: 'binome',
  storage: localStorage,
  paths: [
    'interval',
    'hasMusic',
    'hasSpotify',
    'dev1',
    'dev2',
    'accessToken',
    'tokenExpire'
  ]
}

Solution Recommandée

persist: {
  key: 'binome',
  storage: localStorage,
  paths: [
    'interval',
    'hasMusic', 
    'hasSpotify',
    'dev1',
    'dev2',
    'accessToken',
    'tokenExpire'
  ],
  serializer: {
    serialize: JSON.stringify,
    deserialize: JSON.parse
  },
  beforeRestore: (context) => {
    console.log('Restauration du store Pinia...')
  },
  afterRestore: (context) => {
    console.log('Store Pinia restauré avec succès')
  }
}

Priorité : 🟠 MINEURE

Effort estimé : 30 minutes


📋 Plan de Résolution Recommandé

Phase 1 - Corrections Critiques (Priorité Immédiate)

  1. ESLint Upgrade - 2-3 heures
    • Impact : Élimination des warnings critiques
    • Risque : Faible (amélioration de la qualité)

Phase 2 - Améliorations Importantes (Semaine suivante)

  1. TypeScript 5.8 - 1-2 heures

    • Impact : Conformité au brief, fonctionnalités modernes
    • Risque : Moyen (tests de régression nécessaires)
  2. Prettier Upgrade - 30 minutes

    • Impact : Formatage moderne
    • Risque : Très faible

Phase 3 - Optimisations Mineures (Quand disponible)

  1. Migration Sass - 1 heure

    • Impact : Préparation future, moins de warnings
    • Risque : Très faible
  2. Optimisation Pinia - 30 minutes

    • Impact : Meilleure gestion d'erreurs
    • Risque : Très faible

🎯 Objectifs Post-Résolution

Score Cible : 95/100

  • Élimination de tous les warnings
  • Conformité complète au brief
  • Stack entièrement moderne
  • Optimisations de performance

Bénéfices Attendus

  • 🚀 Performance : Build et développement plus rapides
  • 🛡️ Sécurité : Élimination des vulnérabilités
  • 🔧 Maintenabilité : Code plus moderne et maintenable
  • 📚 Documentation : Conformité aux standards actuels

Document créé le 20 juillet 2025
Prochaine révision recommandée : Après résolution des problèmes critiques