feat: calculateur de frais de déplacement - backend et modèles Flutter

- Cloud Function travel.js : autocomplete Google Places + calcul itinéraires
  via Google Routes API avec péages Ulys /legs (precision=6) + /rate
- Modèles : VehicleModel, DepotModel, RouteResultModel + FuelPrices
- Services : VehicleService, TravelService (Firestore CRUD + API calls)
- Gestion des données : 3 nouveaux onglets (Dépôts, Véhicules, Prix carburants)
- Autocomplétion adresse dans le formulaire événement
- Dialog calcul frais : config + carte flutter_map OSM + sélection itinéraire
- Injection option FRAIS_KM dans l'événement à la sélection
- flutter_map 7.0.2 + latlong2 0.9.1 ajoutés
- npm: csv-parser + @mapbox/polyline installés dans functions
This commit is contained in:
ElPoyo
2026-06-04 14:28:22 +02:00
parent bc93f3fa9a
commit e14b333a67
22 changed files with 3940 additions and 24 deletions
+18
View File
@@ -3,6 +3,9 @@ import 'package:em2rp/utils/colors.dart';
import 'package:em2rp/views/widgets/data_management/event_types_management.dart';
import 'package:em2rp/views/widgets/data_management/options_management.dart';
import 'package:em2rp/views/widgets/data_management/events_export.dart';
import 'package:em2rp/views/widgets/data_management/depot_management.dart';
import 'package:em2rp/views/widgets/data_management/vehicles_management.dart';
import 'package:em2rp/views/widgets/data_management/fuel_prices_management.dart';
import 'package:em2rp/views/widgets/nav/main_drawer.dart';
import 'package:em2rp/views/widgets/nav/custom_app_bar.dart';
import 'package:em2rp/utils/permission_gate.dart';
@@ -32,6 +35,21 @@ class _DataManagementPageState extends State<DataManagementPage> {
icon: Icons.file_download,
widget: const EventsExport(),
),
DataCategory(
title: 'Dépôts',
icon: Icons.warehouse_outlined,
widget: const DepotManagement(),
),
DataCategory(
title: 'Véhicules',
icon: Icons.directions_car_outlined,
widget: const VehiclesManagement(),
),
DataCategory(
title: 'Prix carburants',
icon: Icons.local_gas_station,
widget: const FuelPricesManagement(),
),
];
@override