feat(frontend): Call Center > Filas/Pausas/Disposições, Telefonia > Troncos, Discador > Lista de Bloqueio

Cinco telas novas no app do tenant, todas contra endpoints de backend que já
existiam (Queues/PauseReasons/Dispositions/Trunks/Suppression) — mesmo padrão
de listagem+form inline+remoção com confirmação de 2 cliques usado em Ramais.
StatusBadge ganhou o mapa de TrunkStatus. Corrigido bug real: PauseReasonsController.list()
não filtrava enabled:true, então um motivo removido nunca sumia da lista.
Testado ponta a ponta contra a API real do tenant Acme.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BFaBaBSQGhyXGEgtTYZGV8
This commit is contained in:
2026-08-29 11:50:09 -03:00
parent 927a2623c2
commit de1e7ac49c
37 changed files with 1447 additions and 13 deletions

View File

@@ -60,7 +60,12 @@ export class PauseReasonsController {
async list(@CurrentUser() user: AccessTokenClaims) {
const prisma = getPrismaClient();
const tenantId = user.tenantId!;
return withTenantContext(prisma, tenantId, (tx) => tx.pauseReason.findMany({ orderBy: { name: "asc" } }));
// Bug real, achado testando o frontend: sem o filtro `enabled: true`
// aqui, um motivo "removido" (soft delete, ver `remove` abaixo) nunca
// sumia da lista — único endpoint deste arquivo sem esse filtro.
return withTenantContext(prisma, tenantId, (tx) =>
tx.pauseReason.findMany({ where: { enabled: true }, orderBy: { name: "asc" } }),
);
}
@RequirePermission("agents.manage")