Files

158 lines
6.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# VentoApp — NBR 6123:2023
> **Status (jul/2026):** 8/8 marcos concluídos. 100% de cobertura da NBR 6123:2023.
> **Próximas melhorias:** ver [`../PROGRESS.md`](../PROGRESS.md) seçã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 612, excentricidade, atrito, alta turbulência)
- **Sec. 6.2** — Superfícies curvas: cilindros, abóbadas, cúpulas (Tabelas 1322)
- **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 2325)
- **Sec. 8** — Barras prismáticas, reticulados, torres (Tabelas 2630 + Figs 1218)
- **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
```bash
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 reclamar `Permission denied`, rode `chmod +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 AJ | 6, 7 |
| `/cilindro` | Silos, chaminés, reservatórios | 13 + Reynolds |
| `/abobada` | Abóbadas cilíndricas | 1520 |
| `/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) | 2628 |
| `/pontes` | Pontes (Pse, Cx/Cz, flutter, galope) | 35, 36 + sec. 11 |
| `/dinamica` | Dinâmica + vórtices + conforto | 3134 |
| `/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 ✅)
```bash
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`](../PROGRESS.md) — Estado atual + roadmap de melhorias futuras
- [`../PLAN.md`](../PLAN.md) — Plano histórico dos 8 marcos
- [`../AGENTS.md`](../AGENTS.md) — Guia para IAs continuarem o trabalho
- [`../NBR-6123-2023.pdf`](../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`](../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.