281 lines
10 KiB
Markdown
281 lines
10 KiB
Markdown
# AI_CONTEXT.md - GEOSECTOR
|
|
|
|
## Informations Générales
|
|
|
|
- **Nom du Projet**: GEOSECTOR
|
|
- **Type de Projet**: Projet hybride avec un site web en Svelte 5, une application Web et mobile Flutter et une API PHP8.3 avec base de données centrale MariaDB
|
|
- **Description**: Gestion de la distribution des calendriers pour les amicales de pompiers
|
|
- **Date de Début**: 01/03/2025
|
|
- **Statut Actuel**: [En développement]
|
|
- **Lien GitLab**: [http://51.68.36.203:35788/d6soft/geosector]
|
|
|
|
## Structure du Projet
|
|
|
|
### Architecture Générale
|
|
|
|
- Un dossier /web pour le site web en Svelte 5 + Vite et TailwindCSS sans SvelteKit
|
|
- Un dossier /app pour l'application Flutter avec Hive pour stocker en local les données de l'utilisateur
|
|
- Un dossier /api pour l'API PHP 8.3 avec une base de données centrale MariaDB 11
|
|
|
|
### Structure des Dossiers
|
|
|
|
#### Application Flutter (/app)
|
|
|
|
- **/lib/core/data/models/** : Modèles de données avec annotations Hive pour le stockage local
|
|
- **/lib/core/repositories/** : Gestion des données et communication avec l'API
|
|
- **/lib/core/services/** : Services d'API, de synchronisation et utilitaires
|
|
- **/lib/core/constants/** : Constantes de l'application, clés API et endpoints
|
|
- **/lib/presentation/** : Interface utilisateur, pages et widgets
|
|
- **/lib/chat/** : Fonctionnalités de messagerie
|
|
|
|
#### API PHP (/api)
|
|
|
|
- **/src/Controllers/** : Contrôleurs pour les différentes fonctionnalités
|
|
- **/src/Core/** : Classes de base pour la gestion des requêtes, sessions, etc.
|
|
- **/src/Services/** : Services pour l'authentification, le chiffrement, etc.
|
|
|
|
### Composants Principaux
|
|
|
|
#### Gestion des Utilisateurs et Authentification
|
|
|
|
- **UserRepository** : Gère les utilisateurs, l'authentification et les sessions
|
|
- **ApiService** : Communication avec l'API, gestion des tokens de session
|
|
- **Session** (PHP) : Gestion des sessions côté serveur
|
|
- **LoginController** (PHP) : Authentification et déconnexion
|
|
|
|
#### Stockage Local avec Hive
|
|
|
|
- **UserModel** : Modèle utilisateur avec annotations Hive (typeId: 0)
|
|
- **AmicaleModel** : Modèle pour les amicales (typeId: 11)
|
|
- **OperationModel**, **SectorModel**, **PassageModel** : Modèles pour les opérations de terrain
|
|
|
|
#### Interface Utilisateur
|
|
|
|
- **LoginPage** : Page de connexion avec détection du type d'utilisateur
|
|
- **SplashPage** : Page de démarrage et initialisation
|
|
- **EntiteForm** : Formulaire de gestion des amicales avec géolocalisation automatique
|
|
|
|
#### Géolocalisation et Cartographie
|
|
|
|
- **MapboxMap** : Widget de carte pour afficher la position des amicales
|
|
- **findFireStationCoordinates** : Service API pour localiser les casernes de pompiers via adresse.gouv.fr
|
|
|
|
## Technologies et Frameworks
|
|
|
|
### Langages de Programmation
|
|
|
|
- **Dart** : Pour l'application Flutter
|
|
- **PHP 8.3** : Pour l'API backend
|
|
- **JavaScript/TypeScript** : Pour le site web Svelte
|
|
|
|
### Frameworks et Bibliothèques
|
|
|
|
- **Flutter** : Framework UI cross-platform
|
|
- **Hive** : Base de données NoSQL locale pour Flutter
|
|
- **Dio** : Client HTTP pour les requêtes API
|
|
- **GoRouter** : Navigation et routage dans Flutter
|
|
- **Svelte 5** : Framework UI pour le site web
|
|
- **Flutter Map** : Bibliothèque de cartographie pour Flutter
|
|
|
|
### APIs Externes
|
|
|
|
- **API Adresse.gouv.fr** : Utilisée pour la géolocalisation des adresses et des casernes de pompiers
|
|
- **Stripe API** : Intégration pour les paiements par carte bancaire (commission de 1.4%)
|
|
|
|
### Base de Données
|
|
|
|
- **Type**: MariaDB
|
|
- **Version**: 11
|
|
- **Schéma**: Structure principale dans `docs/geo_app.dump` avec tables pour utilisateurs, opérations, secteurs, passages
|
|
- **Stockage Local**: Hive pour le stockage local dans l'application Flutter
|
|
|
|
### Outils de Développement
|
|
|
|
- **Gestionnaire de Paquets**: [Composer]
|
|
- **Outils de Build**: [Webpack / Vite / Flutter CLI]
|
|
- **Outils de Test**: [PHPUnit / Jest / Flutter Test]
|
|
- **Linters/Formatters**: [PHP_CodeSniffer / ESLint / Dart Analyzer]
|
|
|
|
## Conventions de Code
|
|
|
|
### Style de Code
|
|
|
|
- [PSR-12 pour PHP]
|
|
|
|
### Conventions de Nommage
|
|
|
|
- **Classes**: [PascalCase]
|
|
- **Méthodes/Fonctions**: [camelCase]
|
|
- **Variables**: [camelCase]
|
|
- **Constantes**: [UPPER_SNAKE_CASE]
|
|
- **Fichiers**: [kebab-case.ext / PascalCase.ext]
|
|
|
|
### Pratiques Spécifiques au Projet
|
|
|
|
- Chiffrement des données sensibles (noms, emails, téléphones) dans la base de données
|
|
- Mise à jour automatique des coordonnées GPS lors des changements d'adresse
|
|
- Confirmation utilisateur pour les actions ayant un impact financier (activation Stripe)
|
|
|
|
## Flux de Travail et Processus de Développement
|
|
|
|
### Branches GitLab
|
|
|
|
- **main**: Code stable prêt pour la production
|
|
- **develop**: Branche d'intégration pour les fonctionnalités en cours de développement
|
|
- **feature/[feature-name]**: Branches de développement pour les nouvelles fonctionnalités
|
|
- Exemple: `feature/geolocalisation-casernes` pour l'ajout de la géolocalisation des casernes
|
|
- **bugfix/[bug-name]**: Branches pour les corrections de bugs
|
|
- **release/[version]**: Branches de préparation des versions
|
|
|
|
### Processus de Merge Request
|
|
|
|
1. Créer une branche à partir de `main` ou `develop` selon la nature du changement
|
|
|
|
```bash
|
|
git checkout -b feature/nom-de-la-fonctionnalite main
|
|
```
|
|
|
|
2. Développer la fonctionnalité ou correction avec des commits atomiques
|
|
|
|
```bash
|
|
git add fichier1 fichier2
|
|
git commit -m "Description claire du changement"
|
|
```
|
|
|
|
3. Pousser la branche vers le dépôt distant
|
|
|
|
```bash
|
|
git push -u origin feature/nom-de-la-fonctionnalite
|
|
```
|
|
|
|
4. Créer une Merge Request via l'interface GitLab ou en utilisant l'URL fournie
|
|
|
|
- URL: `http://51.68.36.203/d6soft/geosector/-/merge_requests/new?merge_request%5Bsource_branch%5D=feature/nom-de-la-fonctionnalite`
|
|
|
|
5. Attendre la revue de code et les validations CI/CD
|
|
|
|
6. Une fois approuvée, fusionner la branche:
|
|
```bash
|
|
git checkout main
|
|
git merge feature/nom-de-la-fonctionnalite
|
|
git push origin main
|
|
```
|
|
|
|
### CI/CD Pipeline
|
|
|
|
Le projet utilise un pipeline CI/CD GitLab pour automatiser les tests et le déploiement:
|
|
|
|
1. **Build**: Compilation du code et vérification de la syntaxe
|
|
|
|
- PHP: Vérification de la syntaxe et des dépendances Composer
|
|
- Flutter: Compilation et génération des assets
|
|
|
|
2. **Test**: Exécution des tests automatisés
|
|
|
|
- Tests unitaires pour l'API PHP
|
|
- Tests de widgets pour l'application Flutter
|
|
|
|
3. **Deploy**: Déploiement automatique vers les environnements
|
|
- Déploiement vers DEV après chaque merge dans `develop`
|
|
- Déploiement vers RECETTE après validation manuelle
|
|
- Déploiement vers PROD après validation manuelle sur une MR vers `main`
|
|
|
|
## Intégration avec GitLab
|
|
|
|
### Issues et Kanban
|
|
|
|
- **Labels**:
|
|
|
|
- `feature`: Nouvelles fonctionnalités
|
|
- `bug`: Corrections de bugs
|
|
- `enhancement`: Améliorations de fonctionnalités existantes
|
|
- `documentation`: Mises à jour de la documentation
|
|
- `api`: Modifications de l'API
|
|
- `ui`: Modifications de l'interface utilisateur
|
|
- `priority:high`: Priorité élevée
|
|
- `priority:medium`: Priorité moyenne
|
|
- `priority:low`: Priorité basse
|
|
|
|
- **Milestones**:
|
|
|
|
- Organisées par versions majeures (1.0, 1.1, etc.)
|
|
- Chaque milestone contient les issues prévues pour la version
|
|
- Date d'échéance définie pour chaque milestone
|
|
|
|
- **Boards**:
|
|
- **Backlog**: Issues à traiter dans le futur
|
|
- **To Do**: Issues prêtes à être développées
|
|
- **In Progress**: Issues en cours de développement
|
|
- **Review**: Issues en attente de revue de code
|
|
- **Done**: Issues terminées et déployées
|
|
|
|
### Automatisations
|
|
|
|
- **Webhooks**: Notifications automatiques dans Slack pour les événements importants
|
|
|
|
- Nouvelles Merge Requests
|
|
- Commentaires sur les MRs
|
|
- Builds échoués
|
|
- Déploiements réussis
|
|
|
|
- **Merge Request Templates**: Templates prédéfinis pour les MRs avec:
|
|
|
|
- Description de la fonctionnalité
|
|
- Checklist de vérification
|
|
- Instructions de test
|
|
- Captures d'écran (si applicable)
|
|
|
|
- **CI/CD Automatisé**: Déclenchement automatique des pipelines sur:
|
|
- Push vers une branche
|
|
- Création d'une Merge Request
|
|
- Mise à jour d'une Merge Request
|
|
|
|
## Déploiement
|
|
|
|
### Environnements
|
|
|
|
- Un environnement DEV dans un container Incus Alpine distant dva-geo
|
|
- Un environnement RECETTE dans un container Incus Alpine distant rca-geo
|
|
- Un environnement PROD dans un container Incus Alpine distant pra-geo
|
|
|
|
### Processus de Déploiement
|
|
|
|
- Un script /web/deploy-web.sh pour déployer le site Web sur l'environnement DEV
|
|
- Un script /app/deploy-app.sh pour déployer l'application Flutter Web sur l'environnement DEV
|
|
- Un script /api/deploy-api.sh pour déployer l'API PHP sur l'environnement DEV
|
|
|
|
- Un script /web/livre-web.sh $0 $1 pour livrer le site web d'un environnement $0 à l'autre $1
|
|
- Un script /app/livre-app.sh $0 $1 pour livrer l'application Flutter Web d'un environnement $0 à l'autre $1
|
|
- Un script /api/livre-api.sh $0 $1 pour livrer l'API PHP d'un environnement $0 à l'autre $1
|
|
|
|
## Ressources et Documentation
|
|
|
|
### Documentation Interne
|
|
|
|
- [Liens vers la documentation interne]
|
|
|
|
### API Documentation
|
|
|
|
- [Liens vers la documentation API (Swagger/OpenAPI)]
|
|
|
|
### Ressources Externes
|
|
|
|
- [Liens vers des ressources externes pertinentes]
|
|
|
|
## Contacts
|
|
|
|
### Équipe Principale
|
|
|
|
- **[Nom]**: [Rôle] - [Email/GitLab username]
|
|
|
|
### Parties Prenantes
|
|
|
|
- **[Nom]**: [Rôle/Organisation] - [Contact]
|
|
|
|
## Historique des Versions
|
|
|
|
| Version | Date | Description |
|
|
| ------- | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
| 1.0.0 | 01/03/2025 | Version initiale du projet |
|
|
| 1.1.0 | 16/05/2025 | Ajout de la géolocalisation automatique des casernes de pompiers via API adresse.gouv.fr, amélioration du formulaire EntiteForm avec confirmation pour l'activation des paiements Stripe, mise à jour automatique des coordonnées GPS lors des changements d'adresse |
|