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; } 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 = { export const statsPenalesDesc = {
label: "Stats Pénales", label: "Stats Pénales",
stats: { stats: {
@ -149,6 +168,19 @@ export const statsPenalesDesc = {
unit: " jours", unit: " jours",
valueMaxFractioDigits: 0, valueMaxFractioDigits: 0,
}, },
amendes: {
label: "Amendes",
stats: {
tc: {
label: "Tribunal Correctionnel",
stats: statsAmendesDesc,
},
tp: {
label: "Tribunal de Police",
stats: statsAmendesDesc,
},
},
},
}, },
} as const; } as const;

View file

@ -67,6 +67,20 @@ export function computeStatsPenales(familles: Famille[]): StatsPenales {
const famillesAvecInfoProceduresPenales: FamilleAvecInfoProceduresPenales[] = const famillesAvecInfoProceduresPenales: FamilleAvecInfoProceduresPenales[] =
famillesResistantesOuEx.map(computeFamilleAvecInfosProceduresPenales); 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 = { const statsPenales: StatsPenales = {
nbFamillesMisesEnDemeure: nbFamillesAvecPagesLiees(famillesMisesEnDemeure), nbFamillesMisesEnDemeure: nbFamillesAvecPagesLiees(famillesMisesEnDemeure),
nbFamillesAvecProcedurePenale: nbFamillesAvecPagesLiees( nbFamillesAvecProcedurePenale: nbFamillesAvecPagesLiees(
@ -154,6 +168,44 @@ export function computeStatsPenales(familles: Famille[]): StatsPenales {
computeIntervalProcureurTribunalCorrectionnel( computeIntervalProcureurTribunalCorrectionnel(
famillesAvecInfoProceduresPenales 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; return statsPenales;
} }