feat: ajout stat Amendes

This commit is contained in:
Sébastien Arod 2025-06-13 13:19:52 +02:00
parent beb69eacac
commit f2d2744b6d
2 changed files with 84 additions and 0 deletions

View file

@ -24,6 +24,25 @@ export const statsTribunalCorrectionnelDesc = {
},
} as const;
const statsAmendesDesc = {
amendeMinAvecSursi: {
label: "Amende avec sursi minimale",
unit: "€",
},
amendeMaxAvecSursi: {
label: "Amende avec sursi maximale",
unit: "€",
},
amendeMinFerme: {
label: "Amende ferme minimale",
unit: "€",
},
amendeMaxFerme: {
label: "Amende ferme maximale",
unit: "€",
},
} as const;
export const statsPenalesDesc = {
label: "Stats Pénales",
stats: {
@ -149,6 +168,19 @@ export const statsPenalesDesc = {
unit: " jours",
valueMaxFractioDigits: 0,
},
amendes: {
label: "Amendes",
stats: {
tc: {
label: "Tribunal Correctionnel",
stats: statsAmendesDesc,
},
tp: {
label: "Tribunal de Police",
stats: statsAmendesDesc,
},
},
},
},
} as const;

View file

@ -67,6 +67,20 @@ export function computeStatsPenales(familles: Famille[]): StatsPenales {
const famillesAvecInfoProceduresPenales: FamilleAvecInfoProceduresPenales[] =
famillesResistantesOuEx.map(computeFamilleAvecInfosProceduresPenales);
const amendesTC = famillesResistantesOuEx
.flatMap((f) =>
f.EvenementsEL.filter((e) => e.Type === "Tribunal correctionnel")
)
.flatMap((e) => e.Amendes)
.filter((e) => !isNaN(e.Montant));
const amendesTP = famillesResistantesOuEx
.flatMap((f) =>
f.EvenementsEL.filter((e) => e.Type === "Tribunal de police judiciaire")
)
.flatMap((e) => e.Amendes)
.filter((e) => !isNaN(e.Montant));
const statsPenales: StatsPenales = {
nbFamillesMisesEnDemeure: nbFamillesAvecPagesLiees(famillesMisesEnDemeure),
nbFamillesAvecProcedurePenale: nbFamillesAvecPagesLiees(
@ -154,6 +168,44 @@ export function computeStatsPenales(familles: Famille[]): StatsPenales {
computeIntervalProcureurTribunalCorrectionnel(
famillesAvecInfoProceduresPenales
),
amendes: {
tc: {
amendeMinAvecSursi: Math.min(
...amendesTC
.filter((a) => a.Type === "avec sursis")
.map((a) => a.Montant)
),
amendeMaxAvecSursi: Math.max(
...amendesTC
.filter((a) => a.Type === "avec sursis")
.map((a) => a.Montant)
),
amendeMinFerme: Math.min(
...amendesTC.filter((a) => a.Type === "ferme").map((a) => a.Montant)
),
amendeMaxFerme: Math.max(
...amendesTC.filter((a) => a.Type === "ferme").map((a) => a.Montant)
),
},
tp: {
amendeMinAvecSursi: Math.min(
...amendesTP
.filter((a) => a.Type === "avec sursis")
.map((a) => a.Montant)
),
amendeMaxAvecSursi: Math.max(
...amendesTP
.filter((a) => a.Type === "avec sursis")
.map((a) => a.Montant)
),
amendeMinFerme: Math.min(
...amendesTP.filter((a) => a.Type === "ferme").map((a) => a.Montant)
),
amendeMaxFerme: Math.max(
...amendesTP.filter((a) => a.Type === "ferme").map((a) => a.Montant)
),
},
},
};
return statsPenales;
}