Commit Graph

165 Commits

Author SHA1 Message Date
VPS 4 Deploy Agent f75dba0a8f feat(settings): oculta termos técnicos (Baileys/Infinity) para não-admin
Os rótulos técnicos das engines só aparecem para admin ou ruibto@gmail.com:
- usuário comum vê "API estável" e "API com botões";
- admin/ruibto vê "API estável (Baileys 7)" e "InfinityAPI".
(O item 'Baileys' na Sidebar e a página /baileys já são admin-only.)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-28 05:53:45 +02:00
VPS 4 Deploy Agent 43f519e7aa feat(settings): selo Conta Business, aviso de re-scan ao trocar API, log de erro de botões
- Detecta WhatsApp Business (app) via getBusinessProfile no pós-conexão e
  persiste em instances.isBusiness; painel mostra "Conta Business: sim/não"
  (com nota Business App ≠ Business API).
- Painel avisa que trocar de API desconecta e exige escanear o QR novamente,
  com confirmação antes de aplicar a troca.
- sendRichMessage agora monitora e loga erros especificamente quando a mensagem
  tem botões/lista/carrossel (diagnóstico de rejeição de interativos por engine).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-28 05:45:34 +02:00
VPS 4 Deploy Agent c801d8d820 feat(settings): painel mostra API estável + InfinityAPI (não remove a infinite)
Ajuste: o painel de configurações lista as DUAS engines selecionáveis —
"API estável" (baileys7) e "InfinityAPI" (infinite) — além da versão.
Apenas a 'official' (Baileys 6, que dá 401) fica de fora da UI.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-28 05:12:03 +02:00
VPS 4 Deploy Agent c8c58c3a35 feat(settings): painel central de configurações (API estável + versão)
O ícone de configurações deixa de abrir popover flutuante e passa a abrir um
painel grande na área central (no lugar das mensagens). O painel mostra apenas:
- "API estável" (= engine Baileys 7 oficial/baileys7, a que conecta), com ação
  de ativar na instância;
- a versão do sistema (lida de /version.json).
ThinSidebar simplificada (sem o seletor flutuante); as engines seguem
selecionáveis no backend para teste.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-28 05:07:50 +02:00
VPS 4 Deploy Agent 5170a31aac feat(engine): adiciona 3ª engine Baileys 7 oficial (baileys7) para teste
Instala baileys@7.0.0-rc13 sob alias 'baileys-official' (coexiste com a
'infinite' = baileys 7.0.0-rc.9 e a 'official' = @whiskeysockets/baileys 6.x).
Nova engine 'baileys7' (LID/username, app-state moderno) selecionável por
instância; validação do PATCH /engine e rich-message (botões nativos v7)
atualizados; opção adicionada ao seletor da ThinSidebar.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-28 04:42:42 +02:00
VPS 4 Deploy Agent e980097fbe feat(chats): sincroniza chats fixados (pin/arquivo) via app-state
Pin/arquivo/mute não vêm no history sync nem em chats.upsert — vivem no
app-state do WhatsApp. Adiciona syncChatStates() que faz resyncAppState das
collections critical_unblock_low/regular_high/regular (isoladas: uma falha não
derruba as outras); os pins chegam como chats.update e já são aplicados em
isPinned, subindo os fixados ao topo (ordenação já existente). Roda no
pós-conexão e reexecuta (3s/15s/40s) pois as app-state keys chegam após parear.
Obs.: depende da engine 'official' (a InfiniteAPI não sincroniza app-state).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-28 00:53:57 +02:00
VPS 4 Deploy Agent 9d2412df21 feat(safety): kill switch de saída (DISABLE_OUTBOUND) p/ ambientes de teste
Quando DISABLE_OUTBOUND=true, envolve sock.sendMessage na criação da sessão e
bloqueia QUALQUER envio ao WhatsApp — backstop universal, pois todo envio
(rotas, IA/secretária, chatbot, scheduler, warmer, plugins) usa este sock.
Evita que automações disparem mensagens a contatos/grupos reais ao conectar uma
sessão real em dev. Em produção a flag fica ausente/false (envios normais).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-28 00:17:10 +02:00
VPS 4 Deploy Agent 58583db63d chore(backend): remove .js/.js.map artefatos versionados em src + gitignore
src/ continha 114 artefatos (.js + .js.map) de builds antigos mal-configurados,
commitados por engano. Não são usados em runtime (dev usa tsx sobre .ts; prod usa
dist/, gerado por tsc com rootDir=src/outDir=dist). Remove todos e adiciona
backend/.gitignore para impedir que voltem.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-27 23:49:56 +02:00
VPS 4 Deploy Agent 2a15e8ea1e fix(secretaria): migra colunas de telemetria em sec_messages (42703)
O createTable de sec_messages não tinha usage_tokens/provider_used/model_used,
mas brain.ts insere esses campos — quebrando com "column does not exist" em
qualquer banco criado antes dessas colunas (ex.: clones). Adiciona as colunas
ao createTable e um bloco idempotente hasColumn/alterTable (padrão já usado no
arquivo) que garante as colunas em tabelas pré-existentes no boot.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-27 23:43:37 +02:00
VPS 4 Deploy Agent 93be34d463 feat(avatar): sincroniza TODOS os avatares (remove caps de enfileiramento)
Os avatares "não vinham todos" porque o enfileiramento era capado em 3
pontos, embora a fila (processAvatarQueue) já seja rate-limited e processe
tudo que entra:
- upsert: cap de 50 por batch (randomizado) -> enfileira todos os pendentes
- syncMissingAvatars: take 80 -> cobre TODOS (chats recentes primeiro +
  varredura paginada de todos os contatos sem avatar)
- syncExpiredAvatars: take 200 + slice 80 -> varre paginado e renova todos
  os avatares com URL do CDN do WhatsApp expirando (<48h)

A cobertura total não dispara ban: a fila mantém ~1 req/s (lotes + delay);
apenas leva mais tempo, em background.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-27 23:36:18 +02:00
VPS 4 Deploy Agent b04f9cdafc fix(icon): troca BotOff (inexistente no lucide-react) por Bot
BotOff não é exportado pelo lucide-react e gerava "Attempted import error"
no build. O indicador de "bot pausado" no ChatListItem agora usa Bot —
o title e a cor âmbar já comunicam o estado.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-27 19:15:39 +02:00
VPS 4 Deploy Agent fb974a0dc3 fix(avatar): sidebar não usa mais URL crua do WhatsApp (403)
O avatar da instância na ThinSidebar caía no fallback
activeInstance.avatar/profilePictureUrl — URL do CDN pps.whatsapp.net que
expira e responde 403 (hotlink) no navegador. Agora usa só o proxy do
backend (/proxy-avatar → /api/inbox/avatar, que baixa server-side); sem
proxy resolvível, mostra o ícone em vez da URL crua.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-27 19:11:50 +02:00
VPS 4 Deploy Agent 7124ec790e perf(whatsapp): índices em FKs + delete de instância em lotes
- Adiciona @@index nas FKs que sofrem cascade/SET NULL ao deletar instância:
  messages.replyToId (self-ref, evitava O(n²) no SET NULL), chats.instanceId,
  chats.contactId, contacts.instanceId, broadcasts.instanceId.
- InstanceRepository.delete agora apaga 'messages' em lotes (5k) antes do
  cascade, evitando transação/locks gigantes em instâncias com dezenas de
  milhares de mensagens. O restante (chats/contacts/...) sai pelo cascade,
  agora rápido com os índices.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-27 18:58:06 +02:00
VPS 4 Deploy Agent e4a7e79ab1 chore(worktrees): remove worktrees Claude versionados por engano
optimistic-chebyshev-8b2ae4 e suspicious-shockley-980a1e estavam
commitados na main indevidamente; limpa o git status.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 05:17:06 +02:00
VPS 4 Deploy Agent 65118bd467 chore(infra): bump scoreodonto.com -> 8f9177a (status: fila A concluída)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-22 00:36:57 +02:00
VPS 4 Deploy Agent 7803d4b1ad chore(infra): bump scoreodonto.com -> 715b2dc (fix CI build desbloqueado)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-22 00:03:21 +02:00
VPS 4 Deploy Agent 34d9921d2c chore(infra): bump scoreodonto.com -> 8a27f3b (status corrigido + versão em DEV)
Atualiza o ponteiro do submódulo: doc STATUS-SEGURANCA-E-PRODUCAO.md
(JWT sem commit + contagem) e novo dev-build.sh (carimba versão em DEV).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-21 23:27:41 +02:00
VPS 4 Deploy Agent 6621d77487 docs(LEIA): ponteiro para Documentos-Unicos (base-scoreodonto + newwhats)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 19:25:07 +02:00
VPS 4 Deploy Agent ab86d3876d chore(infra): bump scoreodonto.com (fix sino z-index + RX dev isolado)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 13:11:12 +02:00
VPS 4 Deploy Agent f9e14c0b23 feat(infra): banco DEV isolado (pg-dev) + bump scoreodonto.com/subdominio
- pg-dev/: container PostGIS único multi-DB (ref+dev por template) p/ desgrudar dev da produção; scripts refresh/reset + manifesto (secrets fora do git)
- bump scoreodonto.com e subdominio.clube67.com (backends dev apontam p/ pgdev via .env)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 12:46:37 +02:00
VPS 4 Deploy Agent c98f9c05a1 chore(infra): bump scoreodonto.com (estratégia banco DEV)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 12:18:41 +02:00
VPS 4 Deploy Agent 2d302cf1ae chore(infra): bump scoreodonto.com -> a89eed3 (docs CI/CD por tag — Etapa 6)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 10:16:35 +02:00
VPS 4 Deploy Agent 54dd112365 chore(infra): bump scoreodonto.com -> 081985c (v1.0.14, deploy por tag validado)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 10:13:16 +02:00
VPS 4 Deploy Agent 66fa8c8870 chore(infra): bump scoreodonto.com (fix CI stamp + deploy por tag)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 09:57:31 +02:00
VPS 4 Deploy Agent 33c037917d chore(infra): bump scoreodonto.com (deploy por tag — Etapa 6)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 09:25:30 +02:00
VPS 4 Deploy Agent 5761bb2e26 chore(infra): bump scoreodonto.com -> 914ebc9 (registry Etapa 4 + pipeline build Etapa 5)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 08:34:05 +02:00
VPS 4 Deploy Agent e10ff088c5 chore(infra): bump scoreodonto.com (docs centralizadas + versionamento visível) e instrucoes_gerais (remoção docs scoreodonto)
scoreodonto.com -> adf9600
instrucoes_gerais -> 002b9ac

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 06:47:42 +02:00
VPS 4 Deploy Agent 40df4d6002 chore(infra): bump submódulos (staging->dev) + docs restantes
Aponta scoreodonto.com, mercado.clube67.com, instrucoes_gerais e
newwhats.local.wiki para os commits de renomeação staging->dev.
Inclui os 2 docs locais restantes (arquitetura_vlan_proposta.md,
clube67/newwhats.local/arquitetura.md).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 03:45:26 +02:00
VPS 4 Deploy Agent 2064ff1ae7 docs: renomeia terminologia "staging" -> "dev" (ambiente nunca foi isolado)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 03:39:15 +02:00
VPS 4 Deploy Agent 7d30c1aebe chore(infra): bump scoreodonto.com -> 92a0ec3 (salas por área + preço por modalidade)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 07:36:45 +02:00
VPS 4 Deploy Agent 07cb826622 chore(infra): bump scoreodonto.com -> 97783c1 (áreas Fase 2c — multi-área UI)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 07:16:06 +02:00
VPS 4 Deploy Agent bc68a50da4 chore(infra): bump scoreodonto.com -> cf86be6 (áreas Fase 2)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 07:03:58 +02:00
VPS 4 Deploy Agent 88823911af chore(infra): bump scoreodonto.com -> 1232348 (áreas multi-área Fase 1)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 06:40:57 +02:00
VPS 4 Deploy Agent 63b853f35a chore(infra): bump scoreodonto.com -> 44d604d (catálogo biomedicina do biomédico)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 06:20:50 +02:00
VPS 4 Deploy Agent a1a3b97eaa chore(infra): bump scoreodonto.com -> a383fc7 (login teal, home, endereço, biomédico)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 05:09:37 +02:00
VPS 4 Deploy Agent 518b5f8b92 chore(infra): bump scoreodonto.com -> 76f8fa6 (login remodelado)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 04:32:39 +02:00
VPS 4 Deploy Agent 10ba9260d4 chore(infra): bump scoreodonto.com -> d9eae3d (versão V1.0.12)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 03:28:15 +02:00
VPS 4 Deploy Agent 7cae226033 chore(infra): bump scoreodonto.com -> 17f83e5 (gate de endereço nos marketplaces)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 03:23:38 +02:00
VPS 4 Deploy Agent 1be581b227 chore(infra): bump scoreodonto.com -> bbbe370 (auto-reload anti-tela-branca)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 02:55:20 +02:00
VPS 4 Deploy Agent 0dd5374925 chore(infra): bump scoreodonto.com -> df7678f (plugins catálogo superadmin-only)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 01:28:48 +02:00
VPS 4 Deploy Agent 108363a571 chore(infra): bump scoreodonto.com -> fb7825f (origem automática por proximidade)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 01:27:53 +02:00
VPS 4 Deploy Agent cc4cdf96dd chore(infra): bump scoreodonto.com -> 503359e (geo/raio PostGIS)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-13 23:18:58 +02:00
VPS 4 Deploy Agent 0a190be2e3 chore(infra): bump scoreodonto.com -> cb00d9f (ViaCEP + menus por papel + fix preview)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-13 20:20:58 +02:00
VPS 4 Deploy Agent 90f4a1e5d0 chore(infra): bump instrucoes_gerais -> 5398006 (doc GITEA-COMMANDS)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-13 15:30:45 +02:00
VPS 4 Deploy Agent 267b7c49f1 chore(infra): bump scoreodonto.com -> ca7eba4 (Salas add-on por conta + preview biomédico)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-13 15:19:11 +02:00
VPS 4 Deploy Agent 3a836ebf85 chore(infra): bump scoreodonto.com -> reconciliação onboarding+plugins (98728b4)
Aponta para o merge de reconciliação no scoreodonto.com (branch
reconcile-onboarding-plugins): linha local (onboarding/plugins/RX) já
contendo o trabalho do origin/main (multi-tenancy/score/imports).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-13 13:49:24 +02:00
VPS 4 Deploy Agent 2d9d1670a4 chore(deploy): bump version
continuous-integration/webhook Ignorado: bump version
2026-05-18 03:54:35 +02:00
VPS 4 Deploy Agent 5876b783b0 feat(backend): add dynamic CORS origin validator supporting newwhats.clube67.com and subdomains
continuous-integration/webhook Deploy de clube67_newwhats.local concluido com sucesso (VPS 4)
2026-05-18 03:52:34 +02:00
VPS 4 Deploy Agent 48ec69d89a chore(deploy): bump version
continuous-integration/webhook Ignorado: bump version
2026-05-18 03:50:18 +02:00
VPS 4 Deploy Agent 0364f251f1 chore(infra): update instrucoes_gerais submodule pointer
continuous-integration/webhook Deploy de clube67_newwhats.local concluido com sucesso (VPS 4)
2026-05-18 03:48:10 +02:00