Pular para conteúdo

Design Técnico (Baixo Nível)

Enquanto o C4 Model descreve o que as partes fazem, este documento detalha como as partes interagem no nível de código e dados.

1. Stack Tecnológica (Visão Lógica)

O sistema é logicamente particionado em camadas cliente-servidor padrão.

Camada Cliente (Frontend)

A interface de usuário é uma SPA desenvolvida em React 19.x com estilização responsiva baseada em CSS puro com Design System próprio.

Tecnologia Função
HTML5/CSS3 Estrutura semântica e estilização base
Bootstrap 5 Sistema de grid e layout (estritamente estrutural)
CSS Puro Design System proprietário, variáveis dinâmicas e tipografia
React 19.x Biblioteca de interfaces de usuário

Camada Servidora (Backend)

O backend é um monólito modular que orquestra a lógica de negócio, autenticação e comunicação externa.

Tecnologia Função
Java 21 LTS Linguagem principal
Spring Boot 4.1 Framework web e autoconfiguração
Spring Security Gateway interno para validação de JWTs
Flyway Migrações versionadas do banco PostgreSQL

2. Diagrama de Classes (Domínio Principal)

A estrutura semântica dos dados reflete as entidades de negócio em memória e seus relacionamentos diretos:

classDiagram
    class Usuario {
        +UUID id
        +String nome
        +String email
        +String senhaHash
        +Role papel
        +login()
        +atualizarPerfil()
    }

    class Projeto {
        +UUID id
        +String titulo
        +String descricao
        +adicionarMembro(Usuario)
    }

    class Documento {
        +UUID id
        +String titulo
        +String fileUrl
        +StatusDocumento status
        +LocalDateTime dataEnvio
        +aprovar()
        +rejeitar()
    }

    class Auditoria {
        +UUID id
        +AcaoAuditoria acao
        +LocalDateTime dataHora
        +String ipOrigem
    }

    Usuario "1" -- "*" Projeto : Participa
    Projeto "1" *-- "*" Documento : Contém
    Usuario "1" -- "*" Auditoria : Gera

3. Diagrama de Sequência: Upload e Auditoria

O fluxo crítico de negócio envolvendo a submissão de um documento acadêmico e seu correlato registro de segurança imutável:

sequenceDiagram
    participant P as Pesquisadora
    participant F as Frontend
    participant B as Backend
    participant S as Storage (Cloud Storage)
    participant A as Auditoria

    P->>F: Submete Arquivo PDF
    F->>B: POST /upload (JWT + Arquivo)
    B->>S: Salva Binário
    S-->>B: Confirmação e Caminho (URI)
    B->>A: Registra evento UPLOAD_SUCCESS
    B-->>F: Retorna status 201 Created
    F-->>P: Exibe Confirmação na Tela

Histórico de Versões

Versão Data Descrição Autor
1.0 30/05/2026 Criação do documento Pedro Henrique P. Santos
1.1 13/06/2026 Revisão técnica e reestruturação da documentação Pedro Henrique P. Santos
1.2 04/07/2026 Revisão profunda, correção de metadados e melhorias visuais Pedro Henrique P. Santos

Comentários