feat(audit): adicionar módulo de auditoria + rebranding BrainWind

- AuditPanel, AuditDetailPopup, parser, runner, prompt-builder, serializer, scenarios, export-audit-pdf
- i18n: strings novas para auditoria
- Settings: integração com módulo de auditoria
- types: tipos compartilhados do módulo audit
This commit is contained in:
2026-07-10 11:38:12 +00:00
parent dc3721e12b
commit d40b3b0c9c
12 changed files with 1657 additions and 14 deletions
+49 -9
View File
@@ -17,12 +17,12 @@
| Data da última atualização | 2026-07-10 |
| Marcos concluídos | **8 / 8** (plano completo) + M9.1 ✅ + M9.2 ✅ + M9.3 ✅ + M9.4 ✅ + M9.5 ✅ + M9.6 ✅ + M9.7 ✅ + M9.8 ✅ + M9.9 ✅ + M9.10 ✅ + M9.13 ✅ + M9.14 ✅ + M9.15 ✅ + M9.16 ✅ |
| Cobertura NBR 6123:2023 | **100% das 11 seções + 3 anexos** |
| Linhas de código TS/TSX | ~7.400 |
| Arquivos `.ts`/`.tsx` no `src/` | **110** |
| Linhas de código TS/TSX | ~8.200 |
| Arquivos `.ts`/`.tsx` no `src/` | **120** |
| Páginas (rotas) | **10** |
| Módulos Strategy | **7** |
| Tabelas da norma implementadas | **36 / 36** + 3 anexos (auditadas M9.1) |
| Testes Vitest | **310 passando / 310 totais** |
| Testes Vitest | **316 passando / 316 totais** |
| Build de produção | ✅ passa (2645 módulos) |
| Lint (oxlint) | ✅ 0 erros |
| Persistência local | ✅ IndexedDB (Dexie-style) |
@@ -311,10 +311,10 @@ cd /root/Apps/windapp/app
# 1. Compilação TS (deve passar sem erros)
./node_modules/.bin/tsc -b
# 2. Testes (deve mostrar 38/38 passing)
# 2. Testes (deve mostrar 316/316 passing)
./node_modules/.bin/vitest run
# 3. Lint (deve mostrar 0 errors, ~5 warnings cosméticos)
# 3. Lint (deve mostrar 0 errors, ~10 warnings cosméticos)
./node_modules/.bin/oxlint
# 4. Build de produção
@@ -326,9 +326,9 @@ npm run dev
**Resultado esperado:**
- ✅ tsc: silent (sem output)
- ✅ vitest: `Test Files 5 passed (5) | Tests 38 passed (38)`
- ✅ oxlint: `Found N warnings and 0 errors`
- ✅ vite: `✓ built in ~2s` com `dist/assets/index-*.js ~2.9 MB`
- ✅ vitest: `Test Files 16 passed (16) | Tests 316 passed (316)`
- ✅ oxlint: `Found 10 warnings and 0 errors`
- ✅ vite: `✓ built in ~2.5s` com `dist/assets/index-*.js ~3.2 MB`
---
@@ -634,6 +634,46 @@ gráficos SVG inline para variáveis CSS do tema, suportando dark mode.
- Refatoração de `ExportMenu.tsx` para receber callbacks customizados, permitindo a exportação de PDF com suporte à visualização 3D para qualquer módulo de engenharia suportado pela NBR 6123.
- Testes de build (`tsc -b` e `vite build`) passando com sucesso e mantendo a integridade (310/310 testes unitários sem regressões).
### M9.16 — Ferramenta de Auditoria LLM (Settings → Testes)
**Status:** ✅ Concluído (2026-07-10)
**Escopo:** Criar ferramenta temporária (dentro da página de Configurações, aba "Testes") que valida os cálculos do VentoApp contra a NBR 6123:2023 usando LLMs sequenciais. 110+ cenários de teste cobrindo todos os 10 módulos de estrutura + edge cases + variantes de Cpi.
**Entregas:**
- `app/src/lib/audit/types.ts` — Tipos centrais: `AuditScenario`, `AuditConfig`, `AuditReport`, `ScenarioResult`, `CheckStatus`, `LLMProvider`, `RouteModuleMap`
- `app/src/lib/audit/norm-reference.ts` — Dados extraídos das tabelas existentes (S₂, Cpe paredes/telhados, cilindros, pontes, fórmulas dinâmicas) para servir como ground-truth ao LLM
- `app/src/lib/audit/invariantes.ts` — 35+ regras da NBR 6123 (limites de Cpi, fórmula q, ranges de S₂, etc.)
- `app/src/lib/audit/scenarios.ts` — Gerador de 110+ cenários: Blessmann (10), varredura de geometrias (galpão, cilindro, ponte, placa, torre), variantes de Cpi (6 casos), edge cases (z mínimo, saturação, V₀, classe), cross-module, dinâmica (conforto)
- `app/src/lib/audit/serializer.ts` — Serialização de cenário para texto (formato legível por LLM)
- `app/src/lib/audit/prompt-builder.ts` — Montagem do prompt: system (norma + invariantes) + user (cenários serializados)
- `app/src/lib/audit/runner.ts` — Chamada a 4 provedores (OpenAI, Anthropic, MiniMax, OpenRouter) + Ollama local com retry, timeout 180s, `runAudit()` orquestrador
- `app/src/lib/audit/parser.ts` — Parse da resposta JSON do LLM + `buildAuditReport()` que agrupa por módulo
- `app/src/lib/audit/export-audit-pdf.tsx` — PDF do relatório via `@react-pdf/renderer`
- `app/src/components/AuditPanel.tsx` — Painel principal: config (provider/model/key), executar, barra de progresso, tabela de resultados por módulo
- `app/src/components/AuditDetailPopup.tsx` — Dialog com FallbackDiagram SVG + tabela de checks + inputs JSON + botões Exportar PDF / Copiar para módulo
- `app/src/pages/SettingsModule.tsx` — Adicionada aba "Testes" via `Tabs` (Configurações + Testes)
- `app/src/lib/i18n.ts` — 30 chaves de tradução para auditoria (pt-BR + en-US)
- **Total:** 316/316 testes passando (era 310/310).
**Provedores suportados:**
| Provedor | Modelo padrão | API Base |
|----------|---------------|----------|
| OpenAI | `gpt-4o` | `api.openai.com/v1` |
| Anthropic | `claude-3-5-sonnet-latest` | `api.anthropic.com/v1` |
| MiniMax | `minimax-m3.0` (ou m2.7) | `api.minimax.chat/v1` |
| OpenRouter | `openai/gpt-4o` (qualquer model) | `openrouter.ai/api/v1` |
| Ollama | `deepseek-r1` (local) | `localhost:11434` |
**Arquitetura:**
- Cálculo puro offline: `scenarios.ts` gera 110+ cenários com inputs/referências/faixas esperadas
- Prompt enviado ao LLM com a norma como contexto (invariantes + tabelas)
- LLM retorna JSON por cenário: `{ scenarioId, verdict, checks[], summary }`
- `buildAuditReport()` agrega por módulo (galpão, cilindro, etc.)
- Interface em Settings → Testes: escolhe provedor, executa, vê resultado em tabela
- Detalhes em popup com diagrama SVG 2D + checks individuais + inputs
- PDF exportável com resumo + todos os checks por módulo
- Botão "Copiar para o módulo" navega para rota correspondente
**Inputs validados:** V₀, S₁, S₂, S₃, Cpi (6 casos), Cpe paredes (4 faces), Cpe telhados (6 zonas), drag, atrito, coeficientes de cilindros (Re, h/d, perfil), classificação de pontes (Pse, Vit), Cf de placas, conforto humano (ISO 10137), parâmetros de torres.
#### M9.14 — Manual Didático Interativo com Animações SVG
**Status:** ✅ Concluído (2026-07-10)
**Escopo:** Criar um super manual colorido, ilustrativo e acessível com explicações interpretativas da norma NBR 6123, incluindo fluxos de vento animados em SVG para todos os módulos (Cilindros, Galpões, Cúpulas, Abóbadas, Muros, Pontes, Barras, Coberturas Isoladas).
@@ -725,7 +765,7 @@ gráficos SVG inline para variáveis CSS do tema, suportando dark mode.
## 🎯 Próximo passo sugerido
**M9.7 já está completo.** Para próximos passos, considerar:
**M9.16 já está completo.** Para próximos passos, considerar:
**M9.11 — Testes E2E com Playwright** (~2 dias, médio impacto) —
instalar `@playwright/test`, criar testes para fluxos completos
(criar projeto galpão → salvar → exportar PDF), integrar ao CI.