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