CLEANUP: Comentarios atualizados para servicenowService.js

This commit is contained in:
Rafael Alves Lopes 2025-10-29 14:40:21 -03:00
parent bfa0e8acc8
commit ae303e58fe

View File

@ -8,7 +8,6 @@ const TicketUpdateModel = require('../models/ticketUpdateModel');
const TicketSyncModel = require('../models/ticketSyncModel');
const { log } = require('winston');
// Função para buscar incidentes do ServiceNow
const fetchTicketsFromServiceNow = async (watermark) => {
try {
const watermarkDate = new Date(watermark);
@ -28,7 +27,6 @@ const fetchTicketsFromServiceNow = async (watermark) => {
}
}
//Função para buscar requsições do ServiceNow
const fetchRequestsFromServiceNow = async (watermark) => {
try {
const query = `assignment_group=${apiConfig.assignmentGroup.username}^sys_updated_on>=${watermark}`;
@ -45,7 +43,6 @@ const fetchRequestsFromServiceNow = async (watermark) => {
}
}
// Função para obter o sys_id de um ticket pela tabela de sincronização do banco de dados local
const getTicketSysId = async (ticketId) => {
try {
const ticket = await TicketSnModel.findById(ticketId);
@ -60,7 +57,6 @@ const getTicketSysId = async (ticketId) => {
}
}
// Função para obter o tipo de um ticket pela tabela de sincronização do banco de dados local
const getTicketTypeById = async (ticketId) => {
try {
const ticket = await TicketSnModel.findById(ticketId);
@ -77,7 +73,6 @@ const getTicketTypeById = async (ticketId) => {
}
}
// Função para obter o código de um comentário dentro de um ticket do ServiceNow
const getCommentId = async (sysId, comment) => {
try {
@ -102,7 +97,7 @@ const getCommentId = async (sysId, comment) => {
return null;
}
}
// Função para criar um comentário em um ticket no ServiceNow
const createCommentInServiceNow = async (snId, sysId, comment, ticketType) => {
try {
let url = '';
@ -150,7 +145,6 @@ const createCommentInServiceNow = async (snId, sysId, comment, ticketType) => {
}
}
// Função para criar um comentário
const syncCommentToServiceNow = async (ticketId, comment) => {
logInfo(`Iniciando sincronização do comentário para o ticket SN Ticket: ${ticketId}`);
const snSysId = await getTicketSysId(ticketId);
@ -164,7 +158,6 @@ const syncCommentToServiceNow = async (ticketId, comment) => {
return snCommentId;
}
// Função que verifica se o comentário já existe no ServiceNow antes de criar
const existingCommentInServiceNow = async (ticketId, comment) => {
try {
const sys_id = await getTicketSysId(ticketId);
@ -177,8 +170,6 @@ const existingCommentInServiceNow = async (ticketId, comment) => {
}
}
// Função para buscar todos os comentários de tickets no ServiceNow a partir do ticket id no banco local
// Deve-se atentar para a paginação da API do ServiceNow
const fetchCommentsFromServiceNow = async (ticket) => {
try {
@ -284,7 +275,6 @@ const fetchCommentsFromServiceNow = async (ticket) => {
}
};
// Adiciona no final do arquivo src/services/servicenowService.js
const fetchAndProcessClosedTicketsFromSN = async () => {
try {
logInfo('📡 Verificando status de tickets sincronizados no ServiceNow...');
@ -333,7 +323,6 @@ const fetchAndProcessClosedTicketsFromSN = async () => {
}
};
//Atualiza o status (state) de um ticket no ServiceNow (incidente ou requisição).
const updateStatusInServiceNow = async (snTicketId, state) => {
// Mapeamento de status de string para código numérico do ServiceNow
const stateMap = {
@ -391,10 +380,6 @@ const updateStatusInServiceNow = async (snTicketId, state) => {
};
/**
* Resolve um ticket no ServiceNow (incidente ou requisição),
* atualizando o estado para 'Resolved' (6) e enviando as notas de resolução.
*/
const closeTicketInServiceNow = async (snTicketId, closeNotes, resolvedAt) => {
let sysId = null; // Declarar sysId fora do try
try {
@ -463,9 +448,6 @@ const closeTicketInServiceNow = async (snTicketId, closeNotes, resolvedAt) => {
}
};
/**
* Adiciona uma work_note a um ticket no ServiceNow sem alterar seu status.
*/
const addWorkNoteToServiceNow = async (snTicketId, workNote) => {
let sysId = null;
try {
@ -532,14 +514,33 @@ module.exports = {
fetchTicketsFromServiceNow,
fetchRequestsFromServiceNow,
getTicketSysId,
getTicketTypeById,
createCommentInServiceNow,
getCommentId,
existingCommentInServiceNow,
syncCommentToServiceNow,
fetchCommentsFromServiceNow,
fetchAndProcessClosedTicketsFromSN,
closeTicketInServiceNow, // Adicionei a vírgula aqui
updateStatusInServiceNow, // Adicionei a vírgula aqui
addWorkNoteToServiceNow, // Adicionei a vírgula aqui
fetchScItemOptionValue // Nova função
closeTicketInServiceNow,
updateStatusInServiceNow,
addWorkNoteToServiceNow,
fetchScItemOptionValue
};
/**
* @module servicenowService
* @description Este serviço encapsula todas as interações com a API REST do ServiceNow.
* Ele é responsável por buscar, criar e atualizar dados na plataforma ServiceNow.
*
* Principais Funcionalidades:
* - **Busca de Tickets**: `fetchTicketsFromServiceNow` e `fetchRequestsFromServiceNow` buscam incidentes e requisições, respectivamente, utilizando uma marca d'água para obter apenas os registros novos ou atualizados.
* - **Busca de Comentários (`fetchCommentsFromServiceNow`)**: Busca todos os comentários (journal entries) de um ticket, com lógica de paginação para lidar com grandes volumes de dados. Ele também filtra os comentários gerados pelo próprio sistema de integração para evitar loops.
* - **Criação de Comentários**: `createCommentInServiceNow` e a função wrapper `syncCommentToServiceNow` adicionam comentários (work notes/comments) a um ticket existente no ServiceNow.
* - **Atualização de Status**: `updateStatusInServiceNow` modifica o estado de um ticket (ex: para 'Em Atendimento').
* - **Fechamento de Tickets (`closeTicketInServiceNow`)**: Altera o estado de um ticket para "Resolvido", preenchendo os campos obrigatórios como notas de fechamento e data de resolução.
* - **Adição de Notas (`addWorkNoteToServiceNow`)**: Adiciona uma nota de trabalho a um ticket sem alterar seu status, útil para registrar informações ou avisos.
* - **Busca de Variáveis de Catálogo (`fetchScItemOptionValue`)**: Função especializada para buscar valores de variáveis em itens de requisição (RITMs), usada para enriquecer a descrição de tickets.
*
* Todas as funções de interação com a API são envolvidas em blocos try-catch com logging detalhado para facilitar o monitoramento e a depuração.
*/