feat(cockpit): a manchete do herói passa a falar do card que o dono abriu - #37
Merged
Merged
Conversation
…briu
Visto ao vivo na Vertímetal: com Receita EM RISCO e Resultado NA ROTA, clicar
no card Resultado trocava o gráfico, o valor e o gap — mas o chip continuava
vermelho e o texto continuava falando da receita. A tela se contradizia.
Não era wiring esquecido: `montarPacing` produz UM `veredito`, da pior dimensão
(P1-A), e o herói o imprimia fixo (`CockpitPacingView.tsx:487`) junto com
`pacing.zonaGeral` no chip, enquanto tudo abaixo lia `pacing[selecionada]`.
Veredito global é a resposta certa pra "como vai o conjunto?" — só que essa não
é a pergunta de quem acabou de escolher uma métrica.
## lerMetrica — leitura da métrica + amarração com as outras
Puro, determinístico, no motor (`pacing-core.ts`). Sem IA: nenhum número novo
nasce aqui, só se lê o que o `montarPacing` já calculou.
- MANCHETE: onde ESTA métrica está contra o plano e onde o ano fecha no ritmo
dela. O chip passa a ser a zona dela; o sinal do conjunto vira uma marca
discreta ao lado ("conjunto: EM RISCO"), e só aparece quando difere — o dono
não perde o alerta geral por estar olhando uma métrica boa.
- AMARRAÇÃO: as 4 metas não são independentes (margem É resultado÷receita;
DL/EBITDA depende do EBITDA), e o cruzamento é onde mora a leitura de
consultor. A relação receita×resultado dá 4 histórias, e cada card a lê do
SEU ponto de vista. Na Vertímetal a mesma relação vira, no card Receita,
"vender abaixo do plano não derrubou o fim da linha — a perda é de volume,
não de eficiência"; e no card Margem, "esta margem veio de eficiência: a
receita está R$ 285.261 abaixo e mesmo assim o resultado está R$ 397.000
acima". Isso não aparecia em métrica nenhuma isolada.
Não termina em "o que fazer" de propósito: pela Régua R4 (v1.2) a ação-raiz
mora SÓ no HTR, e uma superfície de acompanhamento cumpre sua função ao
informar com clareza. Quatro sugestões vagas, uma por card, seriam exatamente o
que a régua chama de falha.
## Bug achado no caminho: projeção com sinais opostos
`projecaoFim` projetava o fim do ano pela razão realizado/esperado, sem guarda.
Em recuperação isso quebra: esperar −R$ 65.653 e realizar +R$ 331.347 dá razão
−5,05, e o objetivo (−R$ 392.673) vira +R$ 1,98 mi. Número grande, sinal
invertido, apresentado como certeza — e não só no texto: o gráfico desenhava a
curva pontilhada até esse ponto e escrevia "no ritmo R$ 1,98 mi".
Já era alcançável em produção: bastava abrir o card Resultado da Vertímetal.
`projecaoAnoFim` agora devolve `null` quando a razão não tem sentido (esperado
zerado ou sinais opostos) e os TRÊS consumidores calam junto — a frase da
manchete, a curva de projeção do gráfico e as colunas "no ritmo"/"faltam" da
síntese. Preferir não dar número a dar número falso é I8. De quebra a conta
deixa de estar duplicada entre motor e tela: a tela agora só desenha.
Validação: 150 arquivos, 1390/1390 (12 novos travando "cada métrica fala de si",
as 4 relações do par receita×resultado, e o silêncio da projeção) · tsc limpo
(os 2 restantes são validators velhos em .next/) · eslint 0 · zero migration.
Pontuado contra a Constituição: passa R1 (a tela deixa de se contradizer), R3
(causa→efeito entre metas correlatas — o maior ganho), R5 e R9; R4 por cumprir
a função de acompanhamento sem invadir o HTR; R2/R7/R8 não se aplicam ao herói.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
This pull request has been ignored for the connected project Preview Branches by Supabase. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
O que estava errado
Com Receita EM RISCO e Resultado NA ROTA, clicar no card Resultado trocava o gráfico, o valor e o gap — mas o chip continuava vermelho e o texto continuava falando da receita. A tela se contradizia.
Não era wiring esquecido:
montarPacingproduz umveredito, da pior dimensão, e o herói o imprimia fixo junto compacing.zonaGeral, enquanto tudo abaixo liapacing[selecionada]. Veredito global responde "como vai o conjunto?" — que não é a pergunta de quem acabou de escolher uma métrica.lerMetrica— leitura da métrica + amarração com as outrasPuro e determinístico, no motor. Sem IA: nenhum número novo nasce ali.
conjunto: EM RISCO) e só aparece quando difere.Copy real da Vertímetal (números dos prints):
↳ Vender abaixo do plano não derrubou o fim da linha: o resultado está R$ 397.000 acima do previsto e a margem, 14.2 p.p. acima. A perda é de volume, não de eficiência.
↳ Este resultado foi feito com MENOS receita do que o plano previa — o ganho está vindo de eficiência, não de volume.
↳ Esta margem veio de eficiência, não de volume: a receita está R$ 285.261 abaixo e mesmo assim o resultado está R$ 397.000 acima.
Não termina em "o que fazer" de propósito: pela Régua R4 (v1.2) a ação-raiz mora só no HTR.
Bug achado no caminho: projeção com sinais opostos
projecaoFimprojetava o fim do ano pela razão realizado/esperado, sem guarda. Em recuperação isso quebra: esperar −R$ 65.653 e realizar +R$ 331.347 dá razão −5,05, e o objetivo (−R$ 392.673) vira +R$ 1,98 mi. Sinal invertido, apresentado como certeza — e não só no texto: o gráfico desenhava a curva pontilhada até esse ponto e escrevia "no ritmo R$ 1,98 mi". Já era alcançável em produção abrindo o card Resultado da Vertímetal.projecaoAnoFimagora devolvenullquando a razão não tem sentido, e os três consumidores calam junto: a manchete, a curva do gráfico e as colunas "no ritmo"/"faltam". De quebra a conta deixa de estar duplicada entre motor e tela.Validação
🤖 Generated with Claude Code