Novidades » Agosto 2026
Início › Agosto de 2026
Agosto foi o mês mais denso do ano. No ADM nasceu o módulo Variável e o dash de Squads passou a projetar e a congelar o passado. O CRM deixou de ser um sistema de um cliente só e virou plataforma, com agente de IA qualificando lead. O oxidata estreou a Saúde da Carteira e o NPS.
O que mudou para você
- oxiadmVariável calculada pelo sistema
Modelos de comissionamento por performance, piso de receita da unidade, faixas por medida, acúmulo GP+GT e o ciclo completo do lançamento até o pagamento, com aprovação segregada.
Na prática: A comissão sai do sistema com a regra à vista, em vez de uma planilha que só uma pessoa entende.
- oxiadmSquads: projeção à frente e passado congelado
O dash projeta até 12 meses assumindo renovação do recorrente, saída de investidor e pro-rata de quem sai. O fechamento mensal congela o mês como foi, e a visão Planejado × Real mostra o gap entre as duas fórmulas de custo.
Na prática: Dá para responder "melhorei em relação ao mês passado?" e saber se um remanejamento funcionou.
- oxiadmCliente novo entra por uma esteira
Do formulário do comercial ao kick-off, em estações. Pastas no Drive e documento de kick-off criados num clique. Contrato e projeto que já existem podem ser vinculados sem recriar.
Na prática: Onboarding padronizado, sem retrabalho e sem cliente esquecido no meio do caminho.
- oxiadmCarteira que reflete a realidade
Contrato vencido expira sozinho, contrato renovado não some da lista, valor one-time tem KPI próprio, e a aba Forecast mostra as alavancas comerciais mês a mês, com Churn M0.
Na prática: MRR, churn e forecast batem com o que está assinado, sem ajuste manual no fim do mês.
- oxiadmAlocação com histórico preservado
Sucessão de alocação (quem assume quando alguém sai), edição sem apagar a linha, e coordenador rateado em 3% sobre a carteira inteira.
Na prática: O custo de time de cada projeto continua certo mesmo quando a equipe muda.
- CRMUma empresa nova em minutos
Área administrativa cria a conta pela tela: nome, dono, segmento e pronto. Funis, roteamento e o vocabulário do ramo nascem juntos. Convite por e-mail e lista de acesso em produção.
Na prática: Abrir um CRM para um cliente novo deixou de ser tarefa de programador.
- CRMAgente de IA que qualifica em vez de conversar
O agente lê a ficha antes de perguntar, segue as perguntas do SDR, se despede quando escala para humano, e o gasto de IA aparece em reais.
Na prática: O primeiro atendimento é automático e com contexto, e o custo de IA deixa de ser invisível.
- CRMTudo do cliente dentro do inbox
Ficha completa ao lado da conversa, campos padrão de negócio já criados, número Z-API conectado sem QR code, fuso horário escolhido de uma lista.
Na prática: Atendente não sai da conversa para consultar dado.
- oxidataSaúde da Carteira e NPS
Quatro faróis independentes por cliente, ordenados do pior para o melhor, só carteira ativa e agrupado por squad. Módulo NPS importa o relatório do Power BI e mostra detratores e pesquisas pendentes. Login por e-mail para cliente sem conta Google.
Na prática: O GP vê em uma tela quem precisa de atenção esta semana, e o cliente sem Google consegue entrar.
- oxiwhatsConversa vira link
Link compartilhável de uma conversa por canal e data, e o canal é vinculado ao cliente pelo diretório do ADM.
Na prática: Mandar um trecho de conversa para o time é copiar um link, não tirar print.
O que veio em setembro de 2026
- oxiadmCadastro de cliente decide o Tier sozinho
- oxiadmDashboard responde por que a venda não fechou
- oxiadmVariável explicada dentro do sistema
- oxiadmMenos cliques repetidos em Projetos e Alocações
- CRMCRM ganha o modo simples
- oxiwhatsAlerta quando as conversas param de chegar
- oxidataNúmeros de Google Ads completos
Detalhamento por sistema
Item a item, com link para a mudança no código. Clique num sistema para filtrar.

Índice
oxiadm
- 1. Planejado × Real — o gap entre as duas fórmulas vira número
- 2. Curadoria das estacoes + puxar cliente que ja esta na base
- 3. Variável: acúmulo GP+GT, segregação na aprovação, carga visível e exclusão de lançamento
- 4. Sucessão de alocação: quem assume quando alguém sai, e a tela de Alocação de Times
- 5. Editar: corrigir o cadastro da alocação sem apagar a linha
- 6. Contrato preenche o cadastro de projeto
- 7. Estação 07 vincula contrato e projeto que já existem
- 8. Pastas e doc de kick-off num clique
- 9. Esteira de entrada de clientes, do form do comercial ao kick-off
- 10. Rota /integration/projects com valor, fase e stakeholders
- 11. Variável: o piso seleciona o bônus, é derivado do time, e vendedores múltiplos
- 12. Mês estável, pro-rata da saída e rateio de M.O. por projeto
- 13. Variável: papéis comerciais, regras editáveis e recálculo + modelos de performance
- 14. Piso de receita da unidade + novos percentuais
- 15. Modelo de comissionamento por performance (Fatia 1)
- 16. Ciclo do lançamento até o pagamento (Fatias 2 e 3)
- 17. KPIs de valor one-time (ativo e vencido 30d)
- 18. Projeção mensal com saída de investidor e transições
- 19. Vigência considera o prazo; contrato vencido expira sozinho
- 20. Projeção assume renovação do recorrente + aviso de contratos vencidos
- 21. Etapa Cancelado do Ter conta como Churn M0
- 22. Aba Forecast no Dashboard — alavancas comerciais mês a mês
- 23. Forecast: Churn M0 de recorrência (contrato início = fim)
- 24. Chaves nomeadas com escopo em /api/v1/integration/*
- 25. Custo indireto residual — salário sem alocação não evapora
- 26. Coordenador passa a 3% na carteira inteira
- 27. Contrato renovado sumia da carteira (ADR-038)
- 28. Estrutura de squad é leitura para operacao/investidor
- 29. Escopo fechado distribui pelo prazo quando não há data de término
- 30. Não travar na troca de mês (timeout + error boundary)
- 31. Equipe em projeto backlog + taxa por faixa da medida
- 32. Só membership principal redefine a área da pessoa
- 33. HC total conta pessoas distintas, não soma dos cards
- 34. Projeto com valor próprio também respeita a vigência do contrato
- 35. Escopo fechado não se repete mês a mês na projeção
- 36. Arraste do Kanban escreve por Server Action
CRM
- 37. Phase 30: AI spend becomes money, and stops vanishing
- 38. Fase 31: os campos que todo negócio tem nascem prontos
- 39. Fase 32: a chave abre o catálogo, e aceita um valor padrão
- 40. Fase 33: a ficha inteira dentro do inbox, e o expurgo por comando
- 41. Fase 29: a empresa nova nasce com o SDR já sabendo o que perguntar
- 42. Automation routes scope by account, not by author
- 43. Phase 27: the agent reads the record before it asks, and speaks before it leaves
- 44. Phase 28: the agent stops conversing and starts qualifying
- 45. Production takes the whitelist, and the invite stops dead-ending at signup
- 46. The inbound router reaches production, and the four live criteria can run
- 47. Connect a Z-API number without a QR, and pick a time zone from a list
- 48. Testing an OpenRouter key stops being refused
- 49. Warn about the Z-API toggle that silences every inbound
- 50. Every release reaches production, and adopting re-points the webhook
- 51. Segment vocabulary becomes data, and a demo company becomes possible
- 52. A new company in minutes, from a screen
- 53. Fases 23 e 24 chegam à produção: empresa nova pela tela
- 54. The message landed, and the segment's own words routed it
- 55. Removing a member reads the grant, and drops the live session
- 56. An account admin puts someone in, and the screen stops being a door without a handle
- 57. The right to enter a company stops being the profile column
- 58. One analyst, several companies, one at a time
- 59. Fase 22: tirar o cliente do build — marca da V4, taxonomia de intenção e o multi-número na CI
- 60. Fase 20: o agendador que chega, e a tela em português
- 61. Aposentar o pinger do GitHub: o cron nativo chegou na hora
- 62. Fase 19: o isolamento entre contas, provado na CI — e o áudio que o bucket recusava
- 63. A ficha do inbox volta a rolar
- 64. Três defeitos que o primeiro uso em produção mostrou
- 65. The gateway stops owning the contact's name
- 66. The grouping window asks which message it is, not whether anything moved
- 67. The escalation's goodbye was behind the gate the escalation had closed
- 68. Tirar o inglês das telas que a fase nunca tinha aberto logada
- 69. A janela de 24 horas é da Meta, e travava a resposta na Z-API
- 70. A ida e volta provada, e o keypath cru que a tela mostrou
- 71. O interruptor desligado era invisível, e o color-scheme nunca foi declarado
- 72. Devolve o login ao preview: nenhuma coluna de token pode ser NULL
oxidata
- 73. Saúde da Carteira — 4 faróis por cliente (provisório)
- 74. Só carteira ativa na análise + agrupamento por squad
- 75. Módulo NPS — import do Power BI + tela da unidade (Fase 1)
- 76. Redige segredo em etl_runs, normaliza act_ e torna o alerta legível
- 77. /api/cron/* fora do gate de sessão — o cron nunca rodava
- 78. Tela não quebra antes da migration 0035/0036
Oxicore ADM Platform
Agosto concentrou o motor financeiro do ADM: o módulo Variável nasceu e evoluiu em três fatias, o dash de Squads ganhou projeção mensal, pro-rata e fechamento congelado, e a esteira de onboarding levou o cliente do formulário do comercial ao kick-off.
1. Planejado × Real — o gap entre as duas fórmulas vira número Novidade
> Substitui a #68, fechada automaticamente quando a branch-base (#67) foi deletada no merge. Mesmo conteúdo, rebaseada na main — agora com a CI completa rodando.
2. Curadoria das estacoes + puxar cliente que ja esta na base Novidade
Duas fatias que fecham buracos deixados pela esteira (ADR-039), sem mudança de schema — as duas usam as tabelas da migration 0058.
3. Variável: acúmulo GP+GT, segregação na aprovação, carga visível e exclusão de lançamento Novidade
Quatro entregas no módulo Variável. ADR-041, sem migration.
4. Sucessão de alocação: quem assume quando alguém sai, e a tela de Alocação de Times Novidade
Desligar alguém no oxiadm gravava terminated_at e nada mais. As alocações dela ficavam abertas: a pessoa seguia aparecendo como GP/GT vigente em /projects, nas tools do MCP, no GET /integration/clients que alimenta o v4oxidata e nos dashboards. Ninguém era perguntado quem assumia, e a informação "este cliente está sem…

5. Editar: corrigir o cadastro da alocação sem apagar a linha Novidade
O diálogo do slot em /alocacoes fazia alocar, substituir, tirar e apagar — não editava. Corrigir um percentual digitado errado ou uma data torta obrigava a apagar e realocar, jogando fora o id e o created_at da linha por causa de um dígito.
6. Contrato preenche o cadastro de projeto Novidade
Cadastrar projeto obriga a redigitar à mão o que o contrato já sabe: datas de vigência, tipo de escopo, serviços contratados e o nome do cliente. Tudo isso já está no banco, a uma tabela de distância.

7. Estação 07 vincula contrato e projeto que já existem Novidade
A estação Cadastro no ADM assume que o card sempre vem antes do cadastro — o texto na tela é literalmente "crie por aqui e volte para vincular".
8. Pastas e doc de kick-off num clique Novidade
A estação 04-pastas-e-kick-off era seis copy-pastes: copiar a linha do criarLote(), abrir o editor do Apps Script, colar dentro do código, rodar, achar a pasta no Drive, colar a URL de volta no card, achar o doc, colar de novo. Agora é um botão — e os dois links que ele grava (drivefolderurl, kickoffdocurl) são…
9. Esteira de entrada de clientes, do form do comercial ao kick-off Novidade
Dois passos que não foram executados e que o acordo do conventions.md exige:
10. Rota /integration/projects com valor, fase e stakeholders Novidade
A Plataforma de Dados está montando uma tela provisória de Saúde da Carteira (4 faróis por cliente: NPS, Resultado, Metas, Comunicação). Ela precisa de três coisas que /integration/clients deliberadamente não carrega: dinheiro (valor do projeto, MRR do contrato), a fase operacional da régua, e os stakeholders do…
11. Variável: o piso seleciona o bônus, é derivado do time, e vendedores múltiplos Novidade
Três mudanças no variável simples (valem para qualquer modelo — vivem no lançamento, não no tipo de contrato). ADR-040, migration 0059.
12. Mês estável, pro-rata da saída e rateio de M.O. por projeto Novidade
1. O mês corrente mudava ao longo dos dias. Um contrato com fim de serviço dia 14 sumia da receita no dia 15 — impossível analisar o mês fechado, porque o número encolhia a cada dia. 2. Cliente que sai no meio do mês contava mês cheio (ou zero, dependendo do dia da consulta). Fim dia 15 deve contar ~50% do MRR do mês.…
13. Variável: papéis comerciais, regras editáveis e recálculo + modelos de performance Novidade
Duas frentes desenvolvidas em paralelo na mesma árvore de trabalho. Elas se entrelaçaram em enums.ts, tables.ts, bootstrap/route.ts, variable-model-form.tsx e nos docs — separar em dois commits exigiria cirurgia por hunk em ~20 arquivos, com risco de perda silenciosa em código que mexe com dinheiro. Vão juntas,…
14. Piso de receita da unidade + novos percentuais Novidade
Duas mudanças de regra de negócio, pedidas em 14/08.
15. Modelo de comissionamento por performance (Fatia 1) Novidade
Primeira fatia do módulo Variável (ADR-036): comissionamento do time de entrega sobre o valor que o cliente gera para a unidade. Entrega a fundação de dados e o cadastro do modelo. Lançamento, aprovação/liquidação e dashboard vêm nas fatias 2–4.
16. Ciclo do lançamento até o pagamento (Fatias 2 e 3) Novidade
O módulo Variável passa a ser utilizável ponta a ponta. Sem migration — todas as colunas do ciclo já vieram na 0050, então não há bootstrap nem janela de risco no deploy.
17. KPIs de valor one-time (ativo e vencido 30d) Novidade
A tela de Contratos mostrava contagens de prazo e o MRR ativo total, mas nenhuma visão do valor de escopo fechado (one-time) da carteira. Este PR adiciona dois KPI cards.
18. Projeção mensal com saída de investidor e transições Novidade
O dash de Squads era um snapshot cego do mês corrente: custo = salário mais recente de quem tem alocação aberta, receita = contrato/projeto com status ativo. Isso deixava três buracos para decidir headcount:
19. Vigência considera o prazo; contrato vencido expira sozinho Novidade
Fecha a incoerência de a tela de Contratos mostrar o mesmo contrato como "Ativo" e "Vencido há Xd", somando MRR e escopo fechado que a operação já não recebe.

20. Projeção assume renovação do recorrente + aviso de contratos vencidos Novidade
Fecha as duas decisões tomadas depois do #38.
21. Etapa Cancelado do Ter conta como Churn M0 Novidade
No Ter, uma implementação Cancelada é o mesmo evento que o Churn m0 do Saber: venda que nunca virou caixa. A consulta de etapas do Forecast só olhava 'churn m0', então esses projetos ficavam fora da métrica.
22. Aba Forecast no Dashboard — alavancas comerciais mês a mês Novidade
Nova aba Forecast no Dashboard (/dashboard/forecast): os drivers comerciais que alimentam o planejamento financeiro da unidade, mês a mês do ano corrente, calculados contrato a contrato a partir do próprio ADM.
23. Forecast: Churn M0 de recorrência (contrato início = fim) Novidade
A unidade registra M0 de recorrência (venda que nunca pagou) lançando o contrato com fim de serviço = dia de início — não existe etapa "Churn m0" fora da categoria Saber, então essa é a única marcação possível para recorrente. Hoje há 7 contratos assim em produção (TF Pneus R$ 12k, Domtec R$ 6k, Tenext R$ 5k, Sr.…
24. Chaves nomeadas com escopo em /api/v1/integration/* Novidade
Executa o P1 do plano Rotação e segmentação da INTEGRATIONAPIKEY. Implementa ADR-033.
25. Custo indireto residual — salário sem alocação não evapora Correção
O dash de Squads tem dois buckets de custo e uma fresta entre eles:
26. Coordenador passa a 3% na carteira inteira Correção
Levantei os 102 projetos ativos com a carga alocada por papel e o custo de servir sobre a remuneração de quem está no time, para decidir se valia semear a alocação no cadastro de projeto. O achado que mudou o rumo: o percentual de Coordenador nunca foi 3% na base.
27. Contrato renovado sumia da carteira (ADR-038) Correção
"Contratos renovados não estão aparecendo no oxiadm" — o contrato renovado não aparecia nem na lista de ativos, nem pelos filtros.
28. Estrutura de squad é leitura para operacao/investidor Correção
Operação e Investidor devem ver a estrutura de squads, mas não alterá-la. Isso já valia na RLS (squads write = admin) e nas Server Actions (requireAdminOrGerente), mas vazava em três pontos — todos onde o Drizzle bypassa RLS e o middleware não filtra (/api/**).
29. Escopo fechado distribui pelo prazo quando não há data de término Correção
O #40 acertou o diagnóstico — escopo fechado não pode repetir o valor cheio todo mês — mas escolheu mal o fallback: projeto sem data de término passou a entrar só no mês de início. Como a maioria dos fechados não tem enddateplanned preenchida, a receita pontual praticamente sumiu do dash.
30. Não travar na troca de mês (timeout + error boundary) Correção
Alternando entre meses, a página demorava e caía na tela preta:
31. Equipe em projeto backlog + taxa por faixa da medida Correção
Fatia 1.5 do módulo Variável: corrige o bug que travava o cadastro e adiciona a taxa por faixa.
32. Só membership principal redefine a área da pessoa Correção
O PR #34 passou a resolver o squad da pessoa no mês via investidorsquadmemberships, mas usou todas as memberships. is_primary existe justamente para separar a principal das secundárias: quem é de ADM/Gerência e também participa de um squad era reclassificado para fora do overhead.
33. HC total conta pessoas distintas, não soma dos cards Correção
O HC do cabeçalho era soma dos hcCount de cada card. Quem atende clientes de mais de um squad aparece no HC de cada um deles — o custo dessa pessoa é dividido por logo (regra de produto), mas ela continua sendo uma pessoa só. Resultado: o total inflava.
34. Projeto com valor próprio também respeita a vigência do contrato Correção
A projeção mensal checava a vigência do contrato só no caminho do rateio (projeto sem valor próprio, herdando o MRR). Quando o projeto tem valor preenchido, o cálculo ia direto para projectOwnRevenueBRL e nunca passava pela vigência — para tipo_escopo = recorrente sem data fim no projeto, isso significa receita para…
35. Escopo fechado não se repete mês a mês na projeção Correção
Projeto de escopo fechado com início e sem data de término devolvia o valor cheio em todo mês consultado:
36. Arraste do Kanban escreve por Server Action Correção
Corrige a regressão relatada pelo Gabriel Fragoso (DM, 03/08 12:02): cards arrastados no Kanban de /projects voltavam para a coluna de origem.
Oxicore CRM (WhatsApp)
Agosto foi o mês em que o CRM saiu do build único e virou plataforma: empresa nova pela tela, agente de IA que qualifica em vez de conversar, roteamento de entrada por vocabulário do segmento e a ficha inteira dentro do inbox.
37. Phase 30: AI spend becomes money, and stops vanishing Novidade
Leva a fase 30 à produção. Duas migrations e o código, já aplicados e verdes no staging.
38. Fase 31: os campos que todo negócio tem nascem prontos Novidade
Fecha a fase 31. Três commits: a migration sozinha, o código, e o conserto que o staging exigiu.
39. Fase 32: a chave abre o catálogo, e aceita um valor padrão Novidade
Fecha a fase 32, pela ADR-0033.
40. Fase 33: a ficha inteira dentro do inbox, e o expurgo por comando Novidade
Três commits, e o primeiro é migration — a produção aplica o schema antes de deploiar.
41. Fase 29: a empresa nova nasce com o SDR já sabendo o que perguntar Novidade
Fecha a fase 29 (ADR-0029). O preset de segmento deixa de carregar só vocabulário e passa a carregar o pacote de implantação do ramo: campos personalizados, checklist do SDR e a persona do agente.
42. Automation routes scope by account, not by author Novidade
Defeito de isolamento encontrado rodando os testes de aceite da fase 26. Sem migration — a produção continua na 056.
43. Phase 27: the agent reads the record before it asks, and speaks before it leaves Novidade
Release of phase 27 to production. Three commits, already green on develop: the gate took staging from 056 to 057, and the staging job passed isolation, multi-number and provisioning afterwards.
44. Phase 28: the agent stops conversing and starts qualifying Novidade
Releases phase 28 to production, plus the tail of phase 27 that had not crossed yet (three commits: the deterministic handoff's goodbye, the out-of-hours text, and the interpolator fix).
45. Production takes the whitelist, and the invite stops dead-ending at signup Novidade
develop → main. Leva a fase 21 inteira à produção.
46. The inbound router reaches production, and the four live criteria can run Novidade
Leva a fase 26 — o roteador de inbound para produção, para que os quatro critérios que nenhum teste substitui possam ser exercitados num número pareado de verdade.
47. Connect a Z-API number without a QR, and pick a time zone from a list Novidade
Duas frentes, e as duas existem para o mesmo teste: chegar no número temporário novo com tudo configurável pela tela.
48. Testing an OpenRouter key stops being refused Novidade
Conserto de um guarda desatualizado. Sem migration — a produção continua na 056.
49. Warn about the Z-API toggle that silences every inbound Novidade
Registra a armadilha que custou as horas de hoje. Sem migration — a produção continua na 056.
50. Every release reaches production, and adopting re-points the webhook Novidade
Dois silêncios da mesma forma: algo diz que funcionou, e nada acontece. Sem migration — a produção continua na 056.
51. Segment vocabulary becomes data, and a demo company becomes possible Novidade
Fase 24, primeira metade: só as migrations, e sozinhas de propósito.
52. A new company in minutes, from a screen Novidade
Fase 24, segunda metade: o código. Depende do #35 (as migrations 052–054) estar mergeado e aplicado no staging — sem isso o job provisioning fica vermelho procurando classification_segments.
53. Fases 23 e 24 chegam à produção: empresa nova pela tela Novidade
A travessia develop → main. A produção recebe cinco migrations, não três — a 050 e a 051 são da fase 23 e nunca chegaram lá; elas sempre foram chegar por este merge.
54. The message landed, and the segment's own words routed it Novidade
Só documentação. Registra a prova na produção e marca dois critérios de aceite da fase 24. Ficam sete de oito.
55. Removing a member reads the grant, and drops the live session Novidade
Primeiro dos dois PRs da fase 21. Este traz só a migration, e o motivo é o registrado no AGENTS.md: migration entra em develop sozinha, o push aplica no staging, e o código vem depois. Juntos, o job isolation fica vermelho procurando uma função com assinatura nova que ainda não existe.
56. An account admin puts someone in, and the screen stops being a door without a handle Novidade
Segundo dos dois PRs da fase 21. Nasce como rascunho e depende do #44, que traz a migration 055 sozinha. Enquanto a 055 não aplicar no staging, o job isolation daqui fica vermelho procurando uma função com assinatura nova.
57. The right to enter a company stops being the profile column Novidade
Primeira metade da fase 23 — ADR-0018. Só as duas migrations.
58. One analyst, several companies, one at a time Novidade
Segunda metade da fase 23 — ADR-0018.
59. Fase 22: tirar o cliente do build — marca da V4, taxonomia de intenção e o multi-número na CI Novidade
Fecha a fase 22, que cumpre a ADR-0004 e executa a ADR-0016. Ela corre antes da fase 20, apesar do número maior.
60. Fase 20: o agendador que chega, e a tela em português Novidade
Leva para a produção a metade de código da fase 20, já mergeada em develop pelo #15.
61. Aposentar o pinger do GitHub: o cron nativo chegou na hora Novidade
Leva para a produção a remoção do cron-pinger.yml e o registro do que a troca de agendador mediu. Sem migration, e sem mudança de comportamento em runtime — o que sai é um workflow do GitHub, não código servido.
62. Fase 19: o isolamento entre contas, provado na CI — e o áudio que o bucket recusava Novidade
Três coisas independentes, um commit para cada.
63. A ficha do inbox volta a rolar Correção
Reportado direto da produção, validando a fase 33: abrir a seção de campos empurra o conteúdo para fora da tela e não há barra de rolagem para trazê-lo de volta.
64. Três defeitos que o primeiro uso em produção mostrou Correção
Três correções saídas do primeiro uso real da tela do agente, depois do deploy da fase 29. Nenhuma delas é da fase 29 — ela só as pôs à vista.
65. The gateway stops owning the contact's name Correção
Code-only release. No migration.
66. The grouping window asks which message it is, not whether anything moved Correção
Code-only release. No migration. Fixes the phase 27 criterion that failed on its first real attempt.
67. The escalation's goodbye was behind the gate the escalation had closed Correção
Code-only release. No migration. Fixes the phase 27 criterion that matters most — "no outcome goes mute".
68. Tirar o inglês das telas que a fase nunca tinha aberto logada Correção
Leva para a produção o que a jornada logada achou: quatro famílias de inglês escrito à mão, e um texto de ajuda que contradizia o próprio formulário. Sem migration.
69. A janela de 24 horas é da Meta, e travava a resposta na Z-API Correção
Leva para a produção o conserto que desbloqueia o primeiro critério de aceite da fase 20: a conversa completa de ida e volta. Sem migration.
70. A ida e volta provada, e o keypath cru que a tela mostrou Correção
Registro da ida e volta — 08:39 saiu do CRM para o celular, 08:40 voltou — e um defeito que só apareceu abrindo a tela. Sem migration.
71. O interruptor desligado era invisível, e o color-scheme nunca foi declarado Correção
Leva para a produção o conserto do interruptor liga/desliga e a declaração de color-scheme. Sem migration.
72. Devolve o login ao preview: nenhuma coluna de token pode ser NULL Correção
Conserta o defeito que o #7 descobriu — e que a nota registrada lá subdimensionou.
Plataforma de Dados
73. Saúde da Carteira — 4 faróis por cliente (provisório) Novidade
O health score dos clientes hoje é manual e mora na cabeça dos GPs. Os dados existem, mas espalhados em três sistemas que não conversam: NPS e metas aqui, valor/fase no ADM, conversa de grupo no whatsapp-inbox.
74. Só carteira ativa na análise + agrupamento por squad Novidade
Pedido do Gabriel (20/08): "preciso ver expandir e minimizar por squad. Além disso só traga clientes ativos pra análise, os inativos deixa em um botãozinho pra visualizar fora o histórico."
75. Módulo NPS — import do Power BI + tela da unidade (Fase 1) Novidade
Novo módulo interno de NPS (/dashboard/admin/nps, v4admin) que substitui a planilha mensal manual "NPS <MÊS>". Importa (colar TSV) o relatório BSC | Pesquisas do Power BI da matriz para as tabelas globais npssurveyresponses e npspendingsurveys (snapshot mensal por period, sem tenantid como adm_clients).
76. Redige segredo em etl_runs, normaliza act_ e torna o alerta legível Correção
Três defeitos que a expiração do token do Meta em 21/08 expôs. Nenhum deles era a causa do incidente — todos estavam ali antes, e dois ajudaram a esconder o problema por dois dias.
77. /api/cron/* fora do gate de sessão — o cron nunca rodava Correção
/api/cron/health-comms não tinha exceção em middleware.ts. O Vercel Cron chega sem cookie de sessão, então levava 307 para /login e a execução nunca acontecia.
78. Tela não quebra antes da migration 0035/0036 Correção
As migrations deste repo são aplicadas fora do deploy (bootstrap ou SQL Editor, porque a DATABASE_URL de produção é env sensitive). Isso cria uma janela em que o código novo está no ar e as tabelas não.
WhatsApp Inbox (arquivo de conversas)
79. Link compartilhável de conversa por canal e data Novidade
A rota não mudava conforme a navegação: todo acesso recomeçava do zero e não havia como mandar "essa conversa, nesse dia" para alguém.
80. Vínculo de canal pelo diretório de clientes do ADM (fase 07) Novidade
O vínculo de grupo deixa de ser digitação livre de empresa + CNPJ e passa a ser escolha de um cliente real da plataforma ADM, com o CNPJ como única chave de junção. Sem migration e sem nenhuma mudança no repo do ADM.
81. Rolagem por região em vez da página inteira Correção
Em conversa longa, voltar ao topbar e à lista de canais exigia rolar a thread toda de volta. O CSS já modelava painéis com rolagem própria (.channel-list e .thread-body com overflow-y: auto, .conv-shell/.channel-col/.thread-col com min-height: 0), mas .app-shell usava min-height: 100vh em vez de height: sem âncora de…