mirror of
https://github.com/melgarafael/DeskcommCRM.git
synced 2026-10-02 09:34:46 +08:00
A main andou de novo enquanto este PR rodava — segundo merge do dia. Dois conflitos, resolvidos pelo mesmo método: lado autoritativo e delta reaplicado. `components/connections/ConexoesShell.tsx` — cada lado acrescenta uma ABA ao mesmo `Tabs`: "Telefone" (#677) e "Redes sociais" (este PR). Somadas. Escolher um lado apagaria uma tela inteira da navegação. `supabase/baseline.sql` — parti do baseline da main e reapliquei o delta desta branch por contexto. O hunk do apêndice rejeitou, como da primeira vez, e foi colocado à mão ANTES do bloco de varredura anon, porque cria função. A CONFERÊNCIA QUE FALTOU DA PRIMEIRA VEZ, e que agora é a razão deste commit existir com este texto: na rodada anterior o apêndice desta branch redefiniu `fn_lgpd_cascade_redact_contact` a partir de uma versão anterior e APAGOU o passo `sales` da main, em silêncio. Quem pegou foi o invariante, no CI. Desta vez a comparação foi feita ANTES de commitar, e a sonda é o contador da própria cascata: awk <da última definição até o `$$;`> | grep -oE "v_counts \|\| jsonb_build_object\('[a-z_]+'" main .............. 15 tabelas este merge ........ 16 tabelas só na main ........ (vazio) ← nenhuma se perde só neste PR ....... 'prospecting_candidates' Zero funções criadas depois da varredura anon, conferido também. DESKCOMM_GOV_INVARIANTS_EDIT=1 porque o merge traz arquivos de `tests/invariants/**` vindos da main; este commit não altera nenhum deles — `git diff --stat HEAD^ HEAD -- tests/invariants/` mostra só o que veio de lá. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0173B9sHr5gABdMAx2fWsQ5W
scripts/
CLI utilities pra operação local e de produção.
Lista
seed-tenant.ts— Cria um tenant manualmente (modo BPO). Placeholder; implementação na Spec 01.
Convenções
- Todos em TypeScript (executar via
npx tsx scripts/<nome>.ts) - Sempre validar input com Zod
- Logar via
console.error(stderr) pra mensagens operacionais;console.log(stdout) só pra output estruturado consumível por pipe - Operações destrutivas exigem flag
--confirmou prompt interativo - Toda mutação relevante gera entrada em
api_audit_logcomactor=script:<nome>