Ir para o conteúdo

Plano de pendências — Deploy isolado Intelbras Impacta (CSTA)

Status: documento de planejamento — não implementado no lorentz-vps-stack atual.
Planta em produção hoje: Issabel/Asterisk + LorentzCTI (Docker).
Planta futura: Central Intelbras Impacta + LorentzCTI.Impacta (deploy nativo isolado).


1. Duas plantas Lorentz

Planta A — Stack VPS (atual) Planta B — Impacta CSTA (pendente)
PBX Issabel / Asterisk (hostnet) Intelbras Impacta (on-prem ou VM)
Protocolo telefonia AMI :5038 CSTA :7001 (TCP outbound)
Servidor CTI LorentzCTI.dll LorentzCTI.Impacta.dll
Runtime Container Docker (.NET 9) systemd Linux ou serviço Windows
Porta agentes 8000 TCP 5000 TCP (legado Attender)
Modelo INI Modelo=asterisk Modelo=Intelbras
Monitor operacional Portal /cti/ + API :8090 Mesma API (já portada no Impacta)
Stack Compose lorentz-vps-stack completo Isolado — ver seção 4
flowchart LR
    subgraph PlantaA["Planta A — lorentz-vps-stack"]
        Issabel[Issabel AMI]
        CTI_A[LorentzCTI Docker]
        SQL_A[(SQL Server)]
        SUP_A[Supervisor]
        Issabel -->|AMI 5038| CTI_A
        CTI_A --> SQL_A
        SUP_A -->|TCP 3000| CTI_A
    end

    subgraph PlantaB["Planta B — pendente"]
        Impacta[Central Impacta CSTA]
        CTI_B[LorentzCTI.Impacta systemd]
        SQL_B[(SQL Server)]
        SUP_B[Supervisor]
        Impacta -->|CSTA 7001| CTI_B
        CTI_B --> SQL_B
        SUP_B -->|TCP 3000| CTI_B
    end

2. O que já está pronto (código)

Itens concluídos no repositório server/LorentzCTI.Impactanão exigem rework para a Planta B:

Item Arquivo / doc
Projeto unificado Attender + Lorentz server/LorentzCTI.Impacta/
Cliente CSTA Impacta Classes/clsImpacta.vb, CSTA/
Deploy Linux systemd deploy/install-linux.sh, deploy/lorentz-cti-impacta.service
Guia migração Attender docs/MIGRACAO-ATTENDER-LORENTZ.md
Monitor API REST/SSE MonitorApiHost.vb, Classes/clsMonitorSnapshot.vb
Doc Monitor API docs/api-monitor.md

3. O que não fazer na Planta B

  • Não substituir o container lorentz-cti do stack Issabel por Impacta no mesmo host sem replanejar portas e PBX.
  • Não usar net9.0.zip / Dockerfile.runtime — eles empacotam LorentzCTI.dll, não Impacta.
  • Não apontar CTI_Impacta_Ip do INI Asterisk para a central Intelbras — são drivers diferentes (Modelo).

4. Arquitetura alvo — deploy isolado

Cenário típico: cliente com central Impacta em rede corporativa; CTI em Linux dedicado (VM ou bare metal); Supervisor/SQL podem ser compartilhados ou locais.

                    ┌─────────────────────────────┐
                    │   LorentzCTI.Impacta        │
                    │   (systemd / Linux)         │
                    │   /var/lorentz/             │
                    └─────────────────────────────┘
           TCP :5000 │         │         │ TCP :7001 outbound
                     │         │         ▼
            LorentzCliente   Supervisor   Central Intelbras
            (agentes)        :3000        Impacta (CSTA)
                     │         │
                     │    TCP :4000
                     ▼         ▼
                  URA VB.NET   SQL Server (LorentzCTI)
              HTTP :8090 Monitor API
              Portal /cti/ (opcional — outro host)

Componentes mínimos

Componente Obrigatório Notas
LorentzCTI.Impacta Sim .NET 9 runtime
SQL Server LorentzCTI Sim Mesmo schema do Supervisor
Central Impacta + licença CTI Sim Porta CSTA configurada
Supervisor PHP Recomendado TCP Concentre :3000
Lorentz URA (Windows) Opcional TCP :4000
MonitorCTI desktop Opcional Substituído por API :8090
Issabel / Asterisk Não Planta B não usa AMI

5. Checklist de pendências (implementação futura)

Marque conforme for executando um novo projeto cliente.

Fase 0 — Decisão e sizing

  • [ ] Confirmar modelo de central: Intelbras Impacta com CTI/CSTA habilitado
  • [ ] Definir se SQL Server e Supervisor ficam no mesmo host do CTI ou no stack VPS remoto
  • [ ] Documentar IP/porta CSTA da central (CTI_Impacta_Ip, CTI_Impacta_Porta, padrão 7001)
  • [ ] Validar licenciamento HardLock (se aplicável ao cliente legado Attender)

Fase 1 — Build e artefato

  • [ ] Build Release: dotnet publish server/LorentzCTI.Impacta -c Release -r linux-x64 -o ./publish/linux-x64
  • [ ] (Opcional) Criar script scripts/build-lorentz-cti-impacta-zip.sh espelhando build-lorentz-cti-zip.sh
  • [ ] (Opcional) Criar docker-compose.impacta.yml separado — somente se decidir containerizar Impacta no futuro
  • [ ] Commitar alterações Impacta no monorepo omnichannel (pendente hoje)

Fase 2 — INI e banco

  • [ ] Migrar [Parametros] de Lorentz Servidor.iniLorentzCTI.Impacta.ini
    (ver server/LorentzCTI.Impacta/docs/MIGRACAO-ATTENDER-LORENTZ.md §5)
  • [ ] Definir Modelo=Intelbras, PortaTCP=5000 (ou manter convenção do site)
  • [ ] Configurar SQL (ServidorSQL, BancoSQL, SenhaSQL criptografada)
  • [ ] Habilitar Monitor API:
    MonitorApiEnabled=1
    MonitorApiPort=8090
    MonitorApiKey=<senha-forte>
    MonitorApiSseIntervalMs=2000
    
  • [ ] Restaurar/migrar banco LorentzCTI se novo ambiente

Fase 3 — Instalação Linux (systemd)

  • [ ] Criar usuário lorentz: incluído em deploy/install-linux.sh
  • [ ] Copiar publish para /var/lorentz/
  • [ ] Instalar unit: sudo cp deploy/lorentz-cti-impacta.service /etc/systemd/system/
  • [ ] Editar INI: sudo nano /var/lorentz/LorentzCTI.Impacta.ini
  • [ ] Iniciar: sudo systemctl enable --now lorentz-cti-impacta
  • [ ] Logs: sudo journalctl -u lorentz-cti-impacta -f

Referência completa: server/LorentzCTI.Impacta/README.md § Linux

Fase 4 — Rede e firewall

Porta Direção Serviço
5000 IN Agentes LorentzCliente
3000 IN Supervisor (Concentre)
4000 IN URA
7001 OUT → central CSTA Impacta
8090 IN (restrito) Monitor API HTTP
8000 UDP IN MonitorCTI legado (opcional)
1433 OUT/IN SQL Server
  • [ ] Liberar 7001 outbound do host CTI → IP da central Impacta
  • [ ] Liberar 5000/3000/4000 conforme origem dos clientes
  • [ ] Restringir 8090 a IPs de supervisão/TI

Fase 5 — Integração Supervisor e portal

  • [ ] Supervisor: EW_PHOENIX_SERVER / att_config.php → IP do host Impacta, porta 3000
  • [ ] Testar login agente + estados no Supervisor
  • [ ] (Opcional) Portal /cti/: ajustar config.jsonctiMonitor.apiBase apontando para URL da API no host Impacta, ou proxy reverso nginx dedicado
  • [ ] (Opcional) Reutilizar dashboard portal/cti/ copiando assets para nginx local do cliente

Fase 6 — Testes de regressão

Checklist em MIGRACAO-ATTENDER-LORENTZ.md §8:

  • [ ] Serviço inicia sem erro SQL
  • [ ] Central associa CSTA (bAssociate=True)
  • [ ] Agente login TCP :5000
  • [ ] Supervisor recebe estados :3000
  • [ ] URA responde XML :4000
  • [ ] Chamada receptiva → fila → distribuição
  • [ ] Tabelas CTI_* atualizam
  • [ ] Monitor API: curl …/api/monitor/snapshot
  • [ ] SSE: curl -N …/api/monitor/stream
  • [ ] 24h estável (journalctl)

Fase 7 — Cutover (legado Attender)

  • [ ] Janela de manutenção conforme MIGRACAO-ATTENDER-LORENTZ.md §9
  • [ ] Manter AttenderCTI como rollback por 7 dias
  • [ ] Desativar serviço legado após estabilização

6. Diferenças de configuração — INI

Chave Planta A (LorentzCTI Docker) Planta B (Impacta)
Modelo asterisk Intelbras
PhoenixPortaTCP 8000 5000 (padrão Attender)
CTI_Impacta_Ip IP Issabel / host.docker.internal IP da central Impacta
CTI_Impacta_Porta 5038 (AMI) 7001 (CSTA)
Username / Secret AMI Asterisk N/A ou credenciais CSTA
Arquivo INI LorentzCTI.ini LorentzCTI.Impacta.ini

7. Monitoramento — Planta B

Ferramenta Uso
Monitor API :8090 Substituto do MonitorCTI desktop — já no código Impacta
Portal /cti/ Dashboard web (copiar do stack ou proxy)
MonitorOPS :9090 Só se o host Impacta fizer parte de um stack Docker maior
journalctl Logs primários em deploy systemd

Endpoints: ver server/LorentzCTI/docs/api-monitor.md (válido para ambos os projetos).


8. Itens opcionais (backlog técnico)

Prioridade baixa — implementar somente quando a Planta B for vendida/implantada:

# Pendência Esforço
1 Script build-lorentz-cti-impacta-zip.sh + publish automatizado Baixo
2 docker-compose.impacta.yml isolado (sem Issabel) Médio
3 Template LorentzCTI.Impacta.ini.template no stack + render-config-impacta.sh Médio
4 Entrada separada no Portal (/cti-impacta/) ou flag multi-site em config.json Baixo
5 Runbook MonitorOPS para host systemd (sem container lorentz-cti) Baixo
6 Commit monorepo omnichannel: arquivos Impacta + Monitor API Baixo
7 Khomp gravação tronco (UseKhomp=true, Windows only) Conforme cliente

9. Documentação relacionada

Documento Conteúdo
07-lorentz-cti-servidor.md Planta A — LorentzCTI Docker + Monitor API
MIGRACAO-ATTENDER-LORENTZ.md Migração técnica Attender → Impacta
api-monitor.md API REST/SSE MonitorCTI
ENTREGA-V1.9.md Credenciais e URLs stack atual
Monorepo omnichannel/server/ LorentzCTI, LorentzCTI.Impacta, MonitorCTI legado

10. Histórico deste plano

Data Notas
2026-07-10 Criado após entrega Monitor API web (Planta A). API portada para Impacta em disco; deploy Impacta permanece pendente.