clima-cuida-care-weather/docs/EXECUCAO.md
2026-05-20 19:15:40 -03:00

45 lines
1.6 KiB
Markdown

# Execução
## Arquitetura
```text
src/
api/openMeteo.ts chamadas e normalização das APIs públicas
components/ peças de interface do dashboard
data/mock.ts dados de fallback e perfis de uso
lib/formatters.ts datas, unidades e textos curtos
lib/riskScore.ts score local e recomendações
lib/riskScore.test.ts testes unitários do score
App.tsx estado, preferências e composição da tela
```
## Fluxo de dados
1. O usuário busca uma cidade ou autoriza geolocalização.
2. `openMeteo.ts` chama Weather Forecast e Air Quality em paralelo.
3. Os dados são normalizados para `WeatherBundle`.
4. `riskScore.ts` calcula fatores de UV, chuva, sensação térmica, vento e poluição.
5. A UI mostra semáforo, métricas, recomendações, timeline e previsão.
6. Perfil e local escolhido ficam no `localStorage`.
## Decisões técnicas
- Vite + React + TypeScript para manter o projeto pequeno e didático.
- CSS próprio para evitar dependências de UI e facilitar explicação em aula.
- `lucide-react` apenas para ícones funcionais.
- `Vitest` para testes unitários do cálculo de risco.
- Sem backend, banco de dados, autenticação ou chaves privadas.
- Fallback local explícito quando a API não responde.
## Cálculo de risco
O score combina:
- UV alto.
- Chance e intensidade de chuva.
- Sensação térmica extrema.
- Vento e rajadas.
- PM2.5, PM10 e AQI dos EUA.
- Ajuste por perfil de uso.
O maior fator individual também pesa no resultado final para impedir que uma média esconda um risco grave, como poluição alta para quem tem rinite/asma.