Partilhar: WhatsApp
aulify · Mini-Projecto
UC UC00607 · T. Desenv. Software
Versão · Aluno

Mini-Projecto · Agregador de meteorologia

Consumir API, persistir, gerar relatórios, testar
⏱ Duração estimada: 10 horas (≈ 6 aulas) ↗ Referencial SNQ
Índice

Contexto

Cada par/trio constrói uma aplicação Python que: 1. Consulta API de meteorologia para várias cidades portuguesas. 2. Guarda histórico em ficheiros locais. 3. Gera relatórios diários e mensais. 4. Tem testes automatizados.

Aplica recursão (travessia de directorias de dados), módulos (organização), JSON (API + persistência), pytest (testes).

Requisitos

Funcionais

  1. CLI com argumentos (--cidade Lisboa, --relatorio).
  2. Consumir API (OpenWeather, wttr.in ou outra pública gratuita).
  3. Persistir dados em JSON (1 ficheiro por cidade ou por dia).
  4. Relatórios:
  5. Temperatura máxima e mínima do dia.
  6. Média semanal.
  7. Comparação entre cidades.
  8. Cache — se já temos dado da última hora, não chamar API.

Não-funcionais

  1. Estrutura modular (pelo menos 4 módulos).
  2. 15+ testes pytest.
  3. Cobertura mín. 70% (pytest-cov).
  4. README com instalação + uso.
  5. Git com 10+ commits descritivos.

Fases

Fase 1 · 1.5h

Planeamento e API

Diagrama de módulos + exemplo de resposta JSON da API.

Fase 2 · 2h

Camada de API

api.py + 5+ testes (com mock de requests).

Fase 3 · 2h

Persistência

storage.py + 4+ testes (com tmp_path fixture).

Fase 4 · 2h

Relatórios

relatorios.py + 4+ testes.

Fase 5 · 1.5h

CLI e integração

CLI funcional. python main.py --cidade Lisboa deve mostrar tempo actual.

Fase 6 · 1h

README, polish, entrega

README + repositório Git + apresentação curta (3-5 min).

Critérios de avaliação

Item Peso
Estrutura modular 15%
Consumir API correctamente (com erros) 15%
Persistência funcional 15%
Relatórios úteis 15%
Testes (qtd. + qualidade) 20%
Cobertura ≥ 70% 5%
CLI bem desenhada 5%
README + Git history 10%

Reflexão

Em meia página: qual a parte mais difícil? Testes ajudaram ou atrasaram-te? Como adaptarias este projecto se em vez de meteorologia fosse cotações da bolsa?