Files
geo/app/lib/presentation/MIGRATION.md
pierre 599b9fcda0 feat: Gestion des secteurs et migration v3.0.4+304
- Ajout système complet de gestion des secteurs avec contours géographiques
- Import des contours départementaux depuis GeoJSON
- API REST pour la gestion des secteurs (/api/sectors)
- Service de géolocalisation pour déterminer les secteurs
- Migration base de données avec tables x_departements_contours et sectors_adresses
- Interface Flutter pour visualisation et gestion des secteurs
- Ajout thème sombre dans l'application
- Corrections diverses et optimisations

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-07 11:01:45 +02:00

4.7 KiB
Executable File

Guide de migration vers la nouvelle structure

Ce document explique comment migrer l'application GeoSector vers la nouvelle structure de dossiers.

Nouvelle structure

lib/
  ├── presentation/           # Tout ce qui concerne l'interface utilisateur
  │   ├── admin/              # Pages et widgets spécifiques à l'interface administrateur
  │   ├── user/               # Pages et widgets spécifiques à l'interface utilisateur
  │   │   └── pages/          # Pages de l'interface utilisateur
  │   ├── auth/               # Pages et widgets liés à l'authentification
  │   ├── public/             # Pages et widgets accessibles sans authentification
  │   └── widgets/            # Widgets partagés utilisés dans plusieurs parties de l'application
  ├── core/                   # Logique métier et services (reste inchangé)
  │   ├── constants/          # Constantes de l'application
  │   ├── data/               # Modèles de données
  │   ├── repositories/       # Repositories pour accéder aux données
  │   ├── services/           # Services de l'application
  │   └── theme/              # Thème de l'application
  └── shared/                 # Code partagé entre les différentes parties de l'application

Étapes de migration

1. Widgets communs

Les widgets communs ont déjà été migrés vers lib/presentation/widgets/ :

  • dashboard_app_bar.dart
  • dashboard_layout.dart
  • responsive_navigation.dart

2. Pages administrateur

Migrer les pages administrateur de lib/features/admin/ vers lib/presentation/admin/ :

  • admin_dashboard_page.dart (déjà migré)
  • admin_statistics_page.dart
  • admin_history_page.dart
  • admin_communication_page.dart
  • admin_map_page.dart

3. Pages utilisateur

Migrer les pages utilisateur de lib/features/user/presentation/pages/ vers lib/presentation/user/pages/ :

  • Créer le dossier lib/presentation/user/pages/
  • Migrer les fichiers suivants :
    • user_dashboard_home_page.dart
    • user_statistics_page.dart
    • user_history_page.dart
    • user_communication_page.dart
    • user_map_page.dart

4. Pages d'authentification

Migrer les pages d'authentification de lib/features/auth/presentation/ vers lib/presentation/auth/ :

  • login_page.dart
  • register_page.dart
  • forgot_password_page.dart
  • etc.

5. Pages publiques

Migrer les pages publiques de lib/features/public/presentation/ vers lib/presentation/public/ :

  • landing_page.dart
  • about_page.dart
  • etc.

6. Mise à jour des imports

Après avoir migré tous les fichiers, il faudra mettre à jour les imports dans tous les fichiers pour refléter la nouvelle structure.

Exemple :

// Ancien import
import 'package:geosector_app/core/widgets/dashboard_app_bar.dart';

// Nouvel import
import 'package:geosector_app/presentation/widgets/dashboard_app_bar.dart';

7. Mise à jour des routes

Mettre à jour le fichier de routes (lib/core/routes/app_router.dart) pour refléter les nouveaux chemins des pages.

8. Tests

Après avoir effectué toutes les migrations, exécuter les tests pour s'assurer que tout fonctionne correctement.

Avantages de la nouvelle structure

  1. Séparation claire des responsabilités : La nouvelle structure sépare clairement la présentation (UI) de la logique métier (core).
  2. Organisation par fonctionnalité : Les fichiers sont organisés par fonctionnalité (admin, user, auth, public) plutôt que par type (pages, widgets).
  3. Facilité de maintenance : Il est plus facile de trouver et de modifier les fichiers liés à une fonctionnalité spécifique.
  4. Évolutivité : La nouvelle structure est plus évolutive et permet d'ajouter facilement de nouvelles fonctionnalités.

Approche progressive

La migration peut être effectuée progressivement, en commençant par les widgets communs, puis en migrant les pages une par une. Cela permet de continuer à développer l'application pendant la migration.

Exemple de migration d'une page

Voici un exemple de migration de la page admin_dashboard_page.dart :

  1. Copier le fichier de lib/features/admin/admin_dashboard_page.dart vers lib/presentation/admin/admin_dashboard_page.dart
  2. Mettre à jour les imports dans le nouveau fichier
  3. Mettre à jour les références à ce fichier dans d'autres fichiers
  4. Tester que tout fonctionne correctement
  5. Supprimer l'ancien fichier une fois que tout fonctionne

Conclusion

Cette migration permettra d'améliorer la structure de l'application et de faciliter son évolution future. Elle peut être effectuée progressivement pour minimiser l'impact sur le développement en cours.