arquitetura (apps): fronteira código/dado/marca + proveniência versionada + o molde (A2–A7 — fecha a auditoria) - #2
Merged
Conversation
…arca, proveniência versionada e o molde (A2–A7) A2 — a view só formata: por_usuario, anpd_pct_faturamento (proximidade do teto do Art. 52) e exposicao_com_ano saem prontos de analisar(); todo ×100 de exibição passa por fmtPct (agora com casas configuráveis). O HTML não contém mais nenhuma conta que produza número de negócio. A3 — model.mjs deixa de conhecer valores: teto/alíquota do Art. 52 viram data.anpd e a referência IBM vira data.ibm_codb (brasil + por_setor), consolidando a duplicata que já existia no JSON. componentes() recebe data inteiro. Teste prova que trocar o teto no JSON muda o resultado sem tocar no .mjs. A4 — riskjud/CALIBRACAO.md versiona a proveniência: dado medido (acórdãos, DataJud, aderência 8,6%), lei (Art. 52), referência de mercado (IBM) e cada juízo editorial do modelo (SETOR_DANO_MULT com n amostral, P_SUE, ANPD_P_FINE etc.), mais o passo-a-passo de recalibração. data.json ganha _meta (versão/coleta/período/apontador). A5 — a paleta tem dono: tokens --brand-* publicados uma única vez em site-chrome.css; hub e RiskJud viram aliases; Plotly lê as cores via getComputedStyle — zero hex de marca fora do chrome (tints locais do disclaimer comentados como exceção). A6 — prosa injetada do dado: metodologia, faixa IBM, contexto, rodapé de fontes e versão/coleta usam spans data-dj preenchidos no renderContext a partir do data.json — atualizar o dado atualiza o texto. Única duplicação restante é a meta description (estática por natureza), justificada em comentário e listada no checklist de recalibração. A7 — README ganha "Como criar um app": as 5 convenções do molde (pasta própria; modelo puro (params, data); calibração no JSON com _meta + CALIBRACAO.md; node --test no CI; cores via var(--brand-*)). Testes: 4 novos (derivadas do A2, teto vindo do JSON, IBM por setor com fallback, exposição anual) — 11/11 no node --test (roda no CI). Sintaxe do módulo inline verificada; chaves data-dj ↔ injetor em bijeção. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018qgnHZkTUK5SR4PRDfm3KA
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.
Pacote final da auditoria do apps (
AUDITORIA-ARQUITETURA.md) — fecha A2 a A7 e, com eles, o checklist inteiro do repo. O tema é um só: cada coisa com um dono — fórmula no.mjs, calibração no.json, método no.md, marca no.css, e a view só formata.A2 · A view não calcula mais números de negócio
por_usuario,anpd_pct_faturamento(proximidade do teto do Art. 52) eexposicao_com_anoagora saem prontos deanalisar()— testados. Todo×100de exibição passa pelofmtPct(com casas configuráveis). Aceite: o HTML não contém nenhuma conta que produza número de negócio.A3 · O modelo conhece a fórmula, não os valores
Teto/alíquota do Art. 52 →
data.anpd; referência IBM →data.ibm_codb(brasil + por_setor), consolidando a duplicata que já existia no JSON. Teste prova o aceite literal: trocar o teto no JSON muda o resultado sem editar o.mjs. Os0.02que restam no modelo são P(multar) editorial e o grid de sensibilidade — não a alíquota.A4 · Proveniência versionada ao lado do dado
riskjud/CALIBRACAO.md: tabela do dado medido (675 acórdãos com valor, DataJud 4.878/34 tribunais, aderência 8,6% e o que ela valida), lei (Art. 52) e referência de mercado (IBM 2025), mais cada juízo editorial do modelo com sua justificativa (inclusive o n amostral deSETOR_DANO_MULT) e o passo-a-passo de recalibração.data.jsonganha_meta(versão/coleta/período/apontador).A5 · A paleta tem dono
Tokens
--brand-*publicados uma única vez emsite-chrome.css; hub e RiskJud viram aliases (--marine:var(--brand-marine)…); o Plotly lê as cores viagetComputedStyle— os 12 hex do<script>sumiram. Trocar uma cor no chrome propaga para hub, app e gráficos. Tints locais do disclaimer ficam como exceção comentada.A6 · A prosa é injetada do dado
Metodologia, faixa IBM, contexto e rodapé de fontes usam spans
data-djpreenchidos norenderContexta partir dodata.json— atualizar o dado atualiza o texto (chaves↔spans verificados em bijeção). Única duplicação restante: ameta description(estática por natureza do SEO), justificada em comentário e listada no checklist de recalibração do CALIBRACAO.md.A7 · O molde está escrito
README ganha "Como criar um app" com as 5 convenções que evitam que o segundo app herde os vazamentos: pasta própria ·
model.mjspuro(params, data)· calibração no JSON com_meta+CALIBRACAO.md·model.test.mjsno CI · cores viavar(--brand-*).Verificação
node --test11/11 (4 testes novos; roda no CI) · sintaxe do módulo inline verificada comnode --check· greps de aceite de A3/A5/A6 batidos.Checklist da auditoria: A1–A7 ✅ — repo fechado. 🏁
🤖 Generated with Claude Code
https://claude.ai/code/session_018qgnHZkTUK5SR4PRDfm3KA
Generated by Claude Code