Évite d'embarquer les artefacts .NET (~220 Mo) et les bases SQLite locales dans le
contexte de build de l'image backend. Build de l'image API validé sans le projet de tests.
Évite un conflit avec une instance existante sur 8080. Seul le port HÔTE change
(2202:80) ; les ports internes des conteneurs (backend 8080) sont inchangés, donc
le proxy interne nginx -> backend n'est pas affecté. Auth__FrontendBaseUrl par défaut
et Caddyfile.example alignés sur 2202.
Configuration reverse_proxy vers l'IP de la machine Docker (port 8080 publié par le
compose), en-têtes X-Forwarded-*, sonde /health, et recommandations de sécurité
(restreindre le port 8080 à l'IP de Caddy / réseau privé) pour éviter un accès HTTP
direct contournant le TLS.
- Retire app.UseHttpsRedirection() : le conteneur écoute en HTTP, la terminaison
TLS est assurée par le reverse-proxy (Caddy) placé devant. Évite les redirections
parasites derrière le proxy.
- Ajoute Caddyfile.example (Caddy devant le compose existant : TLS auto + reverse_proxy
vers le frontend nginx qui sert l'app et proxifie /api).
- .env.example : précise AUTH_FRONTEND_BASE_URL = URL publique HTTPS en production
(liens de réinitialisation de mot de passe).
- 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.