From 05ea4e76cc4f24ebdb61c3bb020aa42180a1c263 Mon Sep 17 00:00:00 2001 From: Alvar San Martin Date: Wed, 11 Feb 2026 13:20:04 +0100 Subject: [PATCH] Notificacion cuando finalice una activacion --- packages/sim-objenious-cron/.env | 2 + .../sim-objenious-cron/config/env/index.ts | 3 +- .../tasks/check_objenious_request.ts | 50 ++++++++++++------- .../domain/operationsRepository.port.ts | 4 +- 4 files changed, 39 insertions(+), 20 deletions(-) diff --git a/packages/sim-objenious-cron/.env b/packages/sim-objenious-cron/.env index 919cf75..63352e7 100644 --- a/packages/sim-objenious-cron/.env +++ b/packages/sim-objenious-cron/.env @@ -6,3 +6,5 @@ OBJ_CLIENT_ID=savefamily_rest_ws OBJ_KID=xNfbMiyL1ORXGP8lElhcv8nVaG3EJKye4Lc1YoN3I1E OBJ_BASE_URL=https://api-getway.objenious.com/ws //OBJ_BASE_URL=https://api-getway.objenious.com/ws/test + +NOTIFICATION_URL=https://api-paloma.com diff --git a/packages/sim-objenious-cron/config/env/index.ts b/packages/sim-objenious-cron/config/env/index.ts index 8977540..2540574 100644 --- a/packages/sim-objenious-cron/config/env/index.ts +++ b/packages/sim-objenious-cron/config/env/index.ts @@ -28,7 +28,8 @@ export const env = { OBJ_CLI_ASSERTION: String(process.env.OBJ_CLI_ASSERTION), OBJ_CLIENT_ID: String(process.env.OBJ_CLIENT_ID), OBJ_KID: String(process.env.OBJ_KID), - OBJ_BASE_URL: String(process.env.OBJ_BASE_URL) + OBJ_BASE_URL: String(process.env.OBJ_BASE_URL), + NOTIFICATION_URL: String(process.env.NOTIFICATION_URL) }; diff --git a/packages/sim-objenious-cron/tasks/check_objenious_request.ts b/packages/sim-objenious-cron/tasks/check_objenious_request.ts index f47897e..d535ab5 100644 --- a/packages/sim-objenious-cron/tasks/check_objenious_request.ts +++ b/packages/sim-objenious-cron/tasks/check_objenious_request.ts @@ -1,3 +1,4 @@ +import { env } from "#config/env/index.js"; import { IOperationsRepository, Objenious, ObjeniousOperation, ObjeniousOperationChange, StatusEnum } from "sim-shared/domain/operationsRepository.port.js"; import { HttpClient } from "sim-shared/infrastructure/HTTPClient.js"; @@ -36,14 +37,13 @@ export class CheckObjeniousRequests { const consultarEstado = pendingOperations.data .filter(e => e.mass_action_id != undefined) - console.log("validas", operacionesValidas) - console.log("Solicitando mass id para", solicitarMassId) + console.log("[cron] Solicitando mass id para", solicitarMassId.map(e => e.id)) const newMassActions = await this.getMassIdFromRequest(solicitarMassId) const merged = [...newMassActions || [], ...consultarEstado] - console.log("Solicitando status para", merged) + console.log("[cron] Solicitando status para", merged.map(e => e.id)) const result = await this.getMassActionsStatus(merged) } @@ -55,16 +55,9 @@ export class CheckObjeniousRequests { const PATH = "/actions/massActions/" const updated = [] - const iccids = operationsList - .map(e => e.iccids) - .flat() - const mass_actions = operationsList .filter(e => e.mass_action_id != undefined) - const iccidSet = new Set(iccids) - console.log("iccidSet", iccidSet) - // 1. Una peticion por cada accion a comprobar // Las peticiones por iccid u otro filtro tardan ~50s for (const originalAction of mass_actions) { @@ -79,18 +72,18 @@ export class CheckObjeniousRequests { try { res = await req } catch (e) { - console.error("Error comprobando el estado de ", originalAction) - console.error("Error: ", e) + console.error("[cron] Error comprobando el estado de ", originalAction) + console.error("[cron] Error: ", e) return; } const { data } = res - console.log("Estado de : ", originalAction.mass_action_id, originalAction.iccids) + console.log("[cron] Estado de : ", originalAction.mass_action_id, originalAction.iccids) console.log(res.status, data) if (res.status != 200 || data == undefined) { - console.error("Error buscando los massActions") + console.error("[cron] Error buscando los massActions") continue; } @@ -98,8 +91,7 @@ export class CheckObjeniousRequests { const { id, status, info } = data if (status != originalAction.objenious_status) { - console.log(status, "!=", originalAction.objenious_status) - console.log("Actualizando", originalAction, status) + console.log("[cron] Actualizando", originalAction.id, originalAction.iccids, status) const uorStatus = this.mapStatus(status) const updateData: ObjeniousOperationChange = { operation_id: originalAction.id!, @@ -109,10 +101,22 @@ export class CheckObjeniousRequests { previous_status: originalAction.status } + originalAction.status = uorStatus; originalAction.objenious_status = status; originalAction.last_change_date = new Date().toISOString() + if (uorStatus == "finished") { + this.notifyFinalization(originalAction) + .then(e => { + console.log("Notificada la activacion de ", originalAction.iccids) + }) + .catch(e => { + console.error("Error enviando la activacion de ", originalAction) + console.error(e) + }) + } + if (info != undefined) { updateData.info = info } @@ -191,10 +195,22 @@ export class CheckObjeniousRequests { console.log("Error actualizando el estado de ", request) continue; } - } // 3. Se devuelve la lista de los requests con las actualizaciones return operationsList } + + /** + * Se devuelve la respuesta de una operacion completa de objenious + * al servicio que manda los mails + */ + private async notifyFinalization(operation: ObjeniousOperation) { + const req = this.httpClient.client.post(env.NOTIFICATION_URL, + { operation: operation } + ) + await req + } } + + diff --git a/packages/sim-shared/domain/operationsRepository.port.ts b/packages/sim-shared/domain/operationsRepository.port.ts index 23c82d9..e148660 100644 --- a/packages/sim-shared/domain/operationsRepository.port.ts +++ b/packages/sim-shared/domain/operationsRepository.port.ts @@ -13,11 +13,11 @@ export type ObjeniousOperation = { operation: string; retry_count?: number; max_retry?: number; - max_date_retry?: Date | null; + max_date_retry?: string | null; iccids: string[]; request_id?: string; mass_action_id?: string; - end_date?: Date | null; + end_date?: string | null; error?: string | null; status: StatusEnum; objenious_status?: string;