feat: supprime stats v1
parent
7890af10d8
commit
d82268779b
|
@ -6,7 +6,7 @@ import { publishPeriodStats } from "./publishPeriodStats";
|
|||
import { publishStatsActuelles } from "./publishStatsActuelles";
|
||||
|
||||
export const statsPageId = "2b91cd90e3694e96bb196d69aeca59b1";
|
||||
export const currentStatsHeading = "Statistiques actuelles";
|
||||
export const currentStatsHeading = "Statistiques v1";
|
||||
|
||||
const yearStatsDb = "4b19a72aa07840eab948525ea41878ee";
|
||||
const monthStatsDb = "8418a8a4a7544f6a8c54e6003be7efe5";
|
||||
|
|
|
@ -10,112 +10,6 @@ export function statPublishOptions(
|
|||
const statPropsPublishOptions: {
|
||||
[jsPropName in AllStatsPropNames]: StatPublishOptions;
|
||||
} = {
|
||||
nbFamilleResistantes: {
|
||||
notionPropName: "Nb familles résistantes",
|
||||
},
|
||||
|
||||
nbFamilleResistantesSurPeriode: {
|
||||
notionPropName: "Nb familles résistantes sur période",
|
||||
},
|
||||
nbFamilleResistantesOrEx: {
|
||||
notionPropName: "Nb familles résistantes ou ex-résistantes",
|
||||
},
|
||||
dureeResistanceMoyenne: {
|
||||
notionPropName: "Durée résistance moyenne",
|
||||
unit: "j",
|
||||
},
|
||||
dureeResistanceMediane: {
|
||||
notionPropName: "Durée résistance médiane",
|
||||
unit: "j",
|
||||
},
|
||||
pourcentageEntreeApresMiseEnDemeure: {
|
||||
notionPropName: "% d'entrées après mises en demeure",
|
||||
unit: "%",
|
||||
},
|
||||
|
||||
nbFamillesMisesEnDemeure: {
|
||||
notionPropName: "Nb familles mises en demeure",
|
||||
},
|
||||
pourcentageFamillesMisesEnDemeure: {
|
||||
notionPropName: "% de familles mises en demeure",
|
||||
unit: "%",
|
||||
},
|
||||
|
||||
pourcentageEntreeApresMiseEnDemeureSurPeriode: {
|
||||
notionPropName: "% d'entrées après mises en demeure sur période",
|
||||
},
|
||||
nbFamillesCompositionPenale: {
|
||||
notionPropName: "Nb familles avec composition pénale",
|
||||
},
|
||||
pourcentageFamillesCompositionPenale: {
|
||||
notionPropName: "% familles avec composition pénale",
|
||||
unit: "%",
|
||||
},
|
||||
nbFamillesCompositionPenaleAcceptee: {
|
||||
notionPropName: "Nb familles avec composition pénale acceptée",
|
||||
},
|
||||
pourcentageCompositionPenaleAcceptee: {
|
||||
notionPropName: "% des composition pénale qui sont acceptée",
|
||||
unit: "%",
|
||||
},
|
||||
pourcentageFamillesCompositionPenaleAcceptee: {
|
||||
notionPropName: "% familles avec composition pénale acceptée",
|
||||
unit: "%",
|
||||
},
|
||||
nbFamillesCompositionPenaleRefusee: {
|
||||
notionPropName: "Nb familles avec composition pénale refusée",
|
||||
},
|
||||
pourcentageCompositionPenaleRefusee: {
|
||||
notionPropName: "% des composition pénale qui sont refusée",
|
||||
unit: "%",
|
||||
},
|
||||
pourcentageFamillesCompositionPenaleRefusee: {
|
||||
notionPropName: "% familles avec composition pénale refusée",
|
||||
unit: "%",
|
||||
},
|
||||
|
||||
nbFamillesCRPC: {
|
||||
notionPropName: "Nb familles avec CRPC",
|
||||
},
|
||||
pourcentageFamillesCRPC: {
|
||||
notionPropName: "% familles 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: "%",
|
||||
},
|
||||
|
||||
nbFamillesTribunalCorrectionnel: {
|
||||
notionPropName: "Nb familles passées au tribunal correctionnel",
|
||||
},
|
||||
nbFamillesTribunalCorrectionnelProgramme: {
|
||||
notionPropName: "Nb familles tribunal correctionnel programmé",
|
||||
unit: "%",
|
||||
},
|
||||
pourcentageFamillesTribunalCorrectionnel: {
|
||||
notionPropName: "% familles passées au tribunal correctionnel",
|
||||
unit: "%",
|
||||
},
|
||||
|
||||
nbFamillesProcedureCivile: {
|
||||
notionPropName: "Nb familles avec procédure civile",
|
||||
},
|
||||
|
|
|
@ -6,42 +6,6 @@ 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;
|
||||
|
||||
// Pénale > Composition Pénale
|
||||
nbFamillesCompositionPenale: V;
|
||||
pourcentageFamillesCompositionPenale: V;
|
||||
nbFamillesCompositionPenaleAcceptee: V;
|
||||
pourcentageCompositionPenaleAcceptee: V;
|
||||
pourcentageFamillesCompositionPenaleAcceptee: V;
|
||||
nbFamillesCompositionPenaleRefusee: V;
|
||||
pourcentageCompositionPenaleRefusee: V;
|
||||
pourcentageFamillesCompositionPenaleRefusee: V;
|
||||
|
||||
// Pénale > CRPC
|
||||
nbFamillesCRPC: V;
|
||||
pourcentageFamillesCRPC: V;
|
||||
nbFamillesCRPCAcceptee: V;
|
||||
pourcentageCRPCAcceptee: V;
|
||||
pourcentageFamillesCRPCAcceptee: V;
|
||||
nbFamillesCRPCRefusee: V;
|
||||
pourcentageCRPCRefusee: V;
|
||||
pourcentageFamillesCRPCRefusee: V;
|
||||
|
||||
// Pénale > Tribunal Correctionnel
|
||||
nbFamillesTribunalCorrectionnel: V;
|
||||
pourcentageFamillesTribunalCorrectionnel: V;
|
||||
nbFamillesTribunalCorrectionnelProgramme: V;
|
||||
|
||||
// Civile
|
||||
nbFamillesProcedureCivile: V;
|
||||
pourcentageFamillesProcedureCivile: V;
|
||||
|
@ -65,12 +29,7 @@ export type ELStatsPeriod = {
|
|||
stats: PeriodStatsValues<ValueWithEvol>;
|
||||
};
|
||||
|
||||
export type PeriodStatsValues<V> = ELStatsAtDate<V> | ELStatsOverPeriod<V>;
|
||||
|
||||
export type ELStatsOverPeriod<V> = {
|
||||
pourcentageEntreeApresMiseEnDemeureSurPeriode: V;
|
||||
nbFamilleResistantesSurPeriode: V;
|
||||
};
|
||||
export type PeriodStatsValues<V> = ELStatsAtDate<V>;
|
||||
|
||||
export type ValueWithEvol = {
|
||||
value: number;
|
||||
|
@ -78,6 +37,4 @@ export type ValueWithEvol = {
|
|||
evolPercent: number;
|
||||
};
|
||||
|
||||
export type AllStatsPropNames =
|
||||
| keyof ELStatsOverPeriod<number>
|
||||
| keyof ELStatsAtDate<number>;
|
||||
export type AllStatsPropNames = keyof ELStatsAtDate<number>;
|
||||
|
|
|
@ -1,14 +1,8 @@
|
|||
import { Famille } from "../../data/Famille";
|
||||
import { IdentifiedPeriod } from "../../period/IdentifiedPeriod";
|
||||
import { Period } from "../../period/Period";
|
||||
import {
|
||||
ELStatsOverPeriod,
|
||||
ELStatsPeriod,
|
||||
PeriodStatsValues,
|
||||
ValueWithEvol,
|
||||
} from "./ELStats";
|
||||
import { ELStatsPeriod, PeriodStatsValues, ValueWithEvol } from "./ELStats";
|
||||
import { computeELStatsAtDate } from "./computeELStatsAtDate";
|
||||
import { computeELStatsOverPeriod } from "./computeELStatsOverPeriod";
|
||||
|
||||
export function computeELPeriodStats(
|
||||
familles: Famille[],
|
||||
|
@ -37,16 +31,7 @@ function computePeriodStatsNumberValues(
|
|||
familles: Famille[],
|
||||
period: Period
|
||||
): PeriodStatsValues<number> {
|
||||
const statsAtPeriodEnd = computeELStatsAtDate(familles, period.end);
|
||||
|
||||
const statsOverPeriod: ELStatsOverPeriod<number> = computeELStatsOverPeriod(
|
||||
familles,
|
||||
period
|
||||
);
|
||||
return {
|
||||
...statsAtPeriodEnd,
|
||||
...statsOverPeriod,
|
||||
};
|
||||
return computeELStatsAtDate(familles, period.end);
|
||||
}
|
||||
|
||||
function computeStatsEvol(
|
||||
|
|
|
@ -1,104 +1,19 @@
|
|||
import {
|
||||
isCRPC,
|
||||
isCompositionPenale,
|
||||
isEvenementBefore,
|
||||
isProcedureCivile,
|
||||
} from "../../data/EvenementFamille";
|
||||
import {
|
||||
Famille,
|
||||
dureeResistanceInDays,
|
||||
isExResistant,
|
||||
isResistant,
|
||||
} from "../../data/Famille";
|
||||
import { average } from "../../utils/math/average";
|
||||
import { median } from "../../utils/math/median";
|
||||
import { Famille, isExResistant, isResistant } from "../../data/Famille";
|
||||
import { percent } from "../../utils/math/percent";
|
||||
import { notNull } from "../../utils/notNull";
|
||||
import { ELStatsAtDate } from "./ELStats";
|
||||
import { computePourcentageEntreeApresMiseEnDemeure } from "./computePourcentageEntreeApresMiseEnDemeure";
|
||||
|
||||
export function computeELStatsAtDate(
|
||||
familles: Famille[],
|
||||
asOfDate: Date
|
||||
): ELStatsAtDate<number> {
|
||||
const familleResistantes = familles.filter((f) => isResistant(f, asOfDate));
|
||||
const familleResistantesOrEx = familles.filter(
|
||||
(famille) =>
|
||||
isResistant(famille, asOfDate) || isExResistant(famille, asOfDate)
|
||||
);
|
||||
const dureesResistances = familles
|
||||
.map((famille) => dureeResistanceInDays(famille, asOfDate))
|
||||
.filter(notNull);
|
||||
|
||||
const nbFamillesMiseEnDemeure = familleResistantesOrEx.filter((f) =>
|
||||
f.Evenements.find((e) => e.Type === "Mise en demeure de scolarisation")
|
||||
).length;
|
||||
|
||||
const famillesAvecCompositionPenale = familleResistantesOrEx.filter(
|
||||
(famille) =>
|
||||
famille.Evenements.find(
|
||||
(evt) => isCompositionPenale(evt) && isEvenementBefore(evt, asOfDate)
|
||||
)
|
||||
);
|
||||
|
||||
const famillesAvecCompositionPenaleAcceptee = familleResistantesOrEx.filter(
|
||||
(famille) =>
|
||||
famille.Evenements.find(
|
||||
(evt) =>
|
||||
isCompositionPenale(evt) &&
|
||||
evt.Type === "Composition pénale acceptée" &&
|
||||
isEvenementBefore(evt, asOfDate)
|
||||
)
|
||||
);
|
||||
const famillesAvecCompositionPenaleRefusee = familleResistantesOrEx.filter(
|
||||
(famille) =>
|
||||
famille.Evenements.find(
|
||||
(evt) =>
|
||||
isCompositionPenale(evt) &&
|
||||
evt.Type === "Composition pénale refusée" &&
|
||||
isEvenementBefore(evt, asOfDate)
|
||||
)
|
||||
);
|
||||
|
||||
const famillesAvecCRPC = familleResistantesOrEx.filter((famille) =>
|
||||
famille.Evenements.find(
|
||||
(evt) => isCRPC(evt) && isEvenementBefore(evt, asOfDate)
|
||||
)
|
||||
);
|
||||
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 famillesPasseesTribunalCorrectionnel = familleResistantesOrEx.filter(
|
||||
(famille) =>
|
||||
famille.Evenements.find(
|
||||
(evt) =>
|
||||
evt.Type === "Tribunal correctionnel" &&
|
||||
isEvenementBefore(evt, asOfDate)
|
||||
)
|
||||
);
|
||||
|
||||
const famillesTribunalCorrectionnelProgramme = familleResistantesOrEx.filter(
|
||||
(famille) =>
|
||||
famille.Evenements.find(
|
||||
(evt) =>
|
||||
evt.Type === "Tribunal correctionnel" &&
|
||||
!isEvenementBefore(evt, asOfDate)
|
||||
)
|
||||
);
|
||||
|
||||
const famillesAvecProcedureCivile = familleResistantesOrEx.filter((famille) =>
|
||||
famille.Evenements.find(
|
||||
|
@ -133,79 +48,6 @@ export function computeELStatsAtDate(
|
|||
f.Evenements.find((e) => e.Type === "Contrôle URSSAF")
|
||||
);
|
||||
const elStats: ELStatsAtDate<number> = {
|
||||
nbFamilleResistantes: familleResistantes.length,
|
||||
nbFamilleResistantesOrEx: familleResistantesOrEx.length,
|
||||
|
||||
dureeResistanceMoyenne: average(dureesResistances),
|
||||
dureeResistanceMediane: median(dureesResistances),
|
||||
pourcentageEntreeApresMiseEnDemeure:
|
||||
computePourcentageEntreeApresMiseEnDemeure(familleResistantesOrEx),
|
||||
|
||||
nbFamillesMisesEnDemeure: nbFamillesMiseEnDemeure,
|
||||
pourcentageFamillesMisesEnDemeure: percent(
|
||||
nbFamillesMiseEnDemeure,
|
||||
familleResistantesOrEx.length
|
||||
),
|
||||
|
||||
nbFamillesCompositionPenale: famillesAvecCompositionPenale.length,
|
||||
pourcentageFamillesCompositionPenale: percent(
|
||||
famillesAvecCompositionPenale.length,
|
||||
familleResistantesOrEx.length
|
||||
),
|
||||
nbFamillesCompositionPenaleAcceptee:
|
||||
famillesAvecCompositionPenaleAcceptee.length,
|
||||
pourcentageCompositionPenaleAcceptee: percent(
|
||||
famillesAvecCompositionPenaleAcceptee.length,
|
||||
famillesAvecCompositionPenale.length
|
||||
),
|
||||
pourcentageFamillesCompositionPenaleAcceptee: percent(
|
||||
famillesAvecCompositionPenaleAcceptee.length,
|
||||
familleResistantesOrEx.length
|
||||
),
|
||||
nbFamillesCompositionPenaleRefusee:
|
||||
famillesAvecCompositionPenaleRefusee.length,
|
||||
pourcentageCompositionPenaleRefusee: percent(
|
||||
famillesAvecCompositionPenaleRefusee.length,
|
||||
famillesAvecCompositionPenale.length
|
||||
),
|
||||
pourcentageFamillesCompositionPenaleRefusee: percent(
|
||||
famillesAvecCompositionPenaleRefusee.length,
|
||||
familleResistantesOrEx.length
|
||||
),
|
||||
|
||||
nbFamillesCRPC: famillesAvecCRPC.length,
|
||||
pourcentageFamillesCRPC: percent(
|
||||
famillesAvecCRPC.length,
|
||||
familleResistantesOrEx.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
|
||||
),
|
||||
|
||||
nbFamillesTribunalCorrectionnel:
|
||||
famillesPasseesTribunalCorrectionnel.length,
|
||||
pourcentageFamillesTribunalCorrectionnel: percent(
|
||||
famillesPasseesTribunalCorrectionnel.length,
|
||||
familleResistantesOrEx.length
|
||||
),
|
||||
nbFamillesTribunalCorrectionnelProgramme:
|
||||
famillesTribunalCorrectionnelProgramme.length,
|
||||
|
||||
nbFamillesProcedureCivile: famillesAvecProcedureCivile.length,
|
||||
pourcentageFamillesProcedureCivile: percent(
|
||||
famillesAvecProcedureCivile.length,
|
||||
|
|
|
@ -1,29 +0,0 @@
|
|||
import {
|
||||
Famille,
|
||||
isResistantOverPeriod,
|
||||
periodOfResistance,
|
||||
} from "../../data/Famille";
|
||||
import { Period } from "../../period/Period";
|
||||
import { isPeriodContaining } from "../../period/isPeriodContaining";
|
||||
import { ELStatsOverPeriod } from "./ELStats";
|
||||
import { computePourcentageEntreeApresMiseEnDemeure } from "./computePourcentageEntreeApresMiseEnDemeure";
|
||||
|
||||
export function computeELStatsOverPeriod(
|
||||
familles: Famille[],
|
||||
period: Period
|
||||
): ELStatsOverPeriod<number> {
|
||||
const famillesEntreesSurPeriode = familles.filter((f) => {
|
||||
const por = periodOfResistance(f);
|
||||
return por != null && isPeriodContaining(period, por.start);
|
||||
});
|
||||
|
||||
const nbFamilleResistantesSurPeriode = familles.filter((famille) =>
|
||||
isResistantOverPeriod(famille, period)
|
||||
).length;
|
||||
const pourcentageEntreeApresMiseEnDemeureSurPeriode =
|
||||
computePourcentageEntreeApresMiseEnDemeure(famillesEntreesSurPeriode);
|
||||
return {
|
||||
nbFamilleResistantesSurPeriode,
|
||||
pourcentageEntreeApresMiseEnDemeureSurPeriode,
|
||||
};
|
||||
}
|
Loading…
Reference in New Issue