2025-10-23 17:30:03 -03:00
|
|
|
const TicketSyncModel = require('../models/ticketSyncModel');
|
|
|
|
|
const { logInfo, logError, logWarning } = require('../utils/logger');
|
|
|
|
|
|
|
|
|
|
const processErrorController = async () => {
|
|
|
|
|
logInfo('Iniciando verificação de tickets com erro...');
|
|
|
|
|
try {
|
|
|
|
|
const errorTickets = await TicketSyncModel.getTicketsInErrorState();
|
|
|
|
|
|
|
|
|
|
if (errorTickets.length === 0) {
|
|
|
|
|
logInfo('Nenhum ticket com erro encontrado para reprocessamento.');
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
logWarning(`Encontrados ${errorTickets.length} tickets com erro. Tentando reprocessar...`);
|
|
|
|
|
|
|
|
|
|
for (const ticket of errorTickets) {
|
|
|
|
|
let newSnStatus = ticket.sn_sync_status;
|
|
|
|
|
let newGlpiStatus = ticket.glpi_sync_status;
|
|
|
|
|
|
|
|
|
|
if (ticket.glpi_sync_status === 'error') {
|
|
|
|
|
newGlpiStatus = 'pending_check';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (ticket.sn_sync_status === 'error_sync') newSnStatus = 'synced';
|
|
|
|
|
if (ticket.glpi_sync_status === 'error_sync') newGlpiStatus = 'synced';
|
|
|
|
|
|
|
|
|
|
if (ticket.sn_sync_status === 'error_closing') newSnStatus = 'pending_close';
|
|
|
|
|
if (ticket.glpi_sync_status === 'error_closing') newGlpiStatus = 'pending_close';
|
|
|
|
|
|
|
|
|
|
await TicketSyncModel.updateStatus(ticket.sn_ticket_id, newGlpiStatus, newSnStatus);
|
|
|
|
|
logInfo(`Ticket SN ID ${ticket.sn_ticket_id} resetado para reprocessamento (SN: ${newSnStatus}, GLPI: ${newGlpiStatus}).`);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} catch (error) {
|
|
|
|
|
logError(error, 'Erro ao processar tickets com falha.');
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
module.exports = {
|
|
|
|
|
processErrorController
|
|
|
|
|
};
|
2025-10-29 14:20:21 -03:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @file processErrorController.js
|
|
|
|
|
* @description Este controlador é responsável por gerenciar tickets que entraram em estado de erro durante o processo de sincronização.
|
|
|
|
|
* Ele busca todos os tickets marcados com status de erro (ex: 'error', 'error_sync') e os reseta para um estado anterior válido
|
|
|
|
|
* (ex: 'pending_check', 'synced'). Isso permite que os tickets sejam automaticamente reprocessados na próxima execução do ciclo de sincronização,
|
|
|
|
|
* aumentando a resiliência do sistema.
|
|
|
|
|
*/
|