Documentação do Negócio
Documentação Técnica
- 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 |
Fluxo de Requisição
- Usuário faz uma requisição HTTP para a API.
- Router recebe a requisição e valida os dados de entrada.
- Service processa a lógica de negócio e acessa os modelos, se necessário.
- Repository interage com o banco de dados via SQLAlchemy.
- Resposta é enviada de volta ao usuário.
Rotas da API
User
- POST /users - _Criar usuário (admin ou normal) _
- GET /users/email/{email} - _Buscar usuário por email _
- GET /users/account/{accountId} - _Listar todos os usuários por conta _
- DELETE /users/{userId} - _Excluir usuário (soft delete) _
- POST /users/authenticate - Autenticar usuário
Account
- POST /accounts - _Criar conta _
- PUT /accounts/{accountId} - Atualizar conta
- GET /accounts/email/{email} - _Buscar conta por email _
- GET /accounts - Listar todas as contas
- DELETE /accounts/{accountId} - Excluir conta (soft delete)
Dataset
- POST /datasets - _Criar dataset _
- PUT /datasets/{datasetId} - _Atualizar dataset _
- GET /datasets/{datasetId} - _Buscar dataset por ID _
- GET /datasets/location/{location} - _Buscar dataset por localização _
- GET /datasets/price/{price} - Buscar dataset por preço
- GET /datasets - Listar todos os datasets (paginação)
- DELETE /datasets/{datasetId} - Excluir dataset (soft delete)
Invoice
- POST /invoices - Criar fatura
- GET /invoices/account/{accountId} - Buscar fatura por conta
- GET /invoices - Buscar todas as faturas Transaction
- POST /transactions - Criar transação (única ou assinatura)
Subscription
- POST /subscriptions - Criar assinatura
- DELETE /subscriptions/{subscriptionId} - Cancelar assinatura
- GET /subscriptions/account/{accountId} - Buscar todas as assinaturas por conta
- GET /subscriptions/account/{accountId}/month/{month} - Buscar todas as assinaturas por conta e mês