- 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>
3.4 KiB
Executable File
3.4 KiB
Executable File
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Directives importantes
- Langue : Toujours répondre en français
- Approche de travail :
- Travailler par étapes claires et structurées
- TOUJOURS présenter et proposer les modifications avant de les implémenter
- Attendre la validation de l'utilisateur avant de modifier le code
- Expliquer le problème identifié et la solution proposée
- Vérification du schéma : TOUJOURS vérifier
docs/geo_app.sqlavant de faire des modifications sur les tables de la base de données
Build Commands
- Install dependencies:
composer install- install PHP dependencies - Update dependencies:
composer update- update PHP dependencies to latest versions - Deploy to REC:
./livre-api.sh rec- deploy from DVA to RECETTE environment - Deploy to PROD:
./livre-api.sh prod- deploy from RECETTE to PRODUCTION environment - Export operations:
php export_operation.php- export operations data
Code Architecture
This is a PHP 8.3 API without framework, using a custom MVC-like architecture:
- Entry point:
index.phphandles all requests through custom Router - Core components:
Router: Maps URLs to controller methods, handles HTTP methodsDatabase: PDO wrapper for MariaDB connectionsSession: Secure session managementRequest/Response: HTTP request/response handling
- Controllers: Located in
src/Controllers/, handle business logic - Services: Located in
src/Services/, provide reusable functionality (logging, email, exports) - Configuration:
src/Config/AppConfig.php- singleton configuration management
Key Patterns
- No framework dependency - pure PHP 8.3 with composer autoloading
- PDO for database access with prepared statements
- RESTful API design with JSON responses
- CORS handling for cross-origin requests
- Session-based authentication
- File uploads handled in
uploads/directory - Logs stored in
logs/directory
Database
- MariaDB 10.11 with InnoDB tables
- Migration scripts in
scripts/php/migrate_*.php - Schema comparison tool:
scripts/python/compare_schemas.py - Database sync:
scripts/cron/sync_databases.php
Security Considerations
- Session cookies with httponly, secure flags
- CORS configured for specific origins
- XSS, clickjacking protection headers
- PDO prepared statements for SQL injection prevention
- File upload validation in FileService
Bonnes pratiques spécifiques
Gestion des transactions PDO
- Toujours vérifier
$db->inTransaction()avant d'appelerrollBack() - Encadrer les opérations critiques dans des try/catch avec transaction
Paramètres SQL
- Utiliser des noms de paramètres uniques dans les requêtes SQL
- Ne jamais réutiliser le même nom de paramètre plusieurs fois dans une requête
- Exemple :
:sector_polygon1,:sector_polygon2au lieu de:sector_polygonrépété
Format des réponses API
- Les données doivent être placées à la racine de la réponse JSON, pas dans un groupe "data"
- Suivre le modèle de
LoginControllerpour la structure des réponses - Retourner des objets complets, pas seulement des IDs (ex: sector complet, pas sector_id)
Gestion des sessions
- La session stocke
entity_iddepuisfk_entitelors du login - Utiliser
Session::getEntityId()pour récupérer l'ID de l'entité - L'authentification utilise des Bearer tokens contenant le session_id