snglpi/README.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

85 lines
2.2 KiB
Markdown

# Sistema de Integracao ServiceNow <-> GLPI
Middleware Node.js para integrar chamados entre ServiceNow e GLPI, usando PostgreSQL como banco intermediario e acesso ao banco do GLPI.
## Estado atual
1. Coleta de tickets SN por watermark.
2. Criacao/vinculo de tickets no GLPI.
3. Sincronizacao de comentarios e tasks em duas direcoes.
4. Preenchimento do campo "Ticket Externo" no SN com o ID GLPI.
5. Monitor GLPI para `status=5` (resolver SN) e `status=6` (encerrar definitivamente no SN).
6. Flags para desligar sincronizacao legada de status.
## Fluxo do ciclo
Executado pelo `main()`:
1. `processErrorController`
2. `processTicketsController`
3. `processCommentsController`
4. `processGlpiClosureController` (quando `ENABLE_GLPI_CLOSE_CRON=true`)
5. `processStatusAndClosureController` apenas quando `ENABLE_STATUS_SYNC=true`
## Documentacao detalhada
1. Fluxo tecnico: [docs/fluxo.md](docs/fluxo.md)
2. Regras de negocio completas: [docs/regrasdenegocio.md](docs/regrasdenegocio.md)
3. Casos de uso: [docs/casosdeuso.md](docs/casosdeuso.md)
4. Plano e checklist de rollout: [docs/checklist.md](docs/checklist.md)
## Variaveis de ambiente importantes
### Feature flags
1. `ENABLE_STATUS_SYNC`
- `true`: liga fluxo legado de status bidirecional
- `false`: desliga fluxo legado de status
2. `ENABLE_GLPI_CLOSE_CRON`
- `true`: liga monitor de fechamento definitivo GLPI=6
- `false`: desliga monitor de fechamento definitivo
### ServiceNow
1. `SERVICENOW_TABLE_INCIDENT_URL`
2. `SERVICENOW_TABLE_REQUEST_URL`
3. `SERVICENOW_TABLE_JOURNAL_URL`
4. `SERVICENOW_SC_ITEM_OPTION_URL`
5. `SERVICENOW_DEFAULT_USER`
6. `SERVICENOW_IGNORE_DEFAULT_USER_JOURNAL`
7. `SERVICENOW_EXTERNAL_TICKET_FIELD` (default: `u_external_ticket`)
### GLPI e banco intermediario
1. `GLPI_DB_*`
2. `SNGLPI_DB_*`
3. `GLPI_OOS_SOLUTION_TYPE_ID`
## Desenvolvimento
1. Instalar dependencias:
```bash
npm install
```
2. Criar env:
```bash
copy .env.example .env.development
```
3. Executar:
```bash
npm run dev
```
## Producao
1. PM2:
```bash
pm2 start ecosystem.config.js --env production
```
## Observacoes
1. O projeto ainda nao tem suite automatizada robusta.
2. O rollout recomendado e por fases com feature flags.
3. Nao remover schema legado antes de estabilizar o fluxo novo.