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

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

View File

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

View File

@ -72,6 +72,29 @@ const statPropsPublishOptions: {
notionPropName: "% procédure pénale avec CRPC",
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: {
notionPropName: "Nb familles avec procédure civile",
},

View File

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

View File

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