Skip to content

Commit 674e286

Browse files
committed
feat: segments nouveaux dispositifs
1 parent fc5459e commit 674e286

File tree

5 files changed

+117
-259
lines changed

5 files changed

+117
-259
lines changed

src/application/jobs/maj-segments.job.handler.db.ts

+21-78
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ interface RawJeune {
2222
}
2323

2424
enum SEGMENTS {
25-
CAMPAGNE_NON_REPONDUE = 'CAMPAGNE_NON_REPONDUE',
2625
JEUNES_MILO = 'JEUNES_MILO',
2726
JEUNES_POLE_EMPLOI = 'JEUNES_POLE_EMPLOI',
2827
JEUNES_POLE_EMPLOI_BRSA = 'JEUNES_POLE_EMPLOI_BRSA',
@@ -55,8 +54,6 @@ export class MajSegmentsJobHandler extends JobHandler<Job> {
5554

5655
const segments: Map<string, string[]> = new Map<string, string[]>()
5756
const nbJeunes = await this.handleSegmentJeunes(segments)
58-
const nbCampagnesNonRepondues =
59-
await this.handleSegmentCampagneNonRepondue(segments)
6057

6158
this.writeMemberships(segments, maintenant)
6259
await this.bigqueryClient.loadData(
@@ -75,7 +72,7 @@ export class MajSegmentsJobHandler extends JobHandler<Job> {
7572
succes: true,
7673
dateExecution: maintenant,
7774
tempsExecution: DateService.calculerTempsExecution(maintenant),
78-
resultat: { nbJeunes, nbCampagnesNonRepondues }
75+
resultat: { nbJeunes }
7976
}
8077
} catch (e) {
8178
this.logger.error(e)
@@ -91,33 +88,6 @@ export class MajSegmentsJobHandler extends JobHandler<Job> {
9188
}
9289
}
9390

94-
async fetchJeunesCEJInstanceIdNayantPasReponduAUneCampagneActive(): Promise<
95-
RawJeune[]
96-
> {
97-
const sqlCampagneEnCours = `select id
98-
from campagne
99-
where date_debut < now()
100-
and date_fin > now()`
101-
const campagnesEnCours = await this.sequelize.query(sqlCampagneEnCours, {
102-
type: QueryTypes.SELECT
103-
})
104-
if (!campagnesEnCours.length) {
105-
return []
106-
}
107-
108-
const sql = `select instance_id, structure
109-
from jeune
110-
where instance_id is not null
111-
and (structure = 'POLE_EMPLOI' OR structure = 'MILO' OR structure = 'POLE_EMPLOI_BRSA')
112-
and id not in (select id_jeune
113-
from reponse_campagne
114-
where id_campagne in
115-
(select id from campagne where date_debut < now() and date_fin > now()))`
116-
return this.sequelize.query(sql, {
117-
type: QueryTypes.SELECT
118-
})
119-
}
120-
12191
async fetchJeunes(): Promise<RawJeune[]> {
12292
const sql = `select instance_id, structure
12393
from jeune
@@ -129,38 +99,26 @@ export class MajSegmentsJobHandler extends JobHandler<Job> {
12999

130100
writeMetadata(): void {
131101
const metadataWriteStream = createWriteStream(metadataFile)
132-
const metadatas = [
133-
{
134-
segment_label: SEGMENTS.CAMPAGNE_NON_REPONDUE,
135-
display_name: 'Campagne non répondue'
136-
},
137-
{
138-
segment_label: SEGMENTS.JEUNES_MILO,
139-
display_name: 'Jeunes MILO'
140-
},
141-
{
142-
segment_label: SEGMENTS.JEUNES_POLE_EMPLOI,
143-
display_name: 'Jeunes POLE EMPLOI'
144-
},
145-
{
146-
segment_label: SEGMENTS.JEUNES_POLE_EMPLOI_BRSA,
147-
display_name: 'Jeunes POLE EMPLOI BRSA'
148-
},
149-
{
150-
segment_label: SEGMENTS.JEUNES_POLE_EMPLOI_AIJ,
151-
display_name: 'Jeunes POLE EMPLOI AIJ'
152-
},
153-
{
154-
segment_label: SEGMENTS.JEUNES_POLE_EMPLOI_CD,
155-
display_name: 'Jeunes POLE EMPLOI CD'
156-
},
157-
{
158-
segment_label: SEGMENTS.JEUNES_POLE_EMPLOI_AVENIR_PRO,
159-
display_name: 'Lycéens POLE EMPLOI Avenir Pro'
160-
}
161-
]
162-
metadatas.forEach(metadata => {
163-
metadataWriteStream.write(JSON.stringify(metadata) + NEW_LINE)
102+
const metadatas: { [key in SEGMENTS]: string } = {
103+
[SEGMENTS.JEUNES_MILO]: 'Jeunes MILO',
104+
[SEGMENTS.JEUNES_POLE_EMPLOI]: 'Jeunes POLE EMPLOI',
105+
[SEGMENTS.JEUNES_POLE_EMPLOI_BRSA]: 'Jeunes POLE EMPLOI BRSA',
106+
[SEGMENTS.JEUNES_POLE_EMPLOI_AIJ]: 'Jeunes POLE EMPLOI AIJ',
107+
[SEGMENTS.JEUNES_POLE_EMPLOI_CD]: 'Jeunes POLE EMPLOI CD',
108+
[SEGMENTS.JEUNES_POLE_EMPLOI_AVENIR_PRO]:
109+
'Lycéens POLE EMPLOI Avenir Pro',
110+
[SEGMENTS.BENEFICIAIRES_FRANCE_TRAVAIL_ACCOMPAGNEMENT_INTENSIF]:
111+
'Bénéficiaires France Travail Accompagnement intensif',
112+
[SEGMENTS.BENEFICIAIRES_FRANCE_TRAVAIL_ACCOMPAGNEMENT_GLOBAL]:
113+
'Bénéficiaires France Travail Accompagnement global',
114+
[SEGMENTS.BENEFICIAIRES_FRANCE_TRAVAIL_EQUIP_EMPLOI_RECRUT]:
115+
'Bénéficiaires France Travail Equip’emploi / Equip’recrut'
116+
}
117+
118+
Object.entries(metadatas).forEach(([key, value]) => {
119+
metadataWriteStream.write(
120+
JSON.stringify({ segment_label: key, display_name: value }) + NEW_LINE
121+
)
164122
})
165123
metadataWriteStream.end()
166124
}
@@ -214,21 +172,6 @@ export class MajSegmentsJobHandler extends JobHandler<Job> {
214172
}
215173
}
216174

217-
async handleSegmentCampagneNonRepondue(
218-
segments: Map<string, string[]>
219-
): Promise<number> {
220-
const jeunes: RawJeune[] =
221-
await this.fetchJeunesCEJInstanceIdNayantPasReponduAUneCampagneActive()
222-
jeunes.forEach(jeune => {
223-
this.addOrSetSegment(
224-
segments,
225-
jeune.instance_id,
226-
SEGMENTS.CAMPAGNE_NON_REPONDUE
227-
)
228-
})
229-
return jeunes.length
230-
}
231-
232175
addOrSetSegment(
233176
segments: Map<string, string[]>,
234177
instanceId: string,

0 commit comments

Comments
 (0)