LINK DO FIGMA: https://www.figma.com/board/5qqctfNDqw7eqWz6PsKYfS/arquitetura_diagrama_v2?node-id=0-1&t=tOb76BxZKqqiHhOT-1
Esse diagrama será feito com base na estrutura base do Projeto, para facilitar o entediimento e desenvolvimento. Com o decorrer das Sprints, vamos atualizando o diagrama de acordo com as necessidades que vermos.
Com as Tecnologias de base definidas:
IA: spaCy / transformers (ainda falta estudo e decisão)
Banco: PostgreSQL (ainda decidindo) + SQLAlchemy + psycopg
Com o Fluxo de Dados e sistema de Login decididos, conseguimos montar melhor o fluxo geral do sistema, e os fluxos individuais, posteriormente.
O sistema tem como objetivo principal consumir dados públicos da Câmara dos Deputados do Brasil, tratá-los e disponibilizá-los de forma eficiente ao usuário, permitindo também personalização (favoritos, histórico e notificações).
O objetivo é estabelecer um fluxo simples, performático e escalável o suficiente, garantindo boa experiência para o usuário e facilidade de manutenção.
A arquitetura será baseada em camadas, com separação clara de responsabilidades:
O fluxo padrão de requisição será:
Usuário
↓
Frontend (HTML/CSS/JS)
↓
Fetch API
↓
Backend (Flask)
↓
Routes
↓
Controllers
↓
Services
↓
Repositories
↓
Banco de Dados
↓
Resposta JSON
↓
Frontend
O frontend nunca acessa a API externa diretamente.
O login será feito via Google utilizando OAuth 2.0:
Usuário
↓
Frontend
↓
Login com Google
↓
Backend recebe token
↓↓
Valida token
↓
Busca ou cria usuário
↓
Cria sessão
↓
Usuário autenticado
Usuário acessa dashboard
↓
Frontend envia requisição
↓
Backend processa
↓
Banco retorna dados já tratados
↓
Frontend renderiza
Usuário favorita proposição
↓
Backend registra em favoritos (user_id, proposicao_id)
Usuário interage
↓
Backend registra evento no historico
Proposição é atualizada
↓
Sistema identifica usuários que favoritaram
↓
Cria notificações
↓
Usuário visualiza no sistema
A atualização dos dados é feita de forma assíncrona:
Scheduler
↓
Backend
↓
Consulta API da Câmara dos Deputados
↓
Busca proposições com movimentação recente
↓
Para cada proposição:
↓
Busca dados completos
↓
Processa e normaliza
↓
Classifica com IA
↓
Atualiza banco
Estratégia:
Buscar o que mudou recentemente (tramitações)
A API não fornece atualização global.
Portanto:
Isso é suficiente para dashboards e análise.
O sistema possui dois fluxos principais:
Ambos convergem no banco de dados estruturado.
project/
├── frontend/
├── backend/
│ ├── auth/
│ ├── routes/
│ ├── controllers/
│ ├── services/
│ ├── repositories/
│ ├── ai/
│ ├── models/
│ └── config/
└── database/
proposicoes → dados tratados das proposiçõesusers → usuáriosfavoritos → relação usuário ↔ proposiçãohistorico → interaçõesnotificacoes → eventosTodas as relações feitas via user_id e proposicao_id.
O sistema não consome dados em tempo real para o usuário
Ele prepara os dados antes e entrega pronto
Resultado: