Skip to content

Commit f4b5576

Browse files
authored
feat: restore applications anonymization standalone job (#1731)
* feat: restore applications anonymization standalone job * fix: typo
1 parent 38e69af commit f4b5576

File tree

3 files changed

+74
-12
lines changed

3 files changed

+74
-12
lines changed

server/src/jobs/anonymization/anonymizeApplicantAndApplications.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ const anonymize = async () => {
7777
}
7878

7979
export const anonymizeApplicantsAndApplications = async function () {
80-
logger.info("[START] Anonymisation des candidatures de plus de deux (2) ans")
80+
logger.info("[START] Anonymisation des candidats & leurs candidatures de plus de deux (2) ans")
8181
try {
8282
const [anonymizedApplication, anonymizedApplicant] = await anonymize()
8383

@@ -89,5 +89,5 @@ export const anonymizeApplicantsAndApplications = async function () {
8989
await notifyToSlack({ subject: "ANONYMISATION CANDIDATS & CANDIDATURES", message: `ECHEC anonymisation des candidats & candidatures`, error: true })
9090
throw err
9191
}
92-
logger.info("[END] Anonymisation des candidatures de plus de deux (2) ans")
92+
logger.info("[END] Anonymisation des candidats & leurs candidatures de plus de deux (2) ans")
9393
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
import { logger } from "../../common/logger"
2+
import { getDbCollection } from "../../common/utils/mongodbUtils"
3+
import { notifyToSlack } from "../../common/utils/slackUtils"
4+
5+
const anonymize = async () => {
6+
logger.info(`Début anonymisation`)
7+
8+
const period = new Date()
9+
period.setFullYear(period.getFullYear() - 2)
10+
11+
const matchCondition = { created_at: { $lte: period } }
12+
13+
await getDbCollection("applications")
14+
.aggregate([
15+
{
16+
$match: matchCondition,
17+
},
18+
{
19+
$project: {
20+
company_recruitment_intention: 1,
21+
company_feedback_date: 1,
22+
company_siret: 1,
23+
company_naf: 1,
24+
job_origin: 1,
25+
job_id: 1,
26+
caller: 1,
27+
created_at: 1,
28+
applicant_id: 1,
29+
},
30+
},
31+
{
32+
$merge: "anonymizedapplications",
33+
},
34+
])
35+
.toArray()
36+
37+
const res = await getDbCollection("applications").deleteMany(matchCondition)
38+
39+
return res.deletedCount
40+
}
41+
42+
export const anonymizeApplications = async function () {
43+
try {
44+
logger.info("[START] Anonymisation des candidatures de plus de deux (2) ans")
45+
46+
const anonymizedApplicationCount = await anonymize()
47+
48+
await notifyToSlack({
49+
subject: "ANONYMISATION CANDIDATURES",
50+
message: `Anonymisation des candidatures de plus de deux (2) an terminée. ${anonymizedApplicationCount} candidature(s) anonymisée(s).`,
51+
})
52+
} catch (err: any) {
53+
await notifyToSlack({ subject: "ANONYMISATION CANDIDATURES", message: `ECHEC anonymisation des candidatures`, error: true })
54+
throw err
55+
}
56+
logger.info("[END] Anonymisation des candidatures de plus de deux (2) ans")
57+
}

server/src/jobs/jobs.ts

+15-10
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import { getDatabase } from "../common/utils/mongodbUtils"
1010
import config from "../config"
1111

1212
import { anonymizeApplicantsAndApplications } from "./anonymization/anonymizeApplicantAndApplications"
13+
import { anonymizeApplications } from "./anonymization/anonymizeApplications"
1314
import anonymizeAppointments from "./anonymization/anonymizeAppointments"
1415
import anonymizeIndividual from "./anonymization/anonymizeIndividual"
1516
import { anonimizeUsersWithAccounts } from "./anonymization/anonymizeUserRecruteurs"
@@ -150,10 +151,6 @@ export async function setupJobProcessor() {
150151
cron_string: "5 0 * * *",
151152
handler: () => updateBrevoBlockedEmails({}),
152153
},
153-
"Anonymise les candidatures de plus de deux an": {
154-
cron_string: "10 0 * * *",
155-
handler: anonymizeApplicantsAndApplications,
156-
},
157154
"Géolocation de masse des sociétés issues de l'algo": {
158155
cron_string: "0 5 * * 6",
159156
handler: () => updateGeoLocations({}),
@@ -166,10 +163,6 @@ export async function setupJobProcessor() {
166163
cron_string: "0 5 * * 7",
167164
handler: () => updateLbaCompanies({ useAlgoFile: true, clearMongo: true }),
168165
},
169-
"Anonimisation des utilisateurs n'ayant effectué aucun rendez-vous de plus de 2 ans": {
170-
cron_string: "5 1 * * *",
171-
handler: anonymizeUsers,
172-
},
173166
"Contrôle quotidien des candidatures": {
174167
cron_string: "0 10-19/1 * * 1-5",
175168
handler: config.env === "production" ? () => controlApplications() : () => Promise.resolve(0),
@@ -178,11 +171,23 @@ export async function setupJobProcessor() {
178171
cron_string: "0 11-19/2 * * 1-5",
179172
handler: config.env === "production" ? () => controlAppointments() : () => Promise.resolve(0),
180173
},
181-
"Anonymisation des user recruteurs de plus de 2 ans": {
174+
"Anonymisation des candidatures de plus de deux (2) ans": {
175+
cron_string: "15 0 * * *",
176+
handler: anonymizeApplications,
177+
},
178+
"Anonymisation des candidats & leurs candidatures de plus de deux (2) ans": {
179+
cron_string: "10 0 * * *",
180+
handler: anonymizeApplicantsAndApplications,
181+
},
182+
"Anonimisation des utilisateurs RDVA de plus de deux (2) ans": {
183+
cron_string: "5 1 * * *",
184+
handler: anonymizeUsers,
185+
},
186+
"Anonymisation des user recruteurs de plus de deux (2) ans": {
182187
cron_string: "0 1 * * *",
183188
handler: anonimizeUsersWithAccounts,
184189
},
185-
"Anonymisation des appointments de plus de 2 ans": {
190+
"Anonymisation des appointments de plus de deux (2) ans": {
186191
cron_string: "30 1 * * *",
187192
handler: anonymizeAppointments,
188193
},

0 commit comments

Comments
 (0)