Merge branch 'main' into seguimiento-tareas

This commit is contained in:
2026-02-13 10:57:54 +01:00
26 changed files with 540 additions and 40 deletions

View File

@@ -1,3 +1,5 @@
import { env } from "#config/env/index.js";
import axios from "axios";
import { IOperationsRepository, Objenious, ObjeniousOperation, ObjeniousOperationChange, StatusEnum } from "sim-shared/domain/operationsRepository.port.js";
import { HttpClient } from "sim-shared/infrastructure/HTTPClient.js";
@@ -36,14 +38,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 +56,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<string>(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 +73,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 +92,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!,
@@ -112,6 +105,27 @@ export class CheckObjeniousRequests {
originalAction.status = uorStatus;
originalAction.objenious_status = status;
originalAction.last_change_date = new Date().toISOString()
originalAction.end_date = originalAction.last_change_date
console.log(" ----> Status", uorStatus)
if (uorStatus /*== "finished"*/) {
console.log(" ****> Status", uorStatus)
const targetIccids = originalAction.iccids
const lineData = await this.getLineData(targetIccids)
console.log("lineData", lineData.content[0])
const msisdn = lineData.content[0].identifier.msisdn
this.notifyFinalization({
...originalAction,
msisdn
})
.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
@@ -144,6 +158,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
@@ -191,11 +225,26 @@ 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 & { msisdn: string }) {
const req = axios.post(env.NOTIFICATION_URL, {
...operation,
iccids: [operation.iccids]
}, {
headers: {
"x-apikey-sim-activation": env.SIM_ACTIVATION_API_KEY
}
})
await req
}
}