snglpi/docs/fluxo.md
Rafael Lopes 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

1.8 KiB

Fluxo Operacional

1. Fluxo do ciclo (main)

  1. processErrorController
  2. processTicketsController
  3. processCommentsController
  4. processGlpiClosureController (se ENABLE_GLPI_CLOSE_CRON=true)
  5. processStatusAndClosureController apenas se ENABLE_STATUS_SYNC=true

2. Fluxo SN -> GLPI

  1. Coleta incidentes/requisicoes no SN por watermark.
  2. UPSERT em tickets_sn.
  3. Cria/atualiza ticket_sync com estados iniciais.
  4. Cria ticket no GLPI quando pending_check.
  5. Grava glpi_ticket_id em ticket_sync.
  6. Atualiza campo "Ticket Externo" no SN com ID GLPI.
  7. Se falhar atualizar "Ticket Externo", agenda retry em ticket_updates.

3. Fluxo de comentarios/tasks

3.1 SN -> GLPI

  1. Busca comments e work_notes no SN.
  2. Persiste em ticket_updates (idempotente por source_id).
  3. Envia:
    • comment -> followup GLPI
    • task -> task GLPI

3.2 GLPI -> SN

  1. Busca followups GLPI.
  2. Sanitiza conteudo HTML/imagens.
  3. Envia comentario para SN evitando duplicidade.
  4. Atualiza destiny_id para rastrear espelhamento.

4. Resolucao e fechamento GLPI -> SN (monitor cron)

  1. Monitor consulta tickets ativos no ticket_sync.
  2. Busca status real no GLPI.
  3. Se status GLPI = 5:
    • busca nota de solucao
    • se SN estiver em espera, move para em atendimento
    • resolve SN
    • marca ticket_sync como solved/solved
  4. Se status GLPI = 6:
    • adiciona comentario no SN:
      • "Chamado encerrado definitivamente. Reabertura deste chamado nao sera atendida. Caso necessario, abra um novo chamado."
    • nao altera status do chamado no SN
    • marca ticket_sync como closed/closed para retirar do monitoramento

5. Reabertura

  1. Reabertura automatica permitida apenas para tickets em GLPI 5.
  2. Se GLPI 6, reabertura automatica bloqueada.