Remplace le job control (set -m) par un kill récursif de l'arbre de
process de chaque service (tuer_arbre via pgrep -P), évitant que les
réglages du terminal interactif (flèches, historique) ne soient altérés
après Ctrl+C. Ajout d'un stty sane de sécurité en fin de cleanup.
- run-dev.sh s'exécute dans sa propre session (setsid) et tue le GROUPE
de process entier au cleanup : le backend (Kestrel) et ses enfants
sont bien arrêtés, le port backend est réellement libéré à l'arrêt
- Port backend paramétrable via BACKEND_PORT (défaut 8080), transmis à
la fois au backend (dotnet --urls) et au proxy de dev du front
- Nouveau frontend/proxy.conf.js : ng serve relaie /api vers
http://localhost:${BACKEND_PORT} ; référencé dans angular.json (serve)
- environment.ts (dev) : apiUrl passe à '/api' (same-origin via proxy),
le port du backend n'est plus codé en dur dans le front
- Prod inchangée (environment.prod.ts déjà en '/api', nginx)
- Totaux : rafraîchissement immédiat du panneau (jour/mois/année + montant
prévisionnel) après création/modification/suppression/réordonnancement d'un
trajet, sans changer de jour (ViewChild + méthode publique rafraichir()).
- Trajets Aller/Retour : case à cocher au formulaire ; la distance comptée est
doublée (distance simple stockée + booléen AllerRetour, distance effective
utilisée dans tous les agrégats : totaux, résumés, barème, régularisation, PDF).
Migration TrajetAllerRetour. Badge « A/R » dans une colonne dédiée en début de
ligne pour garder date/adresses alignées.
- Mise en page de la page Trajets : vue à hauteur fixe où seule la liste défile ;
colonne gauche figée (sélecteur de date + navigation, totaux, carte) et bande
fixe (véhicule + bouton d'ajout) au-dessus de la liste. Layout applicatif global
en pleine hauteur (app.component).
- run-dev.sh : chargement de la clé JWT depuis .env (ou secret de dev aléatoire) et
Auth__FrontendBaseUrl sur le frontend dev ; rappel du lien de reset journalisé.
Build backend (solution) et frontend (production) OK.