- 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>