diff --git a/.talismanrc b/.talismanrc
index 496404a86..7a91949fd 100644
--- a/.talismanrc
+++ b/.talismanrc
@@ -3,12 +3,16 @@ fileignoreconfig:
checksum: f7719ba0d36160d97e80ee15cb5415b601354576929e36df0596c7d192465cfb
- filename: README.md
checksum: df312ccb4c75fc4c2441a1f7f2c7817ee98ffb3065c78d5d7d6addf6ab129176
+- filename: frontend/.env.example
+ checksum: 7e2a5ff197c49ff9f715b3d189da7282bdb40de53ea49735e9f183ece19168fc
- filename: frontend/src/components/Draft/DraftSender.tsx
checksum: cfcc1023edac4d29c305f00a4bd86f27d491e4e9535bec2bd905a917b3f396b7
- filename: frontend/src/components/Draft/DraftSignature.tsx
checksum: 8abd2b819601d46cc6a3d0a61a60b76391601f2d89d9126f5167b684878bd2d1
- filename: frontend/src/index.tsx
checksum: 25a58ba4ecfb8606daf5efbae6a1f0f2efe4e87a4a8a18e745712b39198d93a5
+- filename: frontend/src/utils/config.ts
+ checksum: 2916d5a89dbd4b6425e9b6980e235007cb0f09a3dd0f2cc8b49f43c0e79d5d5f
- filename: packages/api-sdk/src/test/campaign-api.test.ts
checksum: b200d9e1fec310660a91e99cd048b24cbe983e0f9f965861d061a7f0992af43e
- filename: packages/healthcheck/src/checks/brevo.ts
diff --git a/frontend/.env.example b/frontend/.env.example
index 5b1de3bad..d4f453086 100644
--- a/frontend/.env.example
+++ b/frontend/.env.example
@@ -1,3 +1,5 @@
REACT_APP_API_URL=http://localhost:3001
REACT_APP_METABASE_STATS_DASHBOARD=UUID
REACT_APP_FEATURE_OCCUPANCY=ct1,ct2,ct3
+REACT_APP_POSTHOG_ENABLED=false
+REACT_APP_POSTHOG_API_KEY=key
diff --git a/frontend/src/components/HousingDetails/HousingDetailsSubCardMobilisation.tsx b/frontend/src/components/HousingDetails/HousingDetailsSubCardMobilisation.tsx
index 2454d5659..da7c1ff2e 100644
--- a/frontend/src/components/HousingDetails/HousingDetailsSubCardMobilisation.tsx
+++ b/frontend/src/components/HousingDetails/HousingDetailsSubCardMobilisation.tsx
@@ -57,14 +57,6 @@ function HousingDetailsCardMobilisation({ housing, campaigns }: Props) {
Dernière mise à jour
{lastUpdate(housing)}
-
- Prise de contact
-
- {campaigns.length === 0
- ? 'Jamais contacté'
- : `Contacté ${campaigns.length} fois`}
-
-
Dispositifs ({housing.precisions?.length ?? 0})
diff --git a/frontend/src/components/HousingFiltersBadges/HousingFiltersBadges.tsx b/frontend/src/components/HousingFiltersBadges/HousingFiltersBadges.tsx
index 93ceb30f7..b4268ef77 100644
--- a/frontend/src/components/HousingFiltersBadges/HousingFiltersBadges.tsx
+++ b/frontend/src/components/HousingFiltersBadges/HousingFiltersBadges.tsx
@@ -3,7 +3,6 @@ import {
beneficiaryCountOptions,
buildingPeriodOptions,
cadastralClassificationOptions,
- campaignsCountOptions,
dataFileYearsExcludedOptions,
dataFileYearsIncludedOptions,
energyConsumptionOptions,
@@ -200,12 +199,6 @@ function HousingFiltersBadges(props: HousingFiltersBadgesProps) {
onChange={(values) => onChange?.({ geoPerimetersExcluded: values })}
/>
)}
- onChange?.({ campaignsCounts: values })}
- />
- onChangeFilters({ subStatus: values }, 'Sous-statut')
- }
- data-testid="filtre-sous-statut-suivi"
+ onChange={(values) => {
+ onChangeFilters({ subStatus: values }, 'Sous-statut');
+ posthog.capture('filtre-sous-statut-suivi');
+ }}
/>
{campaigns && (
@@ -234,24 +234,13 @@ function HousingListFiltersSidemenu(props: Props) {
) =>
- onChangeFilters({ campaignIds: values }, 'Campagne')
- }
- data-testid="filtre-campagne"
+ onChange={(values: Array) => {
+ onChangeFilters({ campaignIds: values }, 'Campagne');
+ posthog.capture('filtre-campagne');
+ }}
/>
)}
-
-
- onChangeFilters({ campaignsCounts: values }, 'Prise de contact')
- }
- data-testid="filtre-prise-de-contact"
- />
-
- onChangeFilters({ occupancies: values }, 'Statut d’occupation')
- }
- data-testid="filtre-statut-occupation"
+ onChange={(values) => {
+ onChangeFilters({ occupancies: values }, 'Statut d’occupation');
+ posthog.capture('filtre-statut-occupation');
+ }}
/>
{filters?.occupancies?.includes(Occupancy.VACANT) && (
@@ -319,6 +308,7 @@ function HousingListFiltersSidemenu(props: Props) {
{ intercommunalities: values.map((value) => value.id) },
'Intercommunalité'
);
+ posthog.capture('filtre-intercommunalite');
}
}
}}
@@ -328,7 +318,6 @@ function HousingListFiltersSidemenu(props: Props) {
placeholder: 'Rechercher une intercommunalité'
}
}}
- data-testid="filtre-commune"
/>
@@ -342,9 +331,9 @@ function HousingListFiltersSidemenu(props: Props) {
{ localities: concat(filters.localities, value) },
'Commune'
);
+ posthog.capture('filtre-commune');
}
}}
- data-testid="filtre-commune"
/>
@@ -352,10 +341,10 @@ function HousingListFiltersSidemenu(props: Props) {
label="Type de commune"
options={localityKindsOptions}
initialValues={filters.localityKinds}
- onChange={(values) =>
- onChangeFilters({ localityKinds: values }, 'Type de commune')
- }
- data-testid="filtre-type-de-commune"
+ onChange={(values) => {
+ onChangeFilters({ localityKinds: values }, 'Type de commune');
+ posthog.capture('filtre-commune');
+ }}
/>
@@ -377,9 +366,9 @@ function HousingListFiltersSidemenu(props: Props) {
},
'Périmètre inclus'
);
+ posthog.capture('filtre-perimetre-inclus');
}
}}
- data-testid="filtre-perimetre-inclus"
/>
@@ -401,9 +390,9 @@ function HousingListFiltersSidemenu(props: Props) {
},
'Périmètre exclu'
);
+ posthog.capture('filtre-perimetre-exclu');
}
}}
- data-testid="filtre-perimetre-exclu"
/>
{!isVisitor && }
@@ -420,13 +409,13 @@ function HousingListFiltersSidemenu(props: Props) {
label="Nombre de logements"
options={housingCountOptions}
initialValues={filters.housingCounts}
- onChange={(values) =>
+ onChange={(values) => {
onChangeFilters(
{ housingCounts: values },
'Nombre de logements'
- )
- }
- data-testid="filtre-nombre-de-logements"
+ );
+ posthog.capture('filtre-nombre-de-logements');
+ }}
/>
@@ -434,10 +423,10 @@ function HousingListFiltersSidemenu(props: Props) {
label="Taux de vacance"
options={vacancyRateOptions}
initialValues={filters.vacancyRates}
- onChange={(values) =>
- onChangeFilters({ vacancyRates: values }, 'Taux de vacance')
- }
- data-testid="filtre-taux-de-vacance"
+ onChange={(values) => {
+ onChangeFilters({ vacancyRates: values }, 'Taux de vacance');
+ posthog.capture('filtre-taux-de-vacance');
+ }}
/>
@@ -445,13 +434,13 @@ function HousingListFiltersSidemenu(props: Props) {
label="Étiquette DPE représentatif (CSTB)"
options={energyConsumptionOptions}
initialValues={filters.energyConsumption}
- onChange={(values) =>
+ onChange={(values) => {
onChangeFilters(
{ energyConsumption: values },
'Étiquette DPE représentatif (CSTB)'
- )
- }
- data-testid="filtre-etiquette-dpe"
+ );
+ posthog.capture('filtre-etiquette-dpe');
+ }}
/>
@@ -463,10 +452,10 @@ function HousingListFiltersSidemenu(props: Props) {
label="Type de logement"
options={housingKindOptions}
initialValues={filters.housingKinds}
- onChange={(values) =>
- onChangeFilters({ housingKinds: values }, 'Type')
- }
- data-testid="filtre-type-logement"
+ onChange={(values) => {
+ onChangeFilters({ housingKinds: values }, 'Type');
+ posthog.capture('filtre-type-logement');
+ }}
/>
@@ -474,13 +463,13 @@ function HousingListFiltersSidemenu(props: Props) {
label="Date de construction"
options={buildingPeriodOptions}
initialValues={filters.buildingPeriods}
- onChange={(values) =>
+ onChange={(values) => {
onChangeFilters(
{ buildingPeriods: values },
'Date de construction'
- )
- }
- data-testid="filtre-date-construction"
+ );
+ posthog.capture('filtre-date-construction');
+ }}
/>
@@ -488,10 +477,10 @@ function HousingListFiltersSidemenu(props: Props) {
label="Surface"
options={housingAreaOptions}
initialValues={filters.housingAreas}
- onChange={(values) =>
- onChangeFilters({ housingAreas: values }, 'Surface')
- }
- data-testid="filtre-surface"
+ onChange={(values) => {
+ onChangeFilters({ housingAreas: values }, 'Surface');
+ posthog.capture('filtre-surface');
+ }}
/>
@@ -499,10 +488,10 @@ function HousingListFiltersSidemenu(props: Props) {
label="Nombre de pièces"
options={roomsCountOptions}
initialValues={filters.roomsCounts ?? []}
- onChange={(values) =>
- onChangeFilters({ roomsCounts: values }, 'Nombre de pièces')
- }
- data-testid="filtre-nombre-de-pieces"
+ onChange={(values) => {
+ onChangeFilters({ roomsCounts: values }, 'Nombre de pièces');
+ posthog.capture('filtre-nombre-de-pieces');
+ }}
/>
@@ -512,15 +501,15 @@ function HousingListFiltersSidemenu(props: Props) {
initialValues={filters.isTaxedValues?.map((value) =>
value ? 'true' : 'false'
)}
- onChange={(values) =>
+ onChange={(values) => {
onChangeFilters(
{
isTaxedValues: values.map((value) => value === 'true')
},
'Taxé'
- )
- }
- data-testid="filtre-taxe"
+ );
+ posthog.capture('filtre-taxe');
+ }}
/>
@@ -528,13 +517,13 @@ function HousingListFiltersSidemenu(props: Props) {
label="Classement cadastral"
options={cadastralClassificationOptions}
initialValues={filters.cadastralClassifications}
- onChange={(values) =>
+ onChange={(values) => {
onChangeFilters(
{ cadastralClassifications: values },
'Classement cadastral'
- )
- }
- data-testid="filtre-classement-cadastral"
+ );
+ posthog.capture('filtre-classement-cadastral');
+ }}
/>
@@ -542,10 +531,10 @@ function HousingListFiltersSidemenu(props: Props) {
label="Type de propriété"
options={ownershipKindsOptions}
initialValues={filters.ownershipKinds}
- onChange={(values) =>
- onChangeFilters({ ownershipKinds: values }, 'Type de propriété')
- }
- data-testid="filtre-type-propriete"
+ onChange={(values) => {
+ onChangeFilters({ ownershipKinds: values }, 'Type de propriété');
+ posthog.capture('filtre-type-propriete');
+ }}
/>
@@ -560,10 +549,10 @@ function HousingListFiltersSidemenu(props: Props) {
label="Type de propriétaire"
options={ownerKindOptions}
initialValues={filters.ownerKinds}
- onChange={(values) =>
- onChangeFilters({ ownerKinds: values }, 'Type')
- }
- data-testid="filtre-type-proprietaire"
+ onChange={(values) => {
+ onChangeFilters({ ownerKinds: values }, 'Type');
+ posthog.capture('filtre-type-proprietaire');
+ }}
/>
@@ -572,10 +561,10 @@ function HousingListFiltersSidemenu(props: Props) {
label="Âge"
options={ownerAgeOptions}
initialValues={filters.ownerAges}
- onChange={(values) =>
- onChangeFilters({ ownerAges: values }, 'Âge')
- }
- data-testid="filtre-age"
+ onChange={(values) => {
+ onChangeFilters({ ownerAges: values }, 'Âge');
+ posthog.capture('filtre-age');
+ }}
/>
@@ -585,13 +574,13 @@ function HousingListFiltersSidemenu(props: Props) {
initialValues={filters.multiOwners?.map((value) =>
value ? 'true' : 'false'
)}
- onChange={(values) =>
+ onChange={(values) => {
onChangeFilters(
{ multiOwners: values?.map((value) => value === 'true') },
'Multi-propriétaire'
- )
- }
- data-testid="filtre-multi-propriétaire"
+ );
+ posthog.capture('filtre-multi-proprietaire');
+ }}
/>
@@ -599,13 +588,13 @@ function HousingListFiltersSidemenu(props: Props) {
label="Propriétaires secondaires"
options={beneficiaryCountOptions}
initialValues={filters.beneficiaryCounts}
- onChange={(values) =>
+ onChange={(values) => {
onChangeFilters(
{ beneficiaryCounts: values },
'Propriétaires secondaires'
- )
- }
- data-testid="filtre-proprietaires-secondaires"
+ );
+ posthog.capture('filtre-proprietaires-secondaires');
+ }}
/>
@@ -619,13 +608,13 @@ function HousingListFiltersSidemenu(props: Props) {
initialValues={(filters.dataFileYearsIncluded ?? []).map((_) =>
String(_)
)}
- onChange={(values) =>
+ onChange={(values) => {
onChangeFilters(
{ dataFileYearsIncluded: values },
'Sources et Millésimes inclus'
- )
- }
- data-testid="filtre-sources-millesimes-inclus"
+ );
+ posthog.capture('filtre-sources-millesimes-inclus');
+ }}
/>
@@ -636,13 +625,13 @@ function HousingListFiltersSidemenu(props: Props) {
initialValues={(filters.dataFileYearsExcluded ?? []).map((_) =>
String(_)
)}
- onChange={(values) =>
+ onChange={(values) => {
onChangeFilters(
{ dataFileYearsExcluded: values },
'Sources et millésime exclus'
- )
- }
- data-testid="filtre-sources-millesimes-exclu"
+ );
+ posthog.capture('filtre-sources-millesimes-exclus');
+ }}
/>
diff --git a/frontend/src/index.tsx b/frontend/src/index.tsx
index 233cbd8c3..d69e05caa 100644
--- a/frontend/src/index.tsx
+++ b/frontend/src/index.tsx
@@ -24,7 +24,7 @@ declare module '@codegouvfr/react-dsfr/spa' {
}
if (config.posthog.enabled) {
- posthog.init('phc_Thondx9VvGONN5SZK0OuDttJDIorIANsudwCL2gU3O7', {
+ posthog.init(config.posthog.apiKey, {
api_host: 'https://eu.i.posthog.com',
person_profiles: 'identified_only'
});
diff --git a/frontend/src/models/HousingFilters.tsx b/frontend/src/models/HousingFilters.tsx
index 684f63281..8cd803ff8 100644
--- a/frontend/src/models/HousingFilters.tsx
+++ b/frontend/src/models/HousingFilters.tsx
@@ -1,7 +1,6 @@
import {
BeneficiaryCount,
BuildingPeriod,
- CampaignCount,
ENERGY_CONSUMPTION_VALUES,
EnergyConsumption,
HousingByBuilding,
@@ -72,13 +71,6 @@ export const ownerKindOptions: SelectOption[] =
label: OWNER_KIND_LABELS[value]
}));
-export const campaignsCountOptions: SelectOption[] = [
- { value: '0', label: 'Dans aucune campagne en cours' },
- { value: '1', label: 'Déjà contacté 1 fois' },
- { value: '2', label: 'Déjà contacté 2 fois' },
- { value: 'gt2', label: 'Déjà contacté 3 fois et plus' }
-];
-
export const statusOptions = (
statusExcluded?: HousingStatus[]
): SelectOption[] => [
diff --git a/frontend/src/utils/config.ts b/frontend/src/utils/config.ts
index 4145177f8..6e1ccefd4 100644
--- a/frontend/src/utils/config.ts
+++ b/frontend/src/utils/config.ts
@@ -12,7 +12,8 @@ const config = {
enabled:
process.env.REACT_APP_POSTHOG_ENABLED !== undefined
? process.env.REACT_APP_POSTHOG_ENABLED === 'true'
- : process.env.NODE_ENV === 'production'
+ : process.env.NODE_ENV === 'production',
+ apiKey: process.env.REACT_APP_POSTHOG_API_KEY ?? ''
},
dataYear: 2023,
banEligibleScore: 0.8,
diff --git a/server/src/models/HousingFiltersApi.ts b/server/src/models/HousingFiltersApi.ts
index 6c7cb48bc..8e929aba0 100644
--- a/server/src/models/HousingFiltersApi.ts
+++ b/server/src/models/HousingFiltersApi.ts
@@ -71,7 +71,6 @@ const validators = (property = 'filters'): ValidationChain[] => [
body(`${property}.ownershipKinds`).custom(isArrayOf(isString)).optional(),
body(`${property}.housingCounts`).custom(isArrayOf(isString)).optional(),
body(`${property}.vacancyRates`).custom(isArrayOf(isString)).optional(),
- body(`${property}.campaignsCounts`).custom(isArrayOf(isString)).optional(),
body(`${property}.campaignIds`).custom(isArrayOf(isUUID)).optional(),
body(`${property}.ownerIds`).custom(isArrayOf(isUUID)).optional(),
body(`${property}.localities`).custom(isArrayOf(isString)).optional(),
diff --git a/server/src/repositories/housingRepository.ts b/server/src/repositories/housingRepository.ts
index 86dc02f1f..a4a62392d 100644
--- a/server/src/repositories/housingRepository.ts
+++ b/server/src/repositories/housingRepository.ts
@@ -455,32 +455,8 @@ function filteredQuery(opts: FilteredQueryOptions) {
`cardinality(${campaignsTable}.campaign_ids) = 0`
);
}
- if (filters.campaignsCounts?.includes('current')) {
- whereBuilder.orWhereRaw(
- `cardinality(${campaignsTable}.campaign_ids) >= 1`
- );
- }
- if (filters.campaignsCounts?.indexOf('1') !== -1) {
- whereBuilder.orWhereRaw(
- `cardinality(${campaignsTable}.campaign_ids)`,
- 1
- );
- }
- if (filters.campaignsCounts?.indexOf('2') !== -1) {
- whereBuilder.orWhereRaw(
- `cardinality(${campaignsTable}.campaign_ids)`,
- 2
- );
- }
- if (filters.campaignsCounts?.indexOf('gt3') !== -1) {
- whereBuilder.orWhereRaw(
- `cardinality(${campaignsTable}.campaign_ids) >= ?`,
- 3
- );
- }
});
}
-
if (filters.ownerIds?.length) {
queryBuilder.whereIn(`${ownerTable}.id`, filters.ownerIds);
}