📱
Instalar SuportTech Interfones
Toque em CompartilharAdicionar à Tela Inicial para instalar o app
{{ snack.type==='success'?'✓':snack.type==='error'?'✕':'ℹ' }} {{ snack.msg }}
✅ Morador criado — credenciais do app
Email{{ credCard.email }}
Senha{{ credCard.password }}

SuportTech Interfones

Painel de Gerenciamento

{{ loginError }}

SuportTech Interfones · v2.0

{{ b.label }}

{{ pageTitle }}

AMI Redis
{{ now }}

Dashboard

{{ currentUser.role==='superadmin' ? 'Visão geral do sistema' : 'Visão geral do seu condomínio' }}

{{ s.icon }}
{{ stats[s.key] ?? '—' }}
{{ s.label }}
Chamadas por dia
Últimos {{ chartDays }} dias
Decisões
Distribuição total
Chamadas recentes
📋
Nenhuma chamada registrada ainda
Data/Hora Condomínio Visitante Apartamento Morador Decisão
{{ fmtDate(l.created_at) }} {{ l.client_name || '—' }} {{ l.visitor_name || '—' }} {{ l.destination_apt || '—' }} {{ l.resident_name || '—' }} {{ decisionLabel(l.decision) }}

Condomínios

{{ clients.length }} condomínio(s) cadastrado(s)

🏢
Nenhum condomínio cadastrado
{{ c.name }}
{{ c.slug }}
📷 {{ c.active?'Ativo':'Inativo' }}
{{ c.extension_count }}
Ramais
{{ c.resident_count }}
Moradores
{{ c.calls_today }}
Hoje
🏢
{{ currentClient.name }}
{{ currentClient.slug }} · {{ currentClient.use_ai !== false ? ('IA: ' + currentClient.ai_name) : 'Somente ramais (sem IA)' }}
📊 Visão Geral
👥 Moradores
📞 Ramais
📷 Câmeras
💰 Boletos
🏊 Espaços
📅 Reservas
🚗 Vagas
📢 Avisos
🔐 Armário
📱 Usuários App
📄 Contrato
💳 Cobrança
⚙️ Config
{{ s.icon }}
{{ clientStats[s.key] ?? '—' }}
{{ s.label }}
📞
Ramal da I.A (Portaria)
{{ currentClient.portaria_extension }}
Últimas chamadas
Sem chamadas registradas
Data/HoraVisitanteAptoMoradorDecisão
{{ fmtDate(l.created_at) }} {{ l.visitor_name || '—' }} {{ l.destination_apt || '—' }} {{ l.resident_name || '—' }} {{ decisionLabel(l.decision) }}
{{ residents.length }} morador(es)
👤
Nenhum morador cadastrado
NomeAptFunçãoRamalE-mail / App
{{ r.name }} {{ r.apartment }} {{ r.role==='sindico'?'👑 Síndico':r.role==='zelador'?'🔧 Zelador':'👤 Morador' }} {{ r.extension_number || '—' }} {{ r.email }} Sem acesso ao app
📡
Configuração SIP para Dispositivos
Use estas informações para configurar softphones e interfones IP
Servidor SIP (IP)
{{ sipInfo.host || '—' }}
IP público do PBX
DNS / FQDN
{{ sipInfo.dns || sipInfo.domain || sipInfo.host || '—' }}
Use o DNS OU o IP acima
Porta SIP
7040 (UDP)
Protocolo padrão SIP/UDP
Registro / Outbound Proxy
{{ sipInfo.dns || sipInfo.host || '—' }}:7040
Servidor de registro SIP
Hikvision DS-KH6110-WE1: Em Rede → SIP, configure o Servidor SIP com o DNS acima (pbx.suporttechcuritiba.com.br) ou o IP, porta 7040. Usuário SIP = número do ramal, senha = coluna abaixo.
Abertura de porta: O sistema envia DTMF # automaticamente ao autorizar acesso. Verifique em Configurações → Intercomunicador → Controle Remoto que o código de abertura é #.
⚠️
Atenção: Hikvision DS-KH6110-WE1
A tela 6110 da Hikvision apresenta problemas para esse tipo de projeto (falha intermitente no áudio ao atender chamadas da Portaria AI). Recomendamos não utilizar esse modelo — prefira um telefone IP padrão ou outro modelo de intercomunicador para o ramal do morador.
{{ extensions.length }} ramal(is)
📞
Nenhum ramal cadastrado
NúmeroLabelTipoAparelhoSenha SIPStatus
{{ e.number }} {{ e.label }} {{ e.ext_type==='portaria'?'Portaria':'Resid.' }} {{ e.device_type==='iphone'?'📱 iPhone':(e.device_type==='android'?'🤖 Android':(e.device_type==='facial'?'📹 Facial':(e.device_type==='fixo'?'☎️ Fixo':e.device_type))) }} {{ e.password }} {{ e.registered ? 'Registrado' : 'Offline' }}
🏠 Grupos de Ramais por Apartamento (ligue no grupo para tocar todos os dispositivos do ap)
ApartamentoRamal do Grupo (80XX)Dispositivos
Ap {{ a.number }} {{ a.group_extension || '—' }} {{ a.devices ? a.devices.length : 0 }} ramal(is)
Nenhum apartamento cadastrado com grupo de ramais. Crie grupos na aba de configuração do condomínio.
📷
Plano Câmeras RTSP Ativo
Configure a URL RTSP de cada câmera/dispositivo para transmissão ao vivo durante chamadas.
RamalLabelURL RTSPStatus
{{ e.number }} {{ e.label }} Configurado Sem câmera
ℹ️ Nota: URLs RTSP acima são usadas pela IA durante chamadas. Para streaming ao vivo via browser, use a aba 📷 Câmeras com URL HLS.
📷 Câmeras ao Vivo
Streaming HLS direto do dispositivo (sem processamento no servidor)
📷
Nenhuma câmera cadastrada
▶️
Clique para assistir
{{ cam.name || 'Câmera '+cam.id }}
{{ cam.hls_url || 'Sem URL HLS' }}
💰 Boletos
Cobranças e contas do condomínio
💰
Nenhum boleto cadastrado
MoradorAptoDescriçãoValorVencimentoStatus
{{ b.resident_name || '—' }} {{ b.apt || '—' }} {{ b.description.split(' | ')[0] }} 📄 PDF {{ b.description }} R$ {{ Number(b.amount).toFixed(2) }} {{ b.due_date || '—' }} ✓ Pago 💬 WA Vencido Pendente
🏊 Espaços Comuns
Salão de festas, churrasqueira, piscina e demais áreas reserváveis pelo app
⚙️
Configure o ID do Condomínio no App primeiro (aba ⚙️ Config)
🏊
Nenhum espaço cadastrado. Adicione espaços para que os moradores possam fazer reservas pelo app.
NomeTipoCapacidadeHorárioAprovação
{{ a.name }} {{ a.type }} {{ a.capacity }} pessoas {{ a.available_start }} – {{ a.available_end }} {{ a.requires_approval ? 'Manual' : 'Automática' }}
📅 Reservas do App
Reservas feitas pelos moradores no aplicativo
⚙️
Configure o ID do Condomínio no App primeiro
📅
Nenhuma reserva no app. Os moradores reservam espaços pelo aplicativo.
EspaçoMoradorAptoDataHorárioStatus
{{ b.amenity_name || '—' }} {{ b.user_name }} {{ b.apt_number }} {{ b.date }} {{ b.start_time }} – {{ b.end_time }} {{ b.status==='pending'?'Pendente':b.status==='approved'?'Aprovada':b.status==='rejected'?'Recusada':'Cancelada' }}
🚗 Vagas de Garagem
Cadastro e atribuição de vagas por apartamento
⚙️
Configure o ID do Condomínio no App primeiro
🚗
Nenhuma vaga cadastrada
NúmeroTipoApartamentoPlaca
Vaga {{ v.number }} {{ v.type==='covered'?'🅿️ Coberta':'🚗 Descoberta' }} {{ v.apt_number ? ('Apt '+v.apt_number) : '—' }} {{ v.plate || '—' }}
📢 Avisos
Comunicados e informações para os moradores
📢
Nenhum aviso publicado
{{ av.category }} {{ av.status==='pendente' ? '⏳ Aguardando aprovação' : (av.wa_sent ? '✅ Enviado via WA' : '✅ Aprovado') }} {{ fmtDate(av.created_at) }}
{{ av.title }}
{{ av.body }}
🔐 Armário Inteligente
Gerenciamento de armários e encomendas
Painel do Armário Inteligente 🔗 Abrir em nova aba
📱 Usuários do Aplicativo
Moradores, síndicos e zeladores que acessam o app
⚙️
ID do Condomínio não configurado
Vá em ⚙️ Config e informe o ID do Condomínio no App para vincular este condomínio ao aplicativo.
👤
Nenhum usuário do app cadastrado.
NomeE-mailAptFunçãoRamal SIPStatus
{{ u.name }} {{ u.email }} {{ u.apt_number || '—' }} {{ u.role==='sindico'?'👑 Síndico':u.role==='zelador'?'🔧 Zelador':u.role==='superadmin'?'⭐ Admin':'👤 Morador' }} {{ u.sip_user || '—' }} {{ u.active?'Ativo':'Inativo' }}
Cobrança Automática
Ativa
Inativa
Status dos Ramais
⚠️ Suspenso
✅ Ativo
Mensalidade
R$ {{ (billingStatus.monthly_fee||0).toFixed(2) }}
Atraso
{{ billingStatus.overdue_days }} dias
Em dia
Última Cobrança Asaas
Referência
{{ billingStatus.last_payment.externalReference || '—' }}
Vencimento
{{ billingStatus.last_payment.dueDate || '—' }}
Valor
R$ {{ (billingStatus.last_payment.value||0).toFixed(2) }}
Status
{{ {RECEIVED:'Pago',OVERDUE:'Vencido',PENDING:'Pendente',CONFIRMED:'Confirmado'}[billingStatus.last_payment.status] || billingStatus.last_payment.status }}
Nenhuma cobrança encontrada no Asaas para este mês. Use "Cobrar Agora" para criar.
Ações
⚠️ Os ramais deste condomínio estão suspensos por inadimplência. Ao confirmar pagamento via webhook do Asaas, serão reativados automaticamente.
📅 Gerar 12 Boletos Anuais
Cria 12 cobranças mensais no Asaas. Meses já cobrados são ignorados (idempotente).
❌ {{ billingAnnualResult.error }}
✅ {{ billingAnnualResult.new }} criado(s) · {{ billingAnnualResult.existing }} já existia(m) · Total: {{ billingAnnualResult.total }}
📋 Boletos no Asaas
Carregando...
Nenhum boleto encontrado no Asaas.
Vencimento Valor Status Ação
{{ p.dueDate }} R$ {{ parseFloat(p.value||0).toFixed(2) }} {{ {RECEIVED:'Pago',CONFIRMED:'Confirmado',OVERDUE:'Vencido',PENDING:'Pendente'}[p.status]||p.status }} 📄 PDF 🔗 Ver
Configurações de Cobrança
Configurações do Condomínio
📱 Integração KAS App
✅ Vinculado: {{ condoRefResolved.name }} (ID {{ condoRefResolved.id }})
❌ Condomínio não encontrado. Verifique o nome ou ID.
Aceita nome completo, slug ou número ID do condomínio no aplicativo.

📄 Gerador de Contrato

Preencha os campos e clique em Gerar PDF. O contrato abre em nova aba — use Ctrl+P para salvar como PDF.

🏢 Dados do Condomínio / Síndico
💰 Dados Comerciais
⚖️ Implantação, Suporte e Foro
🔌 Equipamentos Homologados (Anexo V)
✅ Contrato aberto em nova aba. Use Ctrl+P → Salvar como PDF para exportar.
🏠 {{ portalData.condo_name }}
Bem-vindo, ramal {{ portalData.extension }}{{ portalData.apartment ? ' · Ap ' + portalData.apartment : '' }}{{ portalData.block ? ' · Bloco ' + portalData.block : '' }}
Grupo de chamada: {{ portalData.group_extension }}
Dispositivos do Apartamento
RamalIdentificaçãoStatus
{{ d.number }} {{ d.label }} {{ d.registered ? 'Online' : 'Offline' }}
Para configurar seu dispositivo SIP, solicite os dados ao síndico ou administrador do condomínio.
Carregando dados do apartamento...

Usuários do Sistema

Gerencie acesso de administradores

👤
Nenhum usuário encontrado
UsuárioEmailPerfilCondomínioÚltimo acessoStatus
{{ u.username?.[0]?.toUpperCase() }}
{{ u.username }}
{{ u.email || '—' }} {{ u.role==='superadmin'?'Super Admin':'Admin' }} {{ u.client_name || '—' }} {{ u.last_login ? fmtDate(u.last_login) : 'Nunca' }} {{ u.active?'Ativo':'Inativo' }}

🖥️ Logs do Sistema (tempo real)

Uvicorn, Issabel/SSH, exceções — atualiza sozinho, sem precisar recarregar.

{{ logStreamConnected ? 'Conectado' : 'Desconectado' }}
Aguardando logs...
{{ l.ts }} [{{ l.level }}] {{ l.message }}

Histórico de Chamadas

{{ logsTotal }} registros encontrados

Chamadas filtradas por dia
📋
Nenhuma chamada encontrada
Data/Hora Condomínio Visitante Apartamento Morador Motivo Decisão
{{ fmtDate(l.created_at) }} {{ l.client_name || '—' }} {{ l.visitor_name || '—' }} {{ l.destination_apt || '—' }} {{ l.resident_name || '—' }} {{ l.reason || '—' }} {{ decisionLabel(l.decision) }}
Página {{ logPage }} de {{ Math.ceil(logsTotal/logPageSize) }}

📱 App Mobile SuportTech Interfones

Distribua o aplicativo para moradores e síndicos

📦 Download APK (Android)

Dois links disponíveis — use o da VPS para distribuição direta:

Link Principal (VPS)
https://interfone.suporttechcuritiba.com.br/admin/download/app
Link GitHub Release
https://github.com/kleberkadanus/kas-condo-app/releases/download/v1.0.0/app-debug.apk
📋 Instruções de instalação Android:
  1. Baixe o APK pelo link acima
  2. No celular: Configurações → Segurança
  3. Ative "Instalar apps desconhecidos"
  4. Abra o arquivo APK baixado
  5. Toque em Instalar
🍎 iOS — Web App

Para iPhone/iPad, o app funciona como Web App instalável diretamente pelo Safari.

https://interfone.suporttechcuritiba.com.br/admin/
📋 Instruções iOS (Safari):
  1. Abra o link acima no Safari
  2. Toque no ícone de Compartilhar (caixa com seta)
  3. Role para baixo e toque em "Adicionar à Tela Inicial"
  4. Toque em Adicionar
  5. O app aparecerá na tela inicial como um ícone
📊 Status do App
Build Android ✓ Ativo
iOS Web App ✓ Disponível
API Backend {{ health.ami?'✓ Online':'✕ Offline' }}

Configurações do Sistema

Chaves de API, conexão Asterisk e status

Status do Sistema
Asterisk AMI
{{ health.ami ? 'Conectado e funcional' : 'Desconectado — verifique configurações' }}
Redis Cache
{{ health.redis ? 'Operacional' : 'Indisponível' }}
Chaves de API
Integrações de IA e voz
Asaas — Cobrança Automática
Chave de API para emissão de boletos/PIX e webhook de confirmação
Recebe POST com {condominio, valor, vencimento, link, tipo} a cada evento de cobrança
Webhook Asaas: configure no painel da Asaas a URL
https://{{ sysSettings.asterisk_host || 'seu-dominio' }}/api/asaas/webhook
para os eventos PAYMENT_RECEIVED e PAYMENT_CONFIRMED.
Conexão Asterisk/Issabel
Configurações do PBX
Alterar Minha Senha

VPN / Rede Privada

WireGuard — 10.200.1.0/24 — dispositivos em rede interna sem redirecionamento de portas

{{ vpnPeers.filter(p=>p.connected).length }}
Dispositivos Online
{{ vpnPeers.length }}
Total de Peers
10.200.1.1
Servidor VPN (SuportTech)
Peers da Rede VPN
StatusDispositivoIP VPNEndpoint Real Último HandshakeRX / TX
{{ p.connected ? 'Online' : 'Offline' }}
{{ p.label || '(sem nome)' }}
{{ p.pubkey.substring(0,20) }}...
{{ p.vpn_ip || '—' }} {{ p.endpoint || '—' }} {{ vpnFormatHandshake(p.latest_handshake) }} {{ vpnFormatBytes(p.rx_bytes) }} / {{ vpnFormatBytes(p.tx_bytes) }}
Nenhum peer cadastrado
Endereços Fixos da Infraestrutura
Servidor VPN (SuportTech): 10.200.1.1 — 178.92.163.223
Gateway LAN do Condo: 10.200.1.2 → 10.10.1.0/24
Portaria AI (API): 10.200.1.3 — 104.234.200.93
Issabel PBX: 10.200.1.4 — 82.152.175.169
💡 Para usar ISAPI ou RTSP de um dispositivo, configure o IP VPN dele no campo URL do painel de cada condomínio. Exemplo: http://10.10.1.233/ISAPI/AccessControl/RemoteControl/door/0

WhatsApp

Status da conexão WhatsApp — número único do condomínio (via Smart Locker)

Status da Conexão
{{ waStatus.label || 'Verificando...' }}
WhatsApp conectado e funcionando
Moradores receberão notificações normalmente
📱 Abra o WhatsApp no celular → Aparelhos conectadosConectar aparelho → escaneie o QR abaixo
Carregando QR...
O QR atualiza automaticamente a cada 5 segundos
Conectando...
⚠️ WhatsApp desconectado
O sistema tentará reconectar automaticamente. Se demorar, acesse o painel do Smart Locker.