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

57 lines
1.8 KiB
Markdown

# 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.