diff --git a/src/data/EvenementFamille.ts b/src/data/EvenementFamille.ts index 95001fb..5d38fb0 100644 --- a/src/data/EvenementFamille.ts +++ b/src/data/EvenementFamille.ts @@ -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", diff --git a/src/data/TypeEvenement.ts b/src/data/TypeEvenement.ts index 95c1f2b..01ea612 100644 --- a/src/data/TypeEvenement.ts +++ b/src/data/TypeEvenement.ts @@ -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é" diff --git a/src/notion/statPublishOptions.ts b/src/notion/statPublishOptions.ts index 1e81a7d..2f61a06 100644 --- a/src/notion/statPublishOptions.ts +++ b/src/notion/statPublishOptions.ts @@ -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", }, diff --git a/src/statistiques/ELStats.ts b/src/statistiques/ELStats.ts index c691467..57f4dcf 100644 --- a/src/statistiques/ELStats.ts +++ b/src/statistiques/ELStats.ts @@ -6,21 +6,34 @@ export type ELStats = { }; export type ELStatsAtDate = { + // 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; }; diff --git a/src/statistiques/computeELStatsAtDate.ts b/src/statistiques/computeELStatsAtDate.ts index b3c4e9a..657d5ca 100644 --- a/src/statistiques/computeELStatsAtDate.ts +++ b/src/statistiques/computeELStatsAtDate.ts @@ -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 = { 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; }