Skip to content

Commit

Permalink
feat: lise à jour de organisme ID de le lieu de formation vesr organi… (
Browse files Browse the repository at this point in the history
  • Loading branch information
nkrmr authored Nov 12, 2024
1 parent 298b2e9 commit af5c142
Show file tree
Hide file tree
Showing 6 changed files with 74 additions and 22 deletions.
6 changes: 6 additions & 0 deletions server/src/commands.ts
Original file line number Diff line number Diff line change
Expand Up @@ -576,6 +576,12 @@ program
.option("-q, --queued", "Run job asynchronously", false)
.action(createJobAction("hydrate:update-effectifs-lieu-de-formation"));

program
.command("hydrate:update-effectifs-organisme-lieu-vers-formateur")
.description("Mise à jour des organismes des effectifs de lieu de formation vers organisme formateur")
.option("-q, --queued", "Run job asynchronously", false)
.action(createJobAction("hydrate:update-effectifs-organisme-lieu-vers-formateur"));

program.command("init:dev").description("Initialisation du projet en local").action(createJobAction("init:dev"));

/**
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import { addJob } from "job-processor";

export const up = async () => {
await addJob({ name: "hydrate:update-effectifs-organisme-lieu-vers-formateur", queued: true });
};
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { captureException } from "@sentry/node";

import { addComputedFields } from "@/common/actions/effectifs.actions";
import logger from "@/common/logger";
import { effectifsDb, organismesDb } from "@/common/model/collections";

Expand Down Expand Up @@ -56,3 +57,53 @@ export async function hydrateEffectifsLieuDeFormation() {
captureException(err);
}
}

export async function hydrateEffectifsLieuDeFormationVersOrganismeFormateur() {
let nbEffectifsMisAJour = 0;
let nbEffectifsNonMisAJour = 0;

const organismeFormateurCache = new Map();

try {
const cursor = effectifsDb().find({ organisme_formateur_id: { $exists: true } });

while (await cursor.hasNext()) {
const effectif = await cursor.next();

if (effectif) {
let organismeFormateur;

if (organismeFormateurCache.has(effectif.organisme_formateur_id)) {
organismeFormateur = organismeFormateurCache.get(effectif.organisme_formateur_id);
} else if (effectif.organisme_formateur_id) {
organismeFormateur = await organismesDb().findOne({ _id: effectif.organisme_formateur_id });
}

if (organismeFormateur) {
const updatedEffectif = {
organisme_id: organismeFormateur._id,
organisme_formateur_id: organismeFormateur._id,
_computed: await addComputedFields({ organisme: organismeFormateur, effectif }),
};

const updateResult = await effectifsDb().updateOne({ _id: effectif._id }, { $set: updatedEffectif });

if (updateResult.modifiedCount > 0) {
nbEffectifsMisAJour++;
} else {
nbEffectifsNonMisAJour++;
}
} else {
nbEffectifsNonMisAJour++;
}
}
}

logger.info(
`${nbEffectifsMisAJour} effectifs mis à jour avec l'organisme formateur, ${nbEffectifsNonMisAJour} effectifs non mis à jour.`
);
} catch (err) {
logger.error(`Échec de la mise à jour des effectifs: ${err}`);
captureException(err);
}
}
6 changes: 3 additions & 3 deletions server/src/jobs/ingestion/process-ingestion.ts
Original file line number Diff line number Diff line change
Expand Up @@ -391,7 +391,7 @@ async function transformEffectifQueueV3ToEffectif(rawEffectifQueued: IEffectifQu
return {
effectif: {
...effectif,
organisme_id: organismeLieu?._id,
organisme_id: organismeFormateur?._id,
organisme_formateur_id: organismeFormateur?._id,
organisme_responsable_id: organismeResponsable?._id,
lieu_de_formation: {
Expand All @@ -400,9 +400,9 @@ async function transformEffectifQueueV3ToEffectif(rawEffectifQueued: IEffectifQu
adresse: effectifQueued.etablissement_lieu_de_formation_adresse,
code_postal: effectifQueued.etablissement_lieu_de_formation_code_postal,
},
_computed: await addComputedFields({ organisme: organismeLieu, effectif }),
_computed: await addComputedFields({ organisme: organismeFormateur, effectif }),
},
organisme: organismeLieu,
organisme: organismeFormateur,
};
})
.safeParseAsync(rawEffectifQueued);
Expand Down
10 changes: 9 additions & 1 deletion server/src/jobs/jobs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,10 @@ import {
} from "./hydrate/effectifs/hydrate-effectifs-computed";
import { hydrateEffectifsComputedTypes } from "./hydrate/effectifs/hydrate-effectifs-computed-types";
import { hydrateEffectifsFormationsNiveaux } from "./hydrate/effectifs/hydrate-effectifs-formations-niveaux";
import { hydrateEffectifsLieuDeFormation } from "./hydrate/effectifs/update-effectifs-lieu-de-formation";
import {
hydrateEffectifsLieuDeFormation,
hydrateEffectifsLieuDeFormationVersOrganismeFormateur,
} from "./hydrate/effectifs/update-effectifs-lieu-de-formation";
import { cleanEffectifsSource, hydrateEffectifsSource } from "./hydrate/effectifs/update-effectifs-source";
import { hydrateEffectifsQueueSource } from "./hydrate/effectifs-queue/update-effectifs-queue-source";
import { hydrateFormationsCatalogue } from "./hydrate/hydrate-formations-catalogue";
Expand Down Expand Up @@ -380,6 +383,11 @@ export async function setupJobProcessor() {
return hydrateEffectifsLieuDeFormation();
},
},
"hydrate:update-effectifs-organisme-lieu-vers-formateur": {
handler: async () => {
return hydrateEffectifsLieuDeFormationVersOrganismeFormateur();
},
},
"hydrate:voeux-effectifs-relations": {
handler: async () => {
return hydrateVoeuxEffectifsRelations();
Expand Down
18 changes: 0 additions & 18 deletions server/tests/integration/jobs/ingestion/process-ingestion.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -619,12 +619,6 @@ describe("Processus d'ingestion", () => {
validation_errors: [],
_computed: {
organisme: {
region: "84",
departement: "01",
academie: "10",
uai: "0802004U",
siret: "77937827200016",
reseaux: [],
fiable: false,
},
formation: {
Expand Down Expand Up @@ -721,12 +715,6 @@ describe("Processus d'ingestion", () => {
validation_errors: [],
_computed: {
organisme: {
region: "84",
departement: "01",
academie: "10",
uai: "0802004U",
siret: "77937827200016",
reseaux: [],
fiable: false,
},
formation: {
Expand Down Expand Up @@ -901,12 +889,6 @@ describe("Processus d'ingestion", () => {
validation_errors: [],
_computed: {
organisme: {
region: "84",
departement: "01",
academie: "10",
uai: "0802004U",
siret: "77937827200016",
reseaux: [],
fiable: false,
},
formation: {
Expand Down

0 comments on commit af5c142

Please sign in to comment.