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

26
TODO.md
View File

@@ -2091,6 +2091,32 @@ mostrar quantos ramais estao online e o status de cada ramal criado")
hoje é construído à mão no editor genérico de dialplan; backend já
suporta tudo que uma UI assim precisaria gerar
## PHASE 57 — Discagem interna não funcionava em tenant novo (achado real
reportado pelo usuário: "a ligacao entre ramais nao esta funcionando")
- [x] achado real: não era regressão nenhuma do trabalho desta sessão —
o tenant `teste01` (onde o usuário registrou 1501/1502 por conta
própria) 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 os testes
(Acme). Ou seja: TODO tenant novo nascia sem conseguir ligar entre
os próprios ramais, um gap real de produto, não um bug pontual
- [x] `DEFAULT_DIALPLAN_EXTENSIONS` (novo, `packages/telephony`) — as
mesmas 2 regras já testadas ponta a ponta com chamada real na
PHASE 53 (discagem interna com pickup de grupo + `*8`).
`TenantsController.create()` agora semeia essas regras + já ativa
a versão 1 do contexto `default`, dentro da MESMA transação de
criação do tenant — nenhum tenant novo nasce mais sem conseguir
discar entre ramais
- [x] Reparo pontual do tenant `teste01` já existente (mesmas 2 regras,
inseridas direto via SQL — não tem endpoint de "reparar tenant
existente", só o seed de tenant NOVO). Testado com uma chamada
real: `originate` de 1501 pra 1502 tocou de verdade no aparelho do
usuário (`RINGING` → `NO_ANSWER`, não mais 404/dialplan not found)
- [x] Testado o auto-seed em si criando um tenant novo de verdade
(`testeivr`) via `POST /tenants` — confirmado no banco: versão 1 do
contexto `default` já nasce `ACTIVE` com as 2 regras. Tenant de
teste suspenso ao final (sem endpoint de delete de tenant)
---
## Riscos conhecidos