<aside> <img src="/icons/dialogue_purple.svg" alt="/icons/dialogue_purple.svg" width="40px" /> Este exercício tem como objetivo avaliar a compreensão e aplicação dos princípios do Domain Driven Design (DDD) na resolução de problemas práticos. Para isso, é proposto um desafio de projeto de uma aplicação para coleta de dados climáticos usando API do OpenWeatherMap.
Descrição do Problema
Você foi designado para desenvolver um sistema de coleta de dados climáticos utilizando a API do OpenWeatherMap para fornecer informações precisas sobre as condições climáticas em Mato Grosso do Sul. Esse sistema será usado por pesquisadores da UFMS para análise e projeção de informações climáticas do estado.
Seus interesses incluem além de condições climáticas de temperatura, informações sobre vento e umidade.
Nesta atividade você deverá começar a projetar o sistema seguindo os princípios do Domain Driven Design. Você também poderá assumir situações e funcionalidades para o sistema.
**Principais atividades
Análise do Domínio:** Comece identificando os principais conceitos do domínio do problema. Isso pode incluir entidades, objetos de valor, agregados, etc.
Modelagem do Domínio: Utilizando os conceitos identificados na etapa anterior, crie um modelo de domínio que represente as entidades, seus relacionamentos e comportamentos. Considere as agregações, valores de objeto e serviços necessários para lidar com as operações do sistema.
Entregas do Exercício:

https://docs.google.com/document/d/1mPkTWtWkct16wDiP10pOg7F3XUVRNdQLB7NHwmd0FSo/edit?usp=sharing
Usando ChatGPT pra treinar design de software (DDD)
## Anotações
- Criar um repositório do projeto e outro para o script, de modo que a execução dos containers seja feita estando no repo do projeto.
- A API da OpenWeatherMap fornece 2 opções para o envio do pacote: `json` e `xml`, aqui foi escolhido o `json` para o consumo e posteriormente manipulado com `csv` em pandas.
- **Tem o limite de 60 requisições/dia ou 1.000.000 de requisições/mês, possibilitando implementar um método/padrão de projeto que consiga recolher o máximo de requisições/dia ou mês**.
- Os componentes atuantes nesse sistema são: um servidor linux e Python, um servidor de banco de dados MySQL e uma interface web usando PhpMyAdmin.
- O sistema será executado através de um compose onde cada container docker equivale a um componente do sistema.