Ir para o conteúdo

Componentes do Sistema (Technical Design)

Este documento descreve os principais componentes internos do KotaJá e suas responsabilidades.


1. Visão em Componentes (alto nível)

flowchart LR
  UI["UI (Streamlit)"]
  SVC["Camada de Servicos"]
  REPO["Camada de Repositorios"]
  DB[("PostgreSQL")]

  UI -->|"chama casos de uso"| SVC
  SVC -->|"executa consultas"| REPO
  REPO -->|"SQL"| DB

2. Componentes internos (detalhado)

flowchart TB
  subgraph UI["Interface (Streamlit)"]
    P1["pages/public_quote.py (consulta publica)"]
    P2["pages/admin_users.py (backoffice - futuro)"]
    P3["pages/catalog.py (backoffice - futuro)"]
  end

  subgraph APP["Aplicacao (Core)"]
    S1["services/quote_service.py"]
    S2["services/log_service.py"]
    S3["services/catalog_service.py (futuro)"]
    S4["services/store_service.py (futuro)"]
    S5["services/batch_service.py (futuro)"]
  end

  subgraph DATA["Dados (Persistencia)"]
    R1["repos/quote_repo.py"]
    R2["repos/log_repo.py"]
    R3["repos/catalog_repo.py (futuro)"]
    R4["repos/store_repo.py (futuro)"]
    R5["repos/batch_repo.py (futuro)"]
    DB[("PostgreSQL")]
  end

  P1 --> S1
  P1 --> S2

  S1 --> R1
  S2 --> R2

  R1 --> DB
  R2 --> DB

3. Responsabilidade por componente

UI (Streamlit)

  • renderiza telas
  • captura filtros de consulta
  • exibe resultado
  • não contém regra de negócio

Services

  • valida entradas
  • aplica regras de negócio
  • orquestra chamadas a repositórios
  • define respostas (DTOs) para a UI

Repositories

  • executa queries SQL
  • isola persistência do resto do sistema
  • retorna dados em formato simples (dict/rows)

Banco

  • mantém integridade via constraints
  • armazena logs de consulta
  • armazena agregações mensais