Notificacion cuando finalice una activacion

This commit is contained in:
2026-02-11 13:20:04 +01:00
parent 61c91b6548
commit 05ea4e76cc
4 changed files with 39 additions and 20 deletions

View File

@@ -6,3 +6,5 @@ OBJ_CLIENT_ID=savefamily_rest_ws
OBJ_KID=xNfbMiyL1ORXGP8lElhcv8nVaG3EJKye4Lc1YoN3I1E OBJ_KID=xNfbMiyL1ORXGP8lElhcv8nVaG3EJKye4Lc1YoN3I1E
OBJ_BASE_URL=https://api-getway.objenious.com/ws OBJ_BASE_URL=https://api-getway.objenious.com/ws
//OBJ_BASE_URL=https://api-getway.objenious.com/ws/test //OBJ_BASE_URL=https://api-getway.objenious.com/ws/test
NOTIFICATION_URL=https://api-paloma.com

View File

@@ -28,7 +28,8 @@ export const env = {
OBJ_CLI_ASSERTION: String(process.env.OBJ_CLI_ASSERTION), OBJ_CLI_ASSERTION: String(process.env.OBJ_CLI_ASSERTION),
OBJ_CLIENT_ID: String(process.env.OBJ_CLIENT_ID), OBJ_CLIENT_ID: String(process.env.OBJ_CLIENT_ID),
OBJ_KID: String(process.env.OBJ_KID), 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)
}; };

View File

@@ -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 { IOperationsRepository, Objenious, ObjeniousOperation, ObjeniousOperationChange, StatusEnum } from "sim-shared/domain/operationsRepository.port.js";
import { HttpClient } from "sim-shared/infrastructure/HTTPClient.js"; import { HttpClient } from "sim-shared/infrastructure/HTTPClient.js";
@@ -36,14 +37,13 @@ export class CheckObjeniousRequests {
const consultarEstado = pendingOperations.data const consultarEstado = pendingOperations.data
.filter(e => e.mass_action_id != undefined) .filter(e => e.mass_action_id != undefined)
console.log("validas", operacionesValidas) console.log("[cron] Solicitando mass id para", solicitarMassId.map(e => e.id))
console.log("Solicitando mass id para", solicitarMassId)
const newMassActions = await this.getMassIdFromRequest(solicitarMassId) const newMassActions = await this.getMassIdFromRequest(solicitarMassId)
const merged = [...newMassActions || [], ...consultarEstado] 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) const result = await this.getMassActionsStatus(merged)
} }
@@ -55,16 +55,9 @@ export class CheckObjeniousRequests {
const PATH = "/actions/massActions/" const PATH = "/actions/massActions/"
const updated = [] const updated = []
const iccids = operationsList
.map(e => e.iccids)
.flat()
const mass_actions = operationsList const mass_actions = operationsList
.filter(e => e.mass_action_id != undefined) .filter(e => e.mass_action_id != undefined)
const iccidSet = new Set<string>(iccids)
console.log("iccidSet", iccidSet)
// 1. Una peticion por cada accion a comprobar // 1. Una peticion por cada accion a comprobar
// Las peticiones por iccid u otro filtro tardan ~50s // Las peticiones por iccid u otro filtro tardan ~50s
for (const originalAction of mass_actions) { for (const originalAction of mass_actions) {
@@ -79,18 +72,18 @@ export class CheckObjeniousRequests {
try { try {
res = await req res = await req
} catch (e) { } catch (e) {
console.error("Error comprobando el estado de ", originalAction) console.error("[cron] Error comprobando el estado de ", originalAction)
console.error("Error: ", e) console.error("[cron] Error: ", e)
return; return;
} }
const { data } = res 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) console.log(res.status, data)
if (res.status != 200 || data == undefined) { if (res.status != 200 || data == undefined) {
console.error("Error buscando los massActions") console.error("[cron] Error buscando los massActions")
continue; continue;
} }
@@ -98,8 +91,7 @@ export class CheckObjeniousRequests {
const { id, status, info } = data const { id, status, info } = data
if (status != originalAction.objenious_status) { if (status != originalAction.objenious_status) {
console.log(status, "!=", originalAction.objenious_status) console.log("[cron] Actualizando", originalAction.id, originalAction.iccids, status)
console.log("Actualizando", originalAction, status)
const uorStatus = this.mapStatus(status) const uorStatus = this.mapStatus(status)
const updateData: ObjeniousOperationChange = { const updateData: ObjeniousOperationChange = {
operation_id: originalAction.id!, operation_id: originalAction.id!,
@@ -109,10 +101,22 @@ export class CheckObjeniousRequests {
previous_status: originalAction.status previous_status: originalAction.status
} }
originalAction.status = uorStatus; originalAction.status = uorStatus;
originalAction.objenious_status = status; originalAction.objenious_status = status;
originalAction.last_change_date = new Date().toISOString() 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) { if (info != undefined) {
updateData.info = info updateData.info = info
} }
@@ -191,10 +195,22 @@ export class CheckObjeniousRequests {
console.log("Error actualizando el estado de ", request) console.log("Error actualizando el estado de ", request)
continue; continue;
} }
} }
// 3. Se devuelve la lista de los requests con las actualizaciones // 3. Se devuelve la lista de los requests con las actualizaciones
return operationsList 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<any>(env.NOTIFICATION_URL,
{ operation: operation }
)
await req
}
} }

View File

@@ -13,11 +13,11 @@ export type ObjeniousOperation = {
operation: string; operation: string;
retry_count?: number; retry_count?: number;
max_retry?: number; max_retry?: number;
max_date_retry?: Date | null; max_date_retry?: string | null;
iccids: string[]; iccids: string[];
request_id?: string; request_id?: string;
mass_action_id?: string; mass_action_id?: string;
end_date?: Date | null; end_date?: string | null;
error?: string | null; error?: string | null;
status: StatusEnum; status: StatusEnum;
objenious_status?: string; objenious_status?: string;