- Nouveau parametre global Precision_Distance (sous-menu Application de la Page_Parametrage, entre Compte et Vehicules), persiste via une entite singleton ParametresApplication, expose par GET/PUT /api/parametres-application - Arrondi superieur (ceiling) applique a l'affichage et aux agregats : trajet simple, aller/retour (arrondi puis doublement), totaux jour/mois/annee, carte, export PDF et bareme kilometrique - jamais a la distance brute stockee - Refonte du Montant_Previsionnel : le montant mensuel (80%) porte desormais sur le seul mois affiche (tranche determinee par le cumul annuel) ; nouvelle ligne Montant_Previsionnel_Annuel (100%, sans minoration, sur le cumul) - Backend : PrecisionDistanceService (ArrondirDistance), integration dans ResumeService/TotauxService/RemboursementService/MontantRegleService, migration EF Core ; 7 tests de propriete (FsCheck) + tests existants, 62/62 verts - Frontend : ParametresApplicationService (signal partage), composant de parametrage, fonction miroir arrondirDistance, adaptation de la liste des trajets, du panneau des totaux, de la carte et des montants regles - Specs : nouvelle spec precision-distances-km (requirements/design/tasks) ; mise a jour de requirements.md, design.md et design-requirements.md de schotziad-km-tracker (Requirement 22, renvois croises, Montant_Previsionnel) - Suppression du fichier chromium .deb suivi par erreur dans le depot
637 lines
26 KiB
JSON
637 lines
26 KiB
JSON
{
|
||
"pbtResults": {},
|
||
"executionHistory": {
|
||
"1. Backend — Entité `ParametresApplication` et migration EF Core": [
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790324603235
|
||
},
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790324614373
|
||
},
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790324711242
|
||
}
|
||
],
|
||
"2.1 Créer l'exception `Services/Exceptions/PrecisionDistanceInvalideException.cs` (même modèle que `MontantRegleNegatifException`)": [
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790324603514
|
||
},
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790324715209
|
||
},
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790324763012
|
||
}
|
||
],
|
||
"2.2 Créer `Services/IPrecisionDistanceService.cs` (`ObtenirAsync`, `DefinirAsync`, `ArrondirDistance`)": [
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790324603633
|
||
},
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790324767607
|
||
},
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790324819140
|
||
}
|
||
],
|
||
"2.3 Implémenter `Services/PrecisionDistanceService.cs`": [
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790324603727
|
||
},
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790324824384
|
||
},
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790324882607
|
||
}
|
||
],
|
||
"3.1 Créer `Models/DTOs/ParametresApplicationDtos.cs` (`ParametresApplicationDto`, `SavePrecisionDistanceDto`)": [
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790324603798
|
||
},
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790324892736
|
||
},
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790324931371
|
||
}
|
||
],
|
||
"3.2 Créer `Controllers/ParametresApplicationController.cs` (GET/PUT `api/parametres-application`, mapping `PrecisionDistanceInvalideException` → 400)": [
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790324603868
|
||
},
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790324949397
|
||
},
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790325012025
|
||
}
|
||
],
|
||
"3.3 Enregistrer `IPrecisionDistanceService`/`PrecisionDistanceService` dans `Program.cs` (`AddScoped`, section services métier)": [
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790324603948
|
||
},
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790325016241
|
||
},
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790325065910
|
||
}
|
||
],
|
||
"4. Checkpoint — Ensure all tests pass": [
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790324604002
|
||
},
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790325074171
|
||
},
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790325267173
|
||
}
|
||
],
|
||
"5.1 Modifier `Services/ResumeService.cs` : injecter `IPrecisionDistanceService`, appliquer `ArrondirDistance(Distance, precision) × (AllerRetour ? 2 : 1)` par trajet dans `ConstruireResumeMensuel`, exposer `TrajetDto.Distance` déjà arrondi, sommer les valeurs déjà arrondies pour `TotalKm` sans second arrondi": [
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790324604065
|
||
},
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790325283389
|
||
},
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790325405943
|
||
}
|
||
],
|
||
"5.2 Modifier `Services/TotauxService.cs` : injecter `IPrecisionDistanceService`, remplacer la fonction locale `Effective(distance, allerRetour)` par l'arrondi avant doublement, supprimer le `Math.Round(..., 2, ...)` final existant sur `TotalJour`/`TotalMois`/`TotalAnnuelPartiel`": [
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790324604119
|
||
},
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790325285149
|
||
},
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790325407417
|
||
}
|
||
],
|
||
"5.3 Modifier `Services/RemboursementService.cs` : injecter `IPrecisionDistanceService`, construire `kmMoisMap` à partir des distances arrondies par trajet (au lieu de la distance brute), garantissant `totalKmAnnuel` et chaque `KmMois` comme sommes de distances déjà arrondies": [
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790324604176
|
||
},
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790325286774
|
||
},
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790325409159
|
||
}
|
||
],
|
||
"6.1 Créer/modifier le DTO `MontantPrevisionnelDto` (`TotalMoisKm`, `TotalAnnuelPartielKm`, `MontantPrevisionnelMensuel`, `MontantPrevisionnelAnnuel`) dans `Models/DTOs/`": [
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790324604233
|
||
},
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790325415845
|
||
},
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790325475007
|
||
}
|
||
],
|
||
"6.2 Modifier `Services/IMontantRegleService.cs` et `Services/MontantRegleService.cs` : injecter `IPrecisionDistanceService`, calculer `totalMoisAffiche`/`totalAnnuelPartiel` à partir des distances arrondies, déterminer la tranche via le cumul annuel (`baremeAnnuel`), appliquer son coefficient/base au total du mois pour `MontantPrevisionnelMensuel` (80%), calculer `MontantPrevisionnelAnnuel` (100% sur le cumul)": [
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790324604288
|
||
},
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790325477020
|
||
},
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790325597163
|
||
}
|
||
],
|
||
"7.1 Vérifier/corriger l'endpoint trajets/journée (`ITrajetService`/`TrajetsController`, méthode consommée par `TrajetService.getTrajetsJournee`) pour renvoyer la Distance_Effective_Arrondie via `IPrecisionDistanceService`": [
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790324604402
|
||
},
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790325603594
|
||
},
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790325715537
|
||
}
|
||
],
|
||
"7.2 Vérifier `Services/PdfService.cs` (`AssemblerModeleMensuelAsync`, composition des tables mensuelle/annuelle) : confirmer qu'aucun recalcul de distance brute ne subsiste et que le modèle assemblé provient intégralement de `IResumeService`/`IRemboursementService` déjà corrigés": [
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790324604453
|
||
},
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790325605135
|
||
},
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790325717074
|
||
}
|
||
],
|
||
"8. Checkpoint — Ensure all tests pass": [
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790324604508
|
||
},
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790325722240
|
||
},
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790326716373
|
||
}
|
||
],
|
||
"9.1 Créer `core/models/parametres-application.model.ts` (`ParametresApplication { precisionDistanceKm: number }`)": [
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790324604565
|
||
},
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790326726636
|
||
},
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790326790793
|
||
}
|
||
],
|
||
"9.2 Créer `core/services/parametres-application.service.ts` (`ParametresApplicationService` : signal partagé `precisionDistance`, `charger()`, `definirPrecisionDistance()`)": [
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790324604619
|
||
},
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790326796128
|
||
},
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790326877000
|
||
}
|
||
],
|
||
"9.3 Créer `shared/utils/arrondir-distance.ts` (`arrondirDistance`, `distanceEffectiveArrondie`), miroir exact de la formule backend": [
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790324604682
|
||
},
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790326882045
|
||
},
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790326945574
|
||
}
|
||
],
|
||
"10.1 Créer `features/parametres-application/parametres-application.component.ts` (+ `.html`, `.scss`) : sélection 0/1/2, présélection de la valeur courante, confirmation de succès, restauration + notification d'erreur en cas d'échec": [
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790324604751
|
||
},
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790326959853
|
||
},
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790327069685
|
||
}
|
||
],
|
||
"10.2 Ajouter la route `/parametrage/application` dans `app.routes.ts`, entre `compte` et `vehicules`, gardée uniquement par `authGuard` (pas `profilConfigureGuard`)": [
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790324604815
|
||
},
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790327075529
|
||
},
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790327196670
|
||
}
|
||
],
|
||
"10.3 Ajouter le lien « Application » entre « Compte » et « Véhicules » dans `features/parametrage/parametrage.component.html`": [
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790324604873
|
||
},
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790327076628
|
||
},
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790327197485
|
||
}
|
||
],
|
||
"11.1 Modifier `app.component.ts` pour appeler `ParametresApplicationService.charger()` au même moment que le chargement du profil (effect déclenché à l'authentification)": [
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790324604952
|
||
},
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790327204036
|
||
},
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790327280212
|
||
}
|
||
],
|
||
"12. Checkpoint — Ensure all tests pass": [
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790324605014
|
||
},
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790327287107
|
||
},
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790327678359
|
||
}
|
||
],
|
||
"13.1 Modifier `features/trajet-list/trajet-list.component.ts` (méthode `distanceAffichee`) : formater selon `ParametresApplicationService.precisionDistance()` au lieu d'un arrondi fixe à 2 décimales": [
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790324605079
|
||
},
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790327683970
|
||
},
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790327885223
|
||
}
|
||
],
|
||
"13.2 Modifier `features/panneau-totaux/panneau-totaux.component.ts` + `.html` : format dynamique des distances basé sur `precisionDistance()`, ajout de la ligne « Montant prévisionnel annuel » sous l'indication de versement mensuelle, consommation de `montantPrevisionnelMensuel`/`montantPrevisionnelAnnuel`": [
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790324605136
|
||
},
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790327686156
|
||
},
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790327882270
|
||
}
|
||
],
|
||
"13.3 Modifier `features/carte-trajets/carte-trajets.component.ts` (méthode `contenuInfobulle`) : `toFixed(precision)` dynamique basé sur `ParametresApplicationService.precisionDistance()`": [
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790324605196
|
||
},
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790327687238
|
||
},
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790327880538
|
||
}
|
||
],
|
||
"13.4 Modifier `features/montants-regles/montants-regles.component.ts` : lire `montantPrevisionnelMensuel` au lieu de `montantPrevisionnel`": [
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790324605263
|
||
},
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790327688307
|
||
},
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790327883770
|
||
}
|
||
],
|
||
"14. Checkpoint final — Ensure all tests pass": [
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790324605326
|
||
},
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790327893936
|
||
},
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790328182621
|
||
}
|
||
],
|
||
"15.1 Exécuter le build backend (`dotnet build`) et le build frontend (`ng build` / `npm run build`), corriger toute erreur de compilation résultant des changements de DTO/modèle": [
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790324605386
|
||
},
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790328189219
|
||
},
|
||
{
|
||
"executionId": "7dd406e6-29f8-4020-98c1-c18461c20a8a",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790329414209
|
||
}
|
||
],
|
||
"15.2 Exécuter l'ensemble des tests backend (`dotnet test`) et frontend (`ng test` / `vitest --run`), vérifier que toutes les propriétés et tous les tests unitaires/intégration passent": [
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790324605452
|
||
},
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790328190132
|
||
},
|
||
{
|
||
"executionId": "7dd406e6-29f8-4020-98c1-c18461c20a8a",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790329415260
|
||
}
|
||
],
|
||
"2. Backend — Service de précision et exception métier": [
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790324882738
|
||
}
|
||
],
|
||
"3. Backend — DTOs et contrôleur `ParametresApplicationController`": [
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790325065987
|
||
}
|
||
],
|
||
"5. Backend — Intégration de l'arrondi dans les services d'agrégation existants": [
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790325409224
|
||
}
|
||
],
|
||
"6. Backend — Refonte de `MontantRegleService.GetMontantPrevisionnelAsync`": [
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790325597233
|
||
}
|
||
],
|
||
"7. Backend — Cohérence carte et export PDF": [
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790325717153
|
||
}
|
||
],
|
||
"2.4 Écrire les tests de propriété pour `PrecisionDistanceService`": [
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790325995274
|
||
}
|
||
],
|
||
"5.4 Écrire le test de propriété pour la sommation": [
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790325995448
|
||
}
|
||
],
|
||
"5.5 Écrire le test unitaire de l'exemple chiffré Aller_Retour": [
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790325996594
|
||
}
|
||
],
|
||
"6.3 Écrire les tests de propriété pour le calcul prévisionnel": [
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790325997191
|
||
}
|
||
],
|
||
"9. Frontend — Modèle, service et utilitaire d'arrondi": [
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790326945673
|
||
}
|
||
],
|
||
"10. Frontend — Composant `ParametresApplicationComponent` et route/menu": [
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790327197551
|
||
}
|
||
],
|
||
"11. Frontend — Chargement initial dans `AppComponent`": [
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790327280285
|
||
}
|
||
],
|
||
"13. Frontend — Adaptation des composants consommateurs": [
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790327885292
|
||
}
|
||
],
|
||
"9.5 Mettre à jour `core/models/bareme.model.ts` et `core/services/bareme.service.ts` avec les nouveaux champs `MontantPrevisionnel` (`totalMoisKm`, `totalAnnuelPartielKm`, `montantPrevisionnelMensuel`, `montantPrevisionnelAnnuel`)": [
|
||
{
|
||
"executionId": "0004c7a8-345c-45b5-8865-a79b13f348d0",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790327886765
|
||
}
|
||
],
|
||
"15. Vérification finale": [
|
||
{
|
||
"executionId": "7dd406e6-29f8-4020-98c1-c18461c20a8a",
|
||
"chatSessionId": "sess_20c9bee5-b332-43f8-922c-20b9225bb8d8",
|
||
"timestamp": 1790329415401
|
||
}
|
||
]
|
||
}
|
||
} |