d40b3b0c9c
- 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
VentoApp — NBR 6123:2023
Status (jul/2026): 8/8 marcos concluídos. 100% de cobertura da NBR 6123:2023. Próximas melhorias: ver
../PROGRESS.mdseção "Roadmap pós-Marco 8".
Aplicativo para cálculo de cargas de vento conforme a norma brasileira ABNT NBR 6123:2023 — Forças devidas ao vento em edificações.
🎯 Cobertura
Implementa 100% das seções e anexos normativos:
- Sec. 5 — Velocidade característica (V₀, S₁, S₂, S₃, mudança de rugosidade)
- Sec. 6.1 — Edificações paralelepipédicas (Tabelas 6–12, excentricidade, atrito, alta turbulência)
- Sec. 6.2 — Superfícies curvas: cilindros, abóbadas, cúpulas (Tabelas 13–22)
- Sec. 6.3 — Pressão interna (Cpi) — método simplificado + detalhado
- Sec. 6.4 — Efeitos de vizinhança (fᵥ)
- Sec. 7 — Muros, placas, coberturas isoladas (Tabelas 23–25)
- Sec. 8 — Barras prismáticas, reticulados, torres (Tabelas 26–30 + Figs 12–18)
- Sec. 9 — Efeitos dinâmicos em estruturas alteadas, conforto humano
- Sec. 10 — Vibração por desprendimento de vórtices (Vcr, Scruton)
- Sec. 11 — Ação de vento em pontes (Pse, flutter, galope)
- Anexos A, B, C — S₂(qualquer t), S₃(Pₘ, vida útil), 49 estações meteorológicas
🚀 Stack
- React 19 + TypeScript + Vite 8
- Tailwind v4 + shadcn/ui (new-york)
- Zustand (estado)
- @react-three/fiber + drei (3D)
- @react-pdf/renderer (PDF)
- Vitest (testes) — 38/38 passando
🧪 Scripts
cd app
npm run dev # desenvolvimento (HMR)
npm run build # tsc + vite build
npm run lint # oxlint
npm test # vitest run (38 testes)
npm run test:watch # vitest watch
Atenção: Os binários em
node_modules/.bin/perdem o bit de execução. Se reclamarPermission denied, rodechmod +x node_modules/.bin/<bin>antes.
📁 Estrutura
app/src/
├── lib/
│ ├── wind-kernel.ts Motor matemático
│ ├── bilinear-interp.ts Interpolação bilinear (sec. 3.2)
│ ├── log-interp.ts Interpolação log-linear
│ ├── wind-direction.ts Mudança de rugosidade (sec. 5.5)
│ ├── internal-pressure.ts Cpi (sec. 6.3)
│ ├── neighborhood.ts fᵥ (sec. 6.4)
│ ├── coefficients.ts Cpe paredes/telhados (Tab. 6-12)
│ ├── excentricity.ts ea, eb (sec. 6.1.4)
│ ├── friction.ts Força de atrito (sec. 6.1.5)
│ ├── drag.ts Ca baixa/alta turbulência (Figs 4-5)
│ ├── comfort.ts a_lim ISO 10137
│ ├── storage.ts Persistência IndexedDB
│ ├── theme.tsx Dark/light mode
│ ├── i18n.ts Strings pt-BR/en-US
│ ├── stations-lookup.ts 49 estações Anexo C
│ ├── export-pdf.tsx PDF didático
│ ├── export-csv.ts CSV estruturado
│ ├── modules/ Strategy pattern (7 módulos)
│ ├── nbr-tables/ 36 tabelas + 3 anexos
│ ├── hooks/useProjects.ts Hook React
│ └── __tests__/ Vitest (5 suites, 38 testes)
├── components/
│ ├── ui/ shadcn/ui
│ ├── three/
│ │ ├── Cylinder3D.tsx
│ │ ├── Vault3D.tsx
│ │ └── Dome3D.tsx
│ ├── Warehouse3D.tsx Galpão com zonas A-J
│ └── ExportMenu.tsx
├── pages/ 10 páginas
├── store/ Zustand
└── App.tsx Rotas + ThemeProvider + Layout
📋 Módulos (páginas ativas)
| Rota | Módulo | Tabelas/Figs |
|---|---|---|
/galpao |
Galpão retangular com 3D zonas A–J | 6, 7 |
/cilindro |
Silos, chaminés, reservatórios | 13 + Reynolds |
/abobada |
Abóbadas cilíndricas | 15–20 |
/cupula |
Cúpulas (terreno/parede) | 21, 22 + F sust |
/muros |
Muros e placas retangulares | 23 |
/cobertura-isolada |
Cob. isoladas (uma e duas águas) | 24, 25 |
/barras |
Barras (faces planas/circulares) | 26–28 |
/pontes |
Pontes (Pse, Cx/Cz, flutter, galope) | 35, 36 + sec. 11 |
/dinamica |
Dinâmica + vórtices + conforto | 31–34 |
/settings |
Tema, persistência, estado | — |
📐 Fórmula central
Vₖ = V₀ · S₁ · S₂ · S₃
q = 0,613 · Vₖ² / 1000 [kN/m²]
p = q · (Cpe − Cpi) [kN/m²]
🧪 Testes (38/38 ✅)
npm test
Cobrem:
- Motor matemático (classe, S₂, Vₖ, q, S₃) — 14 testes
- Interpolação bilinear e log — 5 testes
- Cpi simplificado + clamp — 9 testes
- Vizinhança — 4 testes
- Reynolds + regime de escoamento — 6 testes
💾 Persistência
Projetos salvos em IndexedDB (browser local). Configurações de tema também em localStorage.
🌗 Temas
- Light, Dark, System (segue
prefers-color-scheme) - Toggle em
/settings
📚 Documentação adicional
../PROGRESS.md— Estado atual + roadmap de melhorias futuras../PLAN.md— Plano histórico dos 8 marcos../AGENTS.md— Guia para IAs continuarem o trabalho../NBR-6123-2023.pdf— Norma oficial
🚧 Próximas melhorias (resumo)
| ID | Item | Esforço | Impacto |
|---|---|---|---|
| M9.1 | Refinar tabelas a partir do PDF real | 3 dias | Alto |
| M9.2 | Cargas lineares (kN/m) por barra | 2 dias | Alto |
| M9.3 | Screenshot 3D no PDF | 1 dia | Médio |
| M9.4 | Export Ftool (.txt) | 2 dias | Médio |
| M9.5 | Refatoração TypeScript (eliminar void) |
1 dia | Baixo |
| M9.6 | 3D para muros/torres/pontes/barras | 3 dias | Médio |
| M9.7 | Import JSON de projetos | 1 dia | Médio |
| M9.8 | i18n completo (en-US) | 2 dias | Baixo |
| M9.9 | Validação contra Blessmann | 2 dias | Alto |
| M9.10 | Dark mode em gráficos SVG | 0.5 dia | Baixo |
| M9.11 | Persistência em servidor (especulativo) | — | — |
| M9.12 | Testes E2E com Playwright | 2 dias | Médio |
Detalhes e contexto em ../PROGRESS.md.
Aviso: Esta ferramenta é auxiliar. O projetista é responsável pela validação final dos resultados conforme a NBR 6123:2023 e pela emissão de ART.