- fix: migrationRunner.after() que falha agora impede registro da migracao
- fix: adicionar EQU_MENSAGEM e EQU_ETIQUETA_ID ao banco novo
- fix: recriar generators faltantes e tabela CHATC2_MOTIVOS_ATENDIMENTO no banco novo
- configService agora le direto do banco (sem TTL, sem stale data)
- invalidarConfig virou no-op (não há cache para invalidar)
- cacheService.js removido (so era usado pelo configService)
- endpoint /metrics sem referencia ao cacheService
- fix: migration #25 agora so cria o generator (tabela ja existe no ERP)
- fix: insert usa MENSAGEM_CLIENTES (singular) e GEN_MENSAGEM_CLIENTES
- fix: database.js whitelist atualizado para GEN_MENSAGEM_CLIENTES
- Adiciona .pi/ e .impeccable/ ao .gitignore (ferramentas de dev)
- Adiciona logs/, tmp/, uploads/ ao .gitignore (runtime artifacts)
- Remove .pi/ e .impeccable/ do tracking git
- Botão '+' na sidebar para iniciar conversa com qualquer número
- Busca automática: cliente → dependente → número novo
- Campo de mensagem inicial personalizável no modal
- Normalização de número (DDI 55) ao enviar via Evolution API
- Modal de nova conversa com suporte a dark mode
- Correção: foto do cliente não é mais atualizada a cada mensagem
- Correção: triagem não processa respostas se já tem atendente+equipe
- Foto do cliente atualizada automaticamente ao abrir a conversa (remove botão manual)
- Exibe CLI_FOTO na tela de Dados do Cliente; matrícula com conversão robusta
- Envio de boleto na conversa (checkbox em Configurações > Empresa): lista títulos em aberto e envia texto com linha digitável + PIX ao cliente
- Novo Dashboard (gerente): conversas (abertas/não atendidas/não atribuídas/pendentes), atendentes disponíveis/desconectados e heatmap de tráfego
- Presença de atendentes em memória + ping periódico do chat/dashboard
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- main.css: media queries (1024/768/480) — sidebar vira barra horizontal,
tabelas com rolagem, busca/modais adaptados
- chat.html: layout de 3 colunas vira navegação de painel único no mobile
(lista -> conversa com botão voltar; painel de info como overlay)
- settings.html: abas com rolagem horizontal no celular
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Settings > Fluxo: cadastro de motivos e flags (visualizar/obrigatório
para motivo e resolução)
- Tela de conversa: dropdown de motivos + campo de resolução abaixo dos
dados do titular, exibidos conforme configuração
- Finalização valida obrigatoriedade (front e backend) e salva
CON_MOTIVO_ID/CON_RESOLUCAO
- Estrutura criada de forma idempotente (Postgres/Firebird) em
src/resolucaoSetup.js; CRUD de motivos restrito a gerente
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Alias "novo": PostgreSQL externo (db.assantos.app.br, schema atendi, SSL)
- Alias "novo_local": Firebird (NOVO.FDB) para base legada
- Adiciona .env.example como modelo de configuração
- .gitignore: ignora .gitignore e CONTEXTO.md
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Camada de banco unificada (src/database.js): drivers Postgres/Firebird,
tradutor de SQL, suporte a schema e pool de conexões
- Conexões: novo_local (Postgres externo) e firebird_local (legado)
- Tela de rotas da API redesenhada (auth, params, exemplos de body)
- Correções de segurança (críticos/altos/médios/baixos): XSS no chat,
escalonamento de privilégio, mídia autenticada, SQL restrito a gerente,
JWT sem fallback + issuer, IDOR em conversas, CORS por allowlist,
rate-limit no login, limites de corpo por rota
- Deploy alinhado: install.sh grava .env com PG_*, migracoes.js driver-aware
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>