From 05ea4e76cc4f24ebdb61c3bb020aa42180a1c263 Mon Sep 17 00:00:00 2001 From: Alvar San Martin Date: Wed, 11 Feb 2026 13:20:04 +0100 Subject: [PATCH 1/6] 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; From 4d778e96ea12cf02e596db6680b167e3ab26193e Mon Sep 17 00:00:00 2001 From: Alvar San Martin Date: Wed, 11 Feb 2026 13:29:46 +0100 Subject: [PATCH 2/6] Problema de despliegue --- deployment/develop/jenkinsfile.groovy | 1 + 1 file changed, 1 insertion(+) diff --git a/deployment/develop/jenkinsfile.groovy b/deployment/develop/jenkinsfile.groovy index a8430a9..bd29740 100644 --- a/deployment/develop/jenkinsfile.groovy +++ b/deployment/develop/jenkinsfile.groovy @@ -22,6 +22,7 @@ pipeline { } stage("🧱 Building") { steps { + sh 'rm -rf dist/' sh 'yarn run build' } } From 261342a629b9500a00e51d2211c9af234bd84429 Mon Sep 17 00:00:00 2001 From: Alvar San Martin Date: Wed, 11 Feb 2026 13:41:45 +0100 Subject: [PATCH 3/6] Prueba despliegue --- deployment/develop/docker/entrypoint.sh | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/deployment/develop/docker/entrypoint.sh b/deployment/develop/docker/entrypoint.sh index 869bc27..31afa2a 100644 --- a/deployment/develop/docker/entrypoint.sh +++ b/deployment/develop/docker/entrypoint.sh @@ -1,5 +1,7 @@ #!/bin/sh +cd /hom -(cd /home/node/app/packages/sim-objenious-cron && node index.js) & -(cd /home/node/app/packages/sim-consumidor-objenious && node index.js) & -cd /home/node/app/packages/sim-entrada-eventos && exec node index.js +cd /home/node/app && yarn start +# (cd /home/node/app/packages/sim-objenious-cron && node index.js) & +# (cd /home/node/app/packages/sim-consumidor-objenious && node index.js) & +# cd /home/node/app/packages/sim-entrada-eventos && exec node index.js From 4a585958703ce06da6c199791481205ec4290f32 Mon Sep 17 00:00:00 2001 From: Alvar San Martin Date: Wed, 11 Feb 2026 15:14:15 +0100 Subject: [PATCH 4/6] =?UTF-8?q?=C3=B1adir=20numero=20en=20la=20respuesta?= =?UTF-8?q?=20de=20las=20activaciones?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/sim-objenious/Unit action by id copy.bru | 33 +++++++++++++++++++ .../tasks/check_objenious_request.ts | 32 ++++++++++++++++-- .../domain/operationsRepository.port.ts | 2 +- 3 files changed, 64 insertions(+), 3 deletions(-) create mode 100644 docs/sim-objenious/Unit action by id copy.bru diff --git a/docs/sim-objenious/Unit action by id copy.bru b/docs/sim-objenious/Unit action by id copy.bru new file mode 100644 index 0000000..5591505 --- /dev/null +++ b/docs/sim-objenious/Unit action by id copy.bru @@ -0,0 +1,33 @@ +meta { + name: Unit action by id copy + type: http + seq: 19 +} + +get { + url: https://api-getway.objenious.com/ws/actions/massActions/{{id}} + body: formUrlEncoded + auth: bearer +} + +auth:bearer { + token: {{ws-access-token-partenaire}} +} + +body:json { + { + "identifier": { + "identifiers": ["8933201124059175967"], + "identifierType": "ICCID" + } + } +} + +vars:pre-request { + id: 5192767 +} + +settings { + encodeUrl: true + timeout: 0 +} diff --git a/packages/sim-objenious-cron/tasks/check_objenious_request.ts b/packages/sim-objenious-cron/tasks/check_objenious_request.ts index d535ab5..377e658 100644 --- a/packages/sim-objenious-cron/tasks/check_objenious_request.ts +++ b/packages/sim-objenious-cron/tasks/check_objenious_request.ts @@ -107,7 +107,14 @@ export class CheckObjeniousRequests { originalAction.last_change_date = new Date().toISOString() if (uorStatus == "finished") { - this.notifyFinalization(originalAction) + const targetIccids = JSON.parse(originalAction.iccids || "[]") as string[] + const lineData = await this.getLineData(targetIccids) + const msisdn = lineData.content[0].identifier.msisdn + + this.notifyFinalization({ + ...originalAction, + msisdn + }) .then(e => { console.log("Notificada la activacion de ", originalAction.iccids) }) @@ -148,6 +155,26 @@ export class CheckObjeniousRequests { return res } + private async getLineData(iccids: string[]) { + const PATH = "/lines" + + const req = this.httpClient.client.get(PATH, { + params: { + pageSize: 100, // no hace fata + "identifier.identifierType": "ICCID", + "identifier.identifiers": iccids + } + }) + + try { + const res = await req + return res.data + } catch (e) { + console.error("Error obteniendo datos de la sim") + throw new Error(String(e)) + } + } + /** * Refrescar los requests hasta que conseguir una Id de mass action * Como no se puede consultar por @@ -205,7 +232,8 @@ export class CheckObjeniousRequests { * Se devuelve la respuesta de una operacion completa de objenious * al servicio que manda los mails */ - private async notifyFinalization(operation: ObjeniousOperation) { + private async notifyFinalization(operation: ObjeniousOperation & { msisdn: string }) { + const req = this.httpClient.client.post(env.NOTIFICATION_URL, { operation: operation } ) diff --git a/packages/sim-shared/domain/operationsRepository.port.ts b/packages/sim-shared/domain/operationsRepository.port.ts index e148660..1892b86 100644 --- a/packages/sim-shared/domain/operationsRepository.port.ts +++ b/packages/sim-shared/domain/operationsRepository.port.ts @@ -14,7 +14,7 @@ export type ObjeniousOperation = { retry_count?: number; max_retry?: number; max_date_retry?: string | null; - iccids: string[]; + iccids: string; // Deberia ser string[] pero no parseo la lista de iccids request_id?: string; mass_action_id?: string; end_date?: string | null; From 166abf8b167862f552c8aa1daf964c3085f3f219 Mon Sep 17 00:00:00 2001 From: Alvar San Martin Date: Wed, 11 Feb 2026 15:41:03 +0100 Subject: [PATCH 5/6] Error de tipado --- packages/sim-consumidor-objenious/aplication/Sim.usecases.ts | 5 ++--- packages/sim-objenious-cron/tasks/check_objenious_request.ts | 4 ++-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/packages/sim-consumidor-objenious/aplication/Sim.usecases.ts b/packages/sim-consumidor-objenious/aplication/Sim.usecases.ts index 2842a93..adcf35d 100644 --- a/packages/sim-consumidor-objenious/aplication/Sim.usecases.ts +++ b/packages/sim-consumidor-objenious/aplication/Sim.usecases.ts @@ -8,7 +8,6 @@ import { ObjeniousOperation, IOperationsRepository as OperationsRepositoryPort } // - Pasar a un archivo de DTOs // - Mucha repeticion por funcion, deberia hacer una plantilla - export class SimUseCases { private readonly httpClient: HttpClient private readonly operationRepository: OperationsRepositoryPort @@ -41,7 +40,7 @@ export class SimUseCases { const operation: ObjeniousOperation = { operation: "activate", - iccids: activationData.identifier.identifiers, + iccids: String(activationData.identifier.identifiers), status: "noMassID", request_id: response.data.requestId } @@ -84,7 +83,7 @@ export class SimUseCases { console.log("Sim preactivada con exito", resp.data) const operation: ObjeniousOperation = { operation: "preActivate", - iccids: preActivateData.identifier.identifiers, + iccids: String(preActivateData.identifier.identifiers), status: "noMassID", request_id: resp.data.requestId } diff --git a/packages/sim-objenious-cron/tasks/check_objenious_request.ts b/packages/sim-objenious-cron/tasks/check_objenious_request.ts index 377e658..873f24f 100644 --- a/packages/sim-objenious-cron/tasks/check_objenious_request.ts +++ b/packages/sim-objenious-cron/tasks/check_objenious_request.ts @@ -105,7 +105,7 @@ export class CheckObjeniousRequests { originalAction.status = uorStatus; originalAction.objenious_status = status; originalAction.last_change_date = new Date().toISOString() - + console.log(" ----> Status", uorStatus) if (uorStatus == "finished") { const targetIccids = JSON.parse(originalAction.iccids || "[]") as string[] const lineData = await this.getLineData(targetIccids) @@ -233,7 +233,7 @@ export class CheckObjeniousRequests { * al servicio que manda los mails */ private async notifyFinalization(operation: ObjeniousOperation & { msisdn: string }) { - + console.log("Notificada, ", operation) const req = this.httpClient.client.post(env.NOTIFICATION_URL, { operation: operation } ) From 54e670cb87f5f883681a1a3a611d4919743730cd Mon Sep 17 00:00:00 2001 From: Alvar San Martin Date: Wed, 11 Feb 2026 17:09:23 +0100 Subject: [PATCH 6/6] Errata --- deployment/develop/docker/entrypoint.sh | 2 +- packages/sim-objenious-cron/tasks/check_objenious_request.ts | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/deployment/develop/docker/entrypoint.sh b/deployment/develop/docker/entrypoint.sh index 31afa2a..3d74e51 100644 --- a/deployment/develop/docker/entrypoint.sh +++ b/deployment/develop/docker/entrypoint.sh @@ -1,5 +1,5 @@ #!/bin/sh -cd /hom +cd /home cd /home/node/app && yarn start # (cd /home/node/app/packages/sim-objenious-cron && node index.js) & diff --git a/packages/sim-objenious-cron/tasks/check_objenious_request.ts b/packages/sim-objenious-cron/tasks/check_objenious_request.ts index 873f24f..036cefa 100644 --- a/packages/sim-objenious-cron/tasks/check_objenious_request.ts +++ b/packages/sim-objenious-cron/tasks/check_objenious_request.ts @@ -101,14 +101,15 @@ export class CheckObjeniousRequests { previous_status: originalAction.status } - originalAction.status = uorStatus; originalAction.objenious_status = status; originalAction.last_change_date = new Date().toISOString() console.log(" ----> Status", uorStatus) - if (uorStatus == "finished") { + if (uorStatus /*== "finished"*/) { + console.log(" ****> Status", uorStatus) const targetIccids = JSON.parse(originalAction.iccids || "[]") as string[] const lineData = await this.getLineData(targetIccids) + console.log("lineData", lineData.content[0]) const msisdn = lineData.content[0].identifier.msisdn this.notifyFinalization({