Ir para o conteúdo

Atualização do Supervisor web (PHP)

Guia para alterações no código-fonte de supervisor/ e como propagar para VPS em produção/homologação — incluindo equipe de suporte sem monorepo completo.

Relacionado: 08-supervisor-web.md (deploy inicial), 15-distribuicao-equipe-suporte.md (pacote tar.gz).


Como o Supervisor roda no stack

Host VPS
└── ../supervisor/          ← código PHP (bind mount)
    └── montado em /var/www/html no container lorentz-supervisor

lorentz-vps-stack/
├── config/runtime/
│   ├── att_config.php      ← gerado (SQL, Phoenix, URL)
│   └── api-att_config.php
└── docker/supervisor/      ← imagem Apache+PHP+sqlsrv (raramente muda)
Camada Onde altera Rebuild container?
PHP (*.php, JS, CSS) supervisor/ Não — basta sync + restart
Config SQL/Phoenix lorentz-vps-stack/.env + render-config.sh Não
Dependências Composer supervisor/vendor/ Não (se vendor incluído no pacote)
Extensões PHP / Dockerfile docker/supervisor/Dockerfile Simdocker compose build supervisor
Schema SQL SQL Server Scripts/migrations separados

Tipos de alteração

1. Só arquivos PHP / front-end (caso mais comum)

Exemplos: telas cti_*, sac_*, att_*, AJAX, relatórios.

Desenvolvimento:

# Editar em omnichannel/supervisor/
# Testar localmente se houver ambiente PHP, ou direto na VPS de dev

VPS (bind mount — efeito imediato nos arquivos, recomendado restart Apache):

cd ~/omnichannel/lorentz-vps-stack
docker compose restart supervisor
curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8080/login.php

2. Configuração (URL, SQL, Phoenix)

Altere lorentz-vps-stack/.env, não edite att_config.php manualmente na VPS:

cd ~/omnichannel/lorentz-vps-stack
nano .env
./scripts/render-config.sh
docker compose restart supervisor

Template: config/templates/att_config.php.template.

3. Dependências Composer

Se composer.json mudou:

cd ~/omnichannel/supervisor
composer install --no-dev --optimize-autoloader
cd api && composer install --no-dev --optimize-autoloader

Inclua vendor/ no pacote enviado ao suporte (o build-supervisor-package.sh copia tudo exceto exclusões do tar — vendor é incluído por padrão).

4. Dockerfile / extensões PHP

Exemplos: nova extensão pecl, versão PHP, ODBC.

cd ~/omnichannel/lorentz-vps-stack
docker compose build supervisor
docker compose up -d supervisor

Distribua novo pacote stack ou instrua suporte a puxar atualização de lorentz-vps-stack/docker/.

5. API JWT / CORS

Arquivo supervisor/api/config.php — não é gerado pelo template.

  • Desenvolvimento: commitar alterações e incluir no pacote supervisor
  • Produção: trocar JWT_SECRET e restringir CORS_ALLOWED_ORIGINS

6. Banco de dados (novas tabelas/colunas)

Alterações em módulos PHP que exigem schema SQL:

  • Rodar scripts em supervisor/api/scripts/ ou restore .bak
  • Ver 05-sql-server.md
  • Reiniciar Supervisor não aplica schema — executar SQL separadamente

Fluxo desenvolvimento → suporte

Passo 1 — Desenvolver e validar

cd omnichannel/supervisor
# ... alterações ...
cd ../lorentz-vps-stack
./scripts/render-config.sh
docker compose restart supervisor
./scripts/validate-install.sh

Passo 2 — Gerar pacote só Supervisor (patch)

./scripts/build-supervisor-package.sh
# → resources/supervisor.tar.gz

Opcional: incluir no release completo:

./scripts/build-dist-package.sh <versao>

Passo 3 — Entregar ao suporte

Entrega Quando
supervisor.tar.gz apenas Hotfix PHP / telas
lorentz-deploy-*.tar.gz completo Stack + CTI + Supervisor + scripts

Enviar SHA256 (gerado pelo build-supervisor-package.sh ou MANIFEST.json).

Passo 4 — Suporte aplica na VPS

cd ~/omnichannel/lorentz-vps-stack
# Copiar supervisor.tar.gz para resources/
./scripts/update-supervisor-web.sh resources/supervisor.tar.gz

O script:

  1. Faz backup em dist/supervisor-backup-*.tar.gz
  2. Substitui ../supervisor/
  3. Roda render-config.sh
  4. Reinicia container e testa HTTP 200 em /login.php

Reinício rápido (sem trocar arquivos):

./scripts/update-supervisor-web.sh --restart-only

Sync direto (SCP/rsync) — ambiente de dev

Sem tar.gz, para VPS de homologação:

# Windows — arquivos alterados
scp -i sua-chave.pem -r d:\omnichannel\supervisor\cti_agenteslist.php `
  usuario@IP:~/omnichannel/supervisor/
# Linux — pasta inteira
rsync -avz --exclude='.git' --exclude='vendor/.cache' \
  ./supervisor/ usuario@IP:~/omnichannel/supervisor/
ssh usuario@IP 'cd ~/omnichannel/lorentz-vps-stack && docker compose restart supervisor'

O que não sobrescrever na atualização

Pasta/arquivo Motivo
supervisor/uploads/ Uploads dos usuários (volume Docker)
supervisor/log/ Logs (volume Docker)
lorentz-vps-stack/.env Credenciais do cliente
config/runtime/ Regenerado por render-config.sh

Os volumes supervisor-uploads e supervisor-log persistem no Docker — atualizar PHP não apaga uploads.


Checklist pós-alteração

  • [ ] render-config.sh se .env ou templates mudaram
  • [ ] composer install se composer.json mudou
  • [ ] SQL aplicado se schema mudou
  • [ ] docker compose restart supervisor ou update-supervisor-web.sh
  • [ ] Login http://<IP>:8080/login.php → HTTP 200
  • [ ] Módulo alterado testado manualmente
  • [ ] Phoenix/CTI: `docker exec lorentz-supervisor bash -c '