Cron y errata de status

El paquete node-cron por algún motivo no funciona bien con el
monorepo de yarn por algun motivo, he pasado a setInterval
This commit is contained in:
2026-02-06 14:45:43 +01:00
parent 8a28c54c5d
commit 6e8251f2c6
8 changed files with 93 additions and 34 deletions

View File

@@ -11,8 +11,8 @@ post {
}
body:form-urlencoded {
iccid: 8933201125065160422
offer: SAVEFAMILY2
iccid: 8933201125065160380
offer: SAVEFAMILY1
}
settings {

View File

@@ -15,7 +15,7 @@ params:query {
}
body:form-urlencoded {
iccid: 8933201124059176320
iccid: 8933201125065160380
}
settings {

View File

@@ -0,0 +1,42 @@
meta {
name: Cambio oferta
type: http
seq: 18
}
post {
url: {{baseUrl}}actions/changeServices
body: json
auth: bearer
}
auth:bearer {
token: {{ws-access-token-partenaire}}
}
body:json {
{
"dueDate": "2026-02-06T15:05:15.458Z",
"customerAccountCode": "9.49411.10",
"offer": {
"code": "SAVEFAMILY1",
"services": []
},
"identifier": {
"identifiers": [
"8933201125065160380"
],
"identifierType": "ICCID"
},
"services": []
}
}
body:form-urlencoded {
dueDate: 2026-01-28T13:51:15.458Z
}
settings {
encodeUrl: true
timeout: 0
}

View File

@@ -35,7 +35,6 @@ export class SimUseCases {
try {
const response = await req
console.log("[!] El status de la respuesta es", response.status)
if (response.status == 200) {
console.log("Activacion con exito", response.data)
@@ -47,9 +46,7 @@ export class SimUseCases {
request_id: response.data.requestId
}
this.logOperation(operation).then(e => {
console.log("Logueada operacion", operation)
}).catch(e => console.error(e))
this.logOperation(operation).then().catch(e => console.error(e))
return <Result<string, boolean>>{
error: undefined,
@@ -74,24 +71,39 @@ export class SimUseCases {
}
}
public preActivate(pauseData: ActionData): () => Promise<Result<string, boolean>> {
public preActivate(preActivateData: ActionData): () => Promise<Result<string, boolean>> {
const OPERATION_URL = "/actions/preactivateLine"
return async () => {
const req = this.httpClient.client.post(OPERATION_URL, {
...pauseData
...preActivateData
})
try {
const e = await req
console.log("Sim preactivada con exito", e.data)
return <Result<string, boolean>>{
error: undefined,
data: true
const resp = await req
if (resp.status == 200) {
console.log("Sim preactivada con exito", resp.data)
const operation: ObjeniousOperation = {
operation: "activate",
iccids: preActivateData.identifier.identifiers,
status: "noMassID",
request_id: resp.data.requestId
}
this.logOperation(operation).then().catch(e => console.error(e))
return <Result<string, boolean>>{
error: undefined,
data: true
}
} else {
return <Result<string, boolean>>{
error: String(resp.status),
data: true
}
}
} catch (error) {
console.error("Error preactivacion", pauseData)
console.error("Error preactivacion", preActivateData)
return <Result<string, boolean>>{
error: "Error preactivando la sim" + pauseData.identifier,
error: "Error preactivando la sim" + preActivateData.identifier,
data: true
}
}

View File

@@ -20,7 +20,7 @@ export type ObjeniousOperation = {
end_date?: Date | null;
error?: string | null;
status: StatusEnum;
objenioius_status: string;
objenious_status?: string;
last_change_date?: string;
}

View File

@@ -41,7 +41,6 @@ export class OperationsRepository implements IOperationsRepository {
await client.query('BEGIN');
// 1. Actualizar objenious_operation (la operacion base)
const updateParams = [operation_id, new_status, error, new_request_id, new_mass_action_id, new_objenious_status]
console.log("updateParams", updateParams)
const updateOpQuery = `
UPDATE objenious_operation
SET
@@ -50,20 +49,18 @@ export class OperationsRepository implements IOperationsRepository {
request_id = COALESCE($4, request_id),
mass_action_id = COALESCE($5, mass_action_id),
last_change_date = now(),
end_date = CASE WHEN $2::status_enum IN ('finished', 'error') THEN now() ELSE end_date END,
end_date = CASE WHEN $2 IN ('finished') THEN now() ELSE end_date END,
objenious_status = $6
WHERE id = $1`;
const operation = await client.query<ObjeniousOperation>(
updateOpQuery, updateParams)
console.log("Operacion base acualizada")
// 2. Nuevo registro en objenious_operation_change (indica un cambio de estado)
const insertChangeQuery = `
INSERT INTO objenious_operation_change (operation_id, new_status, previous_status, error, new_request_id, new_mass_action_id, new_objenious_status, previous_objenious_status)
VALUES ($1, $2, $3, $4, $5, $6, $7, $8)`;
await client.query(insertChangeQuery, [operation_id, new_status, previous_status, error, new_request_id, new_mass_action_id, new_objenious_status, previous_objenious_status]);
console.log("Nuevo registro de actualizacion")
await client.query('COMMIT');
return <Result<string, ObjeniousOperation>>{

View File

@@ -22,16 +22,23 @@ async function startCron() {
operationRepository,
httpClient
)
const interval = setInterval(async () => {
console.log("Updating...")
await objTask.getPendingOperations()
console.log("Update finished")
}, 60 * 1000)
/*
const task = cron.createTask("* * * * *", objTask.getPendingOperations
, {
...commonSettings,
name: "Test"
})
*/
await objTask.getPendingOperations()
console.log("Lanzando task")
//task.start()
const task = cron.createTask("* * * * *", async () => {
}
, {
...commonSettings,
name: "Test"
})
*/
//await objTask.getPendingOperations()
}
startCron().then(e => console.log).catch(e => console.error)

View File

@@ -98,19 +98,20 @@ export class CheckObjeniousRequests {
// 2. Se comprueba si ha habido un cambio de estado
const { id, status, info } = data
if (status != originalAction.objenioius_status) {
if (status != originalAction.objenious_status) {
console.log(status, "!=", originalAction.objenious_status)
console.log("Actualizando", originalAction, status)
const uorStatus = this.mapStatus(status)
const updateData: ObjeniousOperationChange = {
operation_id: originalAction.id!,
new_objenious_status: status,
previous_objenious_status: originalAction.objenioius_status,
previous_objenious_status: originalAction.objenious_status,
new_status: uorStatus,
previous_status: originalAction.status
}
originalAction.status = uorStatus;
originalAction.objenioius_status = status;
originalAction.objenious_status = status;
originalAction.last_change_date = new Date().toISOString()
if (info != undefined) {
@@ -137,7 +138,7 @@ export class CheckObjeniousRequests {
const equivalentMap = new Map<string, StatusEnum>([
["terminé", "finished"]
])
const res = equivalentMap.get(objStatus)
const res = equivalentMap.get(sanitizedStatus)
if (res == undefined) return "running"
return res
}