Commit Graph

14 Commits

Author SHA1 Message Date
bce9a52494 FEAT: Motor de regras único de status/fechamento + mandante configurável
Consolida os dois controladores legados que decidiam status/fechamento de
forma concorrente (processGlpiClosureController + processStatusController)
em um único processTicketLifecycleController, eliminando a dependência do
campo source_last (mantido só como rastro de auditoria) e a flag
ENABLE_STATUS_SYNC (removida). Isso corrige o bug de reabertura: chamados
reabertos no SN voltavam a ser fechados no GLPI porque a regra de
precedência de finalização do fluxo legado forçava o status do GLPI de
volta pro SN.

Correções de bugs encontrados em teste (Frente 1):
- Constraint UNIQUE em ticket_sync.sn_ticket_id + ON CONFLICT DO NOTHING
  na criação do registro, prevenindo duplicação de tickets.
- Fechamento no SN agora é confirmado por leitura ao vivo do status antes
  de marcar o ticket como solved/closed, em vez de confiar só no HTTP 200
  (a API do SN pode retornar sucesso e silenciosamente ignorar um valor de
  estado inválido — descoberto e corrigido também no mandante).
- Nota de encerramento do SN pro GLPI agora é idempotente e criada uma
  única vez por ticket.
- Erros de sincronização passam a ter um limite de tentativas
  (MAX_ERROR_RETRIES) antes de marcar o ticket como error_permanent,
  exigindo intervenção manual em vez de tentar para sempre.
- Chamados criados no GLPI passam a gravar o número do ticket do SN no
  campo externalid.

Nova funcionalidade (Frente 2): quando o SN resolve/encerra um chamado por
conta própria antes do GLPI, além da nota informativa no GLPI (agora com o
nome de quem encerrou, buscado ao vivo via resolved_by/closed_by/
sys_updated_by), o próprio SN recebe um aviso de que a Sothis não vai mais
atender aquele chamado e ele é transferido pra fila de TI da CAOA.

Nova funcionalidade (Mandante, regras 19-22): espelhamento opcional e
configurável de status intermediário (Aguardando Atendimento/Em
Atendimento/Em Espera) entre os dois sistemas, controlado pela env
MANDANTE=GLPI|SNOW. Sem essa env configurada, mantém o comportamento atual
(nenhum espelhamento de status intermediário). Nunca afeta os status finais
(resolvido/encerrado/fora de escopo), que continuam regidos pelas regras
fixas de fechamento.

Corrigido também o workflow de deploy (.gitea/workflows/deploy-production.yml),
que ainda validava os controladores antigos (já removidos) e exigia
ENABLE_STATUS_SYNC=true, o que quebraria o próximo deploy em produção.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-10 09:45:34 -03:00
ed19cd76a7 FEAT: RN atualizada. Chamados que estão fechados fora do escopo saem da fila sothis e entram na fila CAOA no ServiceNow 2026-06-26 11:39:57 -03:00
ce294d4220 FIX: Mensagem de fechamento de chamado atualizado para versão menos agressiva 2026-03-04 17:33:57 -03:00
35b4a1fef9 FIX/FEATURE: Ajustes de fluxo SN<->GLPI e documentação operacional
- feito ajuste do fluxo GLPI->SN para tratar status 5 (resolve no SN) e status 6 (aviso definitivo e retirada de monitoramento)
- feito ajuste de reabertura SN->GLPI quando ticket estiver solved no GLPI
- feito ajuste de data/hora de comments/worknotes para evitar inversão de data
- feito ajuste de vínculo Ticket Externo no SN com validação de persistência e retry idempotente
- feito ajuste de filtro de journals para ignorar SOTHIS.CAOA e admin.caoa por configuração
- feito inclusão de monitor dedicado de encerramento definitivo (processGlpiClosureController)
- feito atualização de flags de controle (ENABLE_STATUS_SYNC, ENABLE_GLPI_CLOSE_CRON, ENABLE_GLPI_WEBHOOK)
- feito atualização da documentação (README, docs/regrasdenegocio.md, docs/fluxo.md, docs/casosdeuso.md, docs/checklist.md)
2026-03-04 16:37:04 -03:00
0c6648b0b6 FIX: Ajusta exibicao de logs no PM2 em producao 2026-02-27 17:03:17 -03:00
Rafael Lopes
e129571812 FIX: Correções de sincronização SN<->GLPI
- feito ajuste de direção de status para respeitar source_last e evitar reabertura indevida

- feito tratamento de reabertura SN->GLPI após resolução, mantendo bloqueio para fechamento permanente

- feito ajuste de finalização GLPI->SN para propagar resolução/fechamento corretamente

- feito correção de runtime no processStatusController (uso de variável antes da inicialização)

- feito correção para não prender ticket em status transitório de comentários

- feito preservação de ordem cronológica e datas reais de comments/work_notes SN no GLPI

- feito normalização de autor (ex.: email/login para nome amigável)

- feito destaque visual para mensagens automáticas e encerramento no GLPI

- feito sanitização de justificativa na regra de fora de escopo

- feito padronização de variáveis de ambiente e remoção de inconsistências de config

- feito separação de SQL destrutivo para arquivo de manutenção dedicado
2026-02-24 17:42:33 -03:00
a4f6797c8f FEATURE: Novo Cammpo adicionado!
- Campo de Justificativa adicionado para as requisições
2026-02-19 18:22:38 -03:00
e84647a2ba FIX : corrige bugs silenciosos
- normaliza comentarios e logs (ASCII)
- corrige campo no createSyncRecord (glpi_ticket_id)
- remove metodo duplicado updateSourceLast
- corrige uso de ID errado na atualizacao de status/comentarios
- atualiza o README
2026-02-19 11:21:40 -03:00
25458d5e44 REFACTOR/BUG: Correção de bugs e alteção de run
- Alterado Código para que use o node cron e o gerenciamento seja feito pelo pm2
- Bug que não envia uma atualização para o SN quando um chamo é fechado fora do escopo corrigido
2025-11-19 16:01:37 -03:00
cb73486caa FEAT: Integração ServiceNow + PostgreSQL com salvamento automático
- Implementa conexão API ServiceNow → PostgreSQL
- Salva automaticamente tickets e requisições
- Resultado: 673 tickets sincronizados
- Créditos: @TulioCastro pelo GET da API
2025-09-03 21:40:04 -03:00
Tulio Castro
540120fdb9 Voltando .env para .env.example. 2025-09-03 16:40:29 -03:00
Tulio Castro
2a64c1cce2 Adição de require 'dotenv' em apiConfig.js para utilização das variáveis de ambiente. Criação de função que busca os tickets no servicenowService para chamados designados para a Sothis. Execução gera um JSON com a resposta da API. 2025-09-03 11:13:23 -03:00
Gabriel Amancio
612f91307e Variáveis de ambiente do service now atualizados. 2025-09-02 15:43:46 -03:00
Equipe de Desenvolvimento Sothis
67dce4c1e6 Initial commit - SNGLPI 2025-08-30 22:04:35 +00:00