|
|
|
* Frontend
|
|
|
|
* Backend
|
|
|
|
* Infraestrutura
|
|
|
|
|
|
|
|
# Visão Geral do Backend
|
|
|
|
|
|
|
|
O **Painel de Dados Nubo - Backend** é um sistema baseado em microserviço que fornece APIs para gerenciamento e entrega de dados analíticos. Ele é construído utilizando **FastAPI** e segue uma arquitetura modular para garantir escalabilidade, segurança e facilidade de manutenção.
|
|
|
|
|
|
|
|
## Estrutura de projeto
|
|
|
|
|
|
|
|
O sistema segue a arquitetura **modular**, organizada da seguinte forma:
|
|
|
|
|
|
|
|
```
|
|
|
|
📦 nubo-backend
|
|
|
|
┣ 📂 config # Configurações do sistema (banco, JWT, YAML, etc.)
|
|
|
|
┣ 📂 model # Definições das entidades e estrutura do banco de dados
|
|
|
|
┣ 📂 repository # Camada de acesso a dados e comunicação com o banco
|
|
|
|
┣ 📂 routers # Endpoints da API
|
|
|
|
┣ 📂 service # Regras de negócio e lógica de processamento
|
|
|
|
┣ 📜 requirements.txt # Dependências do projeto
|
|
|
|
┣ 📜 Dockerfile # Configuração para Docker
|
|
|
|
┣ 📜 README.md # Documentação
|
|
|
|
┗ 📜 .env.example # Configuração de ambiente
|
|
|
|
```
|
|
|
|
|
|
|
|
### **Camada de Modelos (Model)**
|
|
|
|
|
|
|
|
- Utiliza **SQLAlchemy** como ORM.
|
|
|
|
- Define as tabelas do banco de dados.
|
|
|
|
- Gerencia a persistência dos dados.
|
|
|
|
|
|
|
|
### **Camada de Repositório (Repository)**
|
|
|
|
|
|
|
|
- Implementa operações de banco de dados de forma desacoplada.
|
|
|
|
- Facilita a reutilização e manutenção do código.
|
|
|
|
|
|
|
|
### **Camada de Rotas (Routers)**
|
|
|
|
|
|
|
|
- Define as **rotas da API** usando **FastAPI**.
|
|
|
|
- Processa requisições HTTP e delega a lógica para a camada de serviços.
|
|
|
|
|
|
|
|
### **Camada de Serviços (Service)**
|
|
|
|
|
|
|
|
- Contém a lógica de negócio.
|
|
|
|
- Interage com os modelos e garante as regras do sistema.
|
|
|
|
|
|
|
|
### **Camada de Configuração (Config)**
|
|
|
|
|
|
|
|
- Gerencia configurações gerais do sistema.
|
|
|
|
- Inclui conexão com o banco de dados e parâmetros do JWT.
|
|
|
|
|
|
|
|
## Integrações e Tecnologias
|
|
|
|
|
|
|
|
| Tecnologia | Uso |
|
|
|
|
| --------------- | -------------------------------------- |
|
|
|
|
| **FastAPI** | Framework web para APIs assíncronas |
|
|
|
|
| **SQLAlchemy** | ORM para manipulação de banco de dados |
|
|
|
|
| **JWT (PyJWT)** | Autenticação e autorização |
|
|
|
|
| **Docker** | Containerização da aplicação |
|
|
|
|
| **YAML** | Configuração parametrizada do sistema |
|
|
|
|
|
|
|
|
## Fluxo de Requisição
|
|
|
|
|
|
|
|
1. **Usuário** faz uma requisição HTTP para a API.
|
|
|
|
2. **Router** recebe a requisição e valida os dados de entrada.
|
|
|
|
3. **Service** processa a lógica de negócio e acessa os modelos, se necessário.
|
|
|
|
4. **Repository** interage com o banco de dados via SQLAlchemy.
|
|
|
|
5. **Resposta** é enviada de volta ao usuário.
|
|
|
|
|