fix(telefonia): tenant novo nasce sem conseguir discar entre ramais

Achado real reportado pelo usuário: "a ligacao entre ramais nao esta
funcionando". Não era regressão de nada desta sessão — o tenant onde o
usuário registrou os próprios ramais de teste tinha ZERO regras de
dialplan e ZERO versão ativa. Nenhum tenant nascia com a regra de
"discagem interna": só existia nos tenants onde eu mesmo configurei
manualmente durante testes anteriores (Acme). Todo tenant novo nascia
incapaz de ligar entre os próprios ramais até alguém configurar isso à
mão em Telefonia > Dialplan — um gap real de produto.

`DEFAULT_DIALPLAN_EXTENSIONS` (novo, packages/telephony) tem as mesmas 2
regras já testadas ponta a ponta com chamada real (PHASE 53): discagem
interna com pickup de grupo + `*8`. `TenantsController.create()` agora
semeia essas regras e já ativa a versão 1 do contexto default, na mesma
transação de criação do tenant.

Reparo pontual aplicado no tenant existente do usuário (mesmas 2 regras,
via SQL direto — não existe endpoint de "reparar tenant já criado").
Testado com uma chamada real: originate de um ramal pro outro tocou de
verdade no aparelho do usuário (RINGING -> NO_ANSWER, não mais dialplan
not found). Auto-seed testado criando um tenant novo de verdade via
POST /tenants — confirmado no banco que a versão 1 já nasce ACTIVE.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BFaBaBSQGhyXGEgtTYZGV8
This commit is contained in:
2026-08-30 17:10:15 -03:00
parent 7763afacc0
commit 83eb2c5aea
5 changed files with 110 additions and 1 deletions

View File

@@ -28,6 +28,19 @@ POST /dialplan/versions/:id/activate -- marca ACTIVE, a anterior vira
**Reativar uma versão antiga é o próprio rollback** — não existe endpoint
separado. `GET /dialplan/versions` mostra o histórico completo.
## Dialplan padrão pra tenant novo (PHASE 57)
Achado real reportado pelo usuário: "a ligação entre ramais não está
funcionando" — nenhum tenant nascia com nenhuma regra de dialplan, então
nenhum tenant novo conseguia discar entre os próprios ramais até alguém
configurar manualmente em Telefonia > Dialplan. `DEFAULT_DIALPLAN_EXTENSIONS`
(`packages/telephony/src/default-dialplan.ts`) tem as 2 regras mínimas
(discagem interna com pickup de grupo + `*8`, já testadas ponta a ponta
com chamada real na PHASE 53) — `TenantsController.create()` semeia essas
regras e já ativa a versão 1 do contexto `default`, dentro da MESMA
transação de criação do tenant. Um tenant criado ANTES desta fase precisa
de reparo manual (inserir as mesmas 2 linhas + gerar/ativar uma versão).
## Mecanismo: dinâmico por chamada, não arquivo+rescan
Ao contrário de Trunks (gateways carregados uma vez no boot/rescan),