110 lines
3.0 KiB
Markdown
110 lines
3.0 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
|
|
|
|
### Deploy manual na VM
|
|
|
|
```bash
|
|
git pull origin master
|
|
npm ci --omit=dev
|
|
pm2 start ecosystem.config.js --env production
|
|
pm2 save
|
|
```
|
|
|
|
Se o processo ja estiver rodando:
|
|
|
|
```bash
|
|
pm2 restart sn-glpi-sync-cron --update-env
|
|
```
|
|
|
|
### Deploy via Gitea Actions
|
|
|
|
O workflow `.gitea/workflows/deploy-production.yml` roda no runner com rotulo `vm-prod`.
|
|
|
|
1. Configure a variavel do repositorio `PROD_DEPLOY_PATH` com o caminho da aplicacao na VM de producao. Se nao configurar, o workflow usa `/opt/sn-glpi-sync-new`.
|
|
2. Garanta que o arquivo `.env.production` exista nesse caminho na VM e contenha `ENABLE_STATUS_SYNC=true`.
|
|
3. Faça push na branch `master` ou execute o workflow manualmente em Actions.
|
|
4. Acompanhe pelo Gitea Actions ou na VM:
|
|
|
|
```bash
|
|
pm2 list
|
|
pm2 logs sn-glpi-sync-cron
|
|
```
|
|
|
|
## 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.
|
|
4. Consulte `docs/checklist.md` antes de cada deploy para validar pre e pos-subida.
|