Skip to content

arquitetura (apps): fronteira código/dado/marca + proveniência versionada + o molde (A2–A7 — fecha a auditoria) - #2

Merged
Janilo merged 1 commit into
mainfrom
claude/website-architecture-audit-s5ml9o
Jul 4, 2026
Merged

Janilo merged 1 commit into
mainfrom
claude/website-architecture-audit-s5ml9o

Conversation

@Janilo

@Janilo Janilo commented Jul 4, 2026

Copy link
Copy Markdown
Owner

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) e exposicao_com_ano agora saem prontos de analisar() — testados. Todo ×100 de exibição passa pelo fmtPct (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. Os 0.02 que 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 de SETOR_DANO_MULT) e 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 (--marine:var(--brand-marine)…); o Plotly lê as cores via getComputedStyle — 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-dj preenchidos no renderContext a partir do data.json — atualizar o dado atualiza o texto (chaves↔spans verificados em bijeção). Única duplicação restante: a meta 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.mjs puro (params, data) · calibração no JSON com _meta+CALIBRACAO.md · model.test.mjs no CI · cores via var(--brand-*).

Verificação

node --test 11/11 (4 testes novos; roda no CI) · sintaxe do módulo inline verificada com node --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

…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
@Janilo
Janilo merged commit 83c3c63 into main Jul 4, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants