feat: edição de rotas de entrada, fix de 2 bugs reais no ESL, diagnóstico de NAT/áudio e softphone WebRTC (PHASE 65/66)
Três achados reportados pelo usuário numa mensagem só: (1) Rotas de Entrada não tinha edição depois de criada — implementada no mesmo padrão de Filas; (2) telas de Platform > Infraestrutura sempre davam "Timeout no ESL" nesta VM — não era limitação permanente como o comentário antigo dizia, e sim ESL_HOST=freeswitch (nome DNS que só existe dentro da rede do Docker) mais um segundo bug independente (`show gateways as json` não é comando válido nesta versão do FreeSWITCH); (3) ramal externo registrava mas sem áudio — diagnosticado com contadores de pacote do iptables: a VM está atrás de um roteador sem port-forward pra faixa de RTP, achado de infraestrutura de rede, não bug de código. Também integra o softphone WebRTC (handphone.js/OpenSIPS, já em produção): código-fonte encontrado em git.falehandix.com.br/Handix/handphone-2.0, patch mínimo pra aceitar o endereço do proxy em runtime (era build-time), nova config global (Platform > Infraestrutura > Softphone WebRTC) e widget na topbar do tenant que pega usuário/domínio/senha do ramal vinculado ao agente logado. Adiciona docs/QA_SETUP.md — runbook completo pra subir o ambiente do zero numa máquina nova (Docker, migrations, seed, systemd), e completa o .env.example que estava faltando a maioria das variáveis reais. Testado ponta a ponta com Playwright: edição de rota (criar/editar/F5), as 3 telas de Infraestrutura com dado real, e um tenant/ramal/agente de teste criados na hora confirmando que o script do softphone recebe as credenciais certas. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BFaBaBSQGhyXGEgtTYZGV8
This commit is contained in:
@@ -0,0 +1,11 @@
|
||||
-- PHASE 66: configuração global de plataforma, chave-valor. Sem tenant_id
|
||||
-- (não é escopo de tenant, sem RLS, mesmo padrão de roles/permissions).
|
||||
-- Primeiro uso: endereço WSS do proxy OpenSIPS pro softphone (Handphone).
|
||||
CREATE TABLE "platform_settings" (
|
||||
"key" TEXT NOT NULL,
|
||||
"value" TEXT NOT NULL,
|
||||
"updated_at" TIMESTAMP(3) NOT NULL,
|
||||
"updated_by" UUID,
|
||||
|
||||
CONSTRAINT "platform_settings_pkey" PRIMARY KEY ("key")
|
||||
);
|
||||
@@ -2131,3 +2131,18 @@ model BillingStatementItem {
|
||||
@@index([billingStatementId])
|
||||
@@map("billing_statement_items")
|
||||
}
|
||||
|
||||
// Configuração global de plataforma, chave-valor — sem tenant_id (não é
|
||||
// escopo de tenant, não leva RLS, mesmo padrão de Role/Permission). Tabela
|
||||
// genérica pra não precisar de migration nova a cada config global futura.
|
||||
// Primeiro uso (PHASE 66): endereço WSS do proxy OpenSIPS que faz a ponte
|
||||
// WebRTC↔SIP pro softphone embutido (Handphone) — o FreeSWITCH deste
|
||||
// projeto nunca fala WebRTC diretamente, só SIP puro (ver docs/SOFTPHONE.md).
|
||||
model PlatformSetting {
|
||||
key String @id
|
||||
value String
|
||||
updatedAt DateTime @updatedAt @map("updated_at")
|
||||
updatedBy String? @map("updated_by") @db.Uuid
|
||||
|
||||
@@map("platform_settings")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user