feat: ajoute stats CRPC Acceptée/refusée

This commit is contained in:
sebastien.arod@gmail.com 2024-06-06 15:17:08 +02:00
parent b0b5a34701
commit 5bbfd14abf
5 changed files with 91 additions and 21 deletions

View file

@ -37,6 +37,7 @@ export function isProcedureCivile(evenement: EvenementFamille): boolean {
const categorieEvenement: { const categorieEvenement: {
[evt in TypeEvenement]: CategorieEvenement; [evt in TypeEvenement]: CategorieEvenement;
} = { } = {
// Procédure civile/social
["Signalement au procureur"]: "Procédure Civile", ["Signalement au procureur"]: "Procédure Civile",
["Classement social sans suite"]: "Procédure Civile", ["Classement social sans suite"]: "Procédure Civile",
["Enquête sociale"]: "Procédure Civile", ["Enquête sociale"]: "Procédure Civile",
@ -46,6 +47,7 @@ const categorieEvenement: {
["Assistance éducative"]: "Procédure Civile", ["Assistance éducative"]: "Procédure Civile",
["Contrôle forcé"]: "Procédure Civile", ["Contrôle forcé"]: "Procédure Civile",
// Procédure pénale
["Récidive gendarmerie"]: "Procédure Pénale", ["Récidive gendarmerie"]: "Procédure Pénale",
["Appel du jugement"]: "Procédure Pénale", ["Appel du jugement"]: "Procédure Pénale",
["Tribunal de police judiciaire"]: "Procédure Pénale", ["Tribunal de police judiciaire"]: "Procédure Pénale",
@ -61,9 +63,10 @@ const categorieEvenement: {
["Convocation CRPC"]: "Procédure Pénale", ["Convocation CRPC"]: "Procédure Pénale",
["Audience CRPC"]: "Procédure Pénale", ["Audience CRPC"]: "Procédure Pénale",
["Refus CRPC"]: "Procédure Pénale", ["Refus CRPC"]: "Procédure Pénale",
["Acceptation CRPC"]: "Procédure Pénale",
["Rappel à la loi"]: "Procédure Pénale", ["Rappel à la loi"]: "Procédure Pénale",
["Validation désobéissance"]: "Procédure Pénale", ["Validation désobéissance"]: "Procédure Pénale",
// Autre
["Plaidoirie"]: "Autre", ["Plaidoirie"]: "Autre",
["Refus de contrôle"]: "Autre", ["Refus de contrôle"]: "Autre",
["Administrateur AD'HOC"]: "Autre", ["Administrateur AD'HOC"]: "Autre",

View file

@ -20,6 +20,7 @@ export type TypeEvenement =
| "Plaidoirie" | "Plaidoirie"
| "Audience CRPC" | "Audience CRPC"
| "Refus CRPC" | "Refus CRPC"
| "Acceptation CRPC" // PLaceholder see does not exist in Notion yet // See https://discord.com/channels/990921361121746984/1245360366322585691/1248260713634336839
| "Audition des enfants" | "Audition des enfants"
| "Assistance éducative" | "Assistance éducative"
| "Contrôle forcé" | "Contrôle forcé"

View file

@ -72,6 +72,29 @@ const statPropsPublishOptions: {
notionPropName: "% procédure pénale avec CRPC", notionPropName: "% procédure pénale avec CRPC",
unit: "%", unit: "%",
}, },
nbFamillesCRPCAcceptee: {
notionPropName: "Nb familles avec CRPC acceptée",
},
pourcentageCRPCAcceptee: {
notionPropName: "% des CRPC qui sont acceptée",
unit: "%",
},
pourcentageFamillesCRPCAcceptee: {
notionPropName: "% familles avec CRPC acceptée",
unit: "%",
},
nbFamillesCRPCRefusee: {
notionPropName: "Nb familles avec CRPC refusée",
},
pourcentageCRPCRefusee: {
notionPropName: "% des CRPC qui sont refusée",
unit: "%",
},
pourcentageFamillesCRPCRefusee: {
notionPropName: "% familles avec CRPC refusée",
unit: "%",
},
nbFamillesProcedureCivile: { nbFamillesProcedureCivile: {
notionPropName: "Nb familles avec procédure civile", notionPropName: "Nb familles avec procédure civile",
}, },

View file

@ -6,21 +6,34 @@ export type ELStats = {
}; };
export type ELStatsAtDate<V> = { export type ELStatsAtDate<V> = {
// Résistance
nbFamilleResistantes: V; nbFamilleResistantes: V;
nbFamilleResistantesOrEx: V; nbFamilleResistantesOrEx: V;
dureeResistanceMoyenne: V; dureeResistanceMoyenne: V;
dureeResistanceMediane: V; dureeResistanceMediane: V;
pourcentageEntreeApresMiseEnDemeure: V;
// Pénale
nbFamillesMisesEnDemeure: V; nbFamillesMisesEnDemeure: V;
pourcentageFamillesMisesEnDemeure: V; pourcentageFamillesMisesEnDemeure: V;
pourcentageEntreeApresMiseEnDemeure: V;
nbFamillesProcedurePenale: V; nbFamillesProcedurePenale: V;
pourcentageFamillesProcedurePenale: V; pourcentageFamillesProcedurePenale: V;
nbFamillesCompositionPenale: V; nbFamillesCompositionPenale: V;
pourcentageFamillesCompositionPenale: V; pourcentageFamillesCompositionPenale: V;
pourcentageProcedurePenaleAvecCompositionPenale: V; pourcentageProcedurePenaleAvecCompositionPenale: V;
// Pénale > CRPC
nbFamillesCRPC: V; nbFamillesCRPC: V;
pourcentageFamillesCRPC: V; pourcentageFamillesCRPC: V;
pourcentageProcedurePenaleAvecCRPC: V; pourcentageProcedurePenaleAvecCRPC: V;
nbFamillesCRPCAcceptee: V;
pourcentageCRPCAcceptee: V;
pourcentageFamillesCRPCAcceptee: V;
nbFamillesCRPCRefusee: V;
pourcentageCRPCRefusee: V;
pourcentageFamillesCRPCRefusee: V;
// Civile
nbFamillesProcedureCivile: V; nbFamillesProcedureCivile: V;
pourcentageFamillesProcedureCivile: V; pourcentageFamillesProcedureCivile: V;
}; };

View file

@ -33,13 +33,6 @@ export function computeELStatsAtDate(
const nbFamillesMiseEnDemeure = familleResistantesOrEx.filter((f) => const nbFamillesMiseEnDemeure = familleResistantesOrEx.filter((f) =>
f.Evenements.find((e) => e.Type === "Mise en demeure de scolarisation") f.Evenements.find((e) => e.Type === "Mise en demeure de scolarisation")
).length; ).length;
const pourcentageFamillesMisesEnDemeure = percent(
nbFamillesMiseEnDemeure,
familleResistantesOrEx.length
);
const pourcentageEntreeApresMiseEnDemeure =
computePourcentageEntreeApresMiseEnDemeure(familleResistantesOrEx);
const famillesAvecProcedurePenale = familleResistantesOrEx.filter((famille) => const famillesAvecProcedurePenale = familleResistantesOrEx.filter((famille) =>
famille.Evenements.find( famille.Evenements.find(
@ -57,20 +50,28 @@ export function computeELStatsAtDate(
(evt) => isCRPC(evt) && isEvenementBefore(evt, asOfDate) (evt) => isCRPC(evt) && isEvenementBefore(evt, asOfDate)
) )
); );
const famillesAvecCRPCAcceptee = familleResistantesOrEx.filter((famille) =>
const pourcentageFamillesProcedurePenale = percent( famille.Evenements.find(
famillesAvecProcedurePenale.length, (evt) =>
familleResistantesOrEx.length isCRPC(evt) &&
evt.Type === "Acceptation CRPC" &&
isEvenementBefore(evt, asOfDate)
)
); );
const famillesAvecCRPCRefusee = familleResistantesOrEx.filter((famille) =>
famille.Evenements.find(
(evt) =>
isCRPC(evt) &&
evt.Type === "Refus CRPC" &&
isEvenementBefore(evt, asOfDate)
)
);
const famillesAvecProcedureCivile = familleResistantesOrEx.filter((famille) => const famillesAvecProcedureCivile = familleResistantesOrEx.filter((famille) =>
famille.Evenements.find( famille.Evenements.find(
(evt) => isProcedurePenale(evt) && isEvenementBefore(evt, asOfDate) (evt) => isProcedurePenale(evt) && isEvenementBefore(evt, asOfDate)
) )
); );
const pourcentageFamillesProcedureCivile = percent(
famillesAvecProcedureCivile.length,
familleResistantesOrEx.length
);
const actuelles: ELStatsAtDate<number> = { const actuelles: ELStatsAtDate<number> = {
nbFamilleResistantes: familleResistantes.length, nbFamilleResistantes: familleResistantes.length,
@ -80,11 +81,18 @@ export function computeELStatsAtDate(
dureeResistanceMediane: median(dureesResistances), dureeResistanceMediane: median(dureesResistances),
nbFamillesMisesEnDemeure: nbFamillesMiseEnDemeure, nbFamillesMisesEnDemeure: nbFamillesMiseEnDemeure,
pourcentageFamillesMisesEnDemeure: pourcentageFamillesMisesEnDemeure, pourcentageFamillesMisesEnDemeure: percent(
pourcentageEntreeApresMiseEnDemeure: pourcentageEntreeApresMiseEnDemeure, nbFamillesMiseEnDemeure,
familleResistantesOrEx.length
),
pourcentageEntreeApresMiseEnDemeure:
computePourcentageEntreeApresMiseEnDemeure(familleResistantesOrEx),
nbFamillesProcedurePenale: famillesAvecProcedurePenale.length, nbFamillesProcedurePenale: famillesAvecProcedurePenale.length,
pourcentageFamillesProcedurePenale: pourcentageFamillesProcedurePenale, pourcentageFamillesProcedurePenale: percent(
famillesAvecProcedurePenale.length,
familleResistantesOrEx.length
),
nbFamillesCompositionPenale: famillesAvecCompositionPenale.length, nbFamillesCompositionPenale: famillesAvecCompositionPenale.length,
pourcentageFamillesCompositionPenale: percent( pourcentageFamillesCompositionPenale: percent(
familleResistantesOrEx.length, familleResistantesOrEx.length,
@ -103,8 +111,30 @@ export function computeELStatsAtDate(
famillesAvecCRPC.length, famillesAvecCRPC.length,
famillesAvecProcedurePenale.length famillesAvecProcedurePenale.length
), ),
nbFamillesCRPCAcceptee: famillesAvecCRPCAcceptee.length,
pourcentageCRPCAcceptee: percent(
famillesAvecCRPCAcceptee.length,
famillesAvecCRPC.length
),
pourcentageFamillesCRPCAcceptee: percent(
famillesAvecCRPCAcceptee.length,
familleResistantesOrEx.length
),
nbFamillesCRPCRefusee: famillesAvecCRPCRefusee.length,
pourcentageCRPCRefusee: percent(
famillesAvecCRPCRefusee.length,
famillesAvecCRPC.length
),
pourcentageFamillesCRPCRefusee: percent(
famillesAvecCRPCRefusee.length,
familleResistantesOrEx.length
),
nbFamillesProcedureCivile: famillesAvecProcedureCivile.length, nbFamillesProcedureCivile: famillesAvecProcedureCivile.length,
pourcentageFamillesProcedureCivile: pourcentageFamillesProcedureCivile, pourcentageFamillesProcedureCivile: percent(
famillesAvecProcedureCivile.length,
familleResistantesOrEx.length
),
}; };
return actuelles; return actuelles;
} }