Linha 167: Linha 167:
| 10 || 08/12/2025 || RF02: Processar a resposta do OCR ||
| 10 || 08/12/2025 || RF02: Processar a resposta do OCR ||
|-
|-
| 11 || 15/12/2025 || Segunda Entrega ||
| 11 || 15/12/2025 || 2a. Entrega - Vídeo até 19/12 pelo Teams - RFs 1 e 2 ||
|-
|-
| 12 || || RF03: Persistir o texto pelo OCR ||
| 12 || || RF03: Persistir o texto pelo OCR ||

Edição das 22h20min de 15 de dezembro de 2025

Fase 2


Escopo


  • Otimizar o ciclo de vida das atividades complementares e de estágio na Universidade Federal de Uberlândia. A plataforma centraliza desde a divulgação de novas oportunidades de desenvolvimento para os alunos até o envio, acompanhamento e validação dos documentos comprobatórios garantindo mais agilidade e transparência para alunos e coordenadores.


Requisitos Funcionais


FAse 1 - 2025-1


  • RF01 — Autenticação de Usuário
    • O sistema deve permitir login para alunos e administradores.


  • RF02 — Dashboard do Aluno
    • O sistema deve exibir ao aluno um painel com acesso a funcionalidades principais.


  • RF03 — Envio de Documentos
    • O aluno deve conseguir submeter documentos como certificados, relatórios, etc.
    • O sistema deve armazenar esses documentos no banco de dados.


  • RF04 — Consulta de Documentos
    • O aluno deve conseguir visualizar o status de seus documentos e certificados enviados.


  • RF05 — Feed de Oportunidades
    • O sistema deve exibir aos alunos uma lista de oportunidades de estágio, cursos, eventos, etc.


  • RF06 — Gerenciamento de Perfil
    • O aluno deve conseguir visualizar e editar suas informações pessoais.


  • RF07 — Dashboard Administrativo
    • O administrador deve acessar um painel com pendências e funcionalidades de gestão.


  • RF08 — Validação de Documentos
    • O administrador deve visualizar documentos pendentes enviados pelos alunos.
    • O administrador deve aprovar ou rejeitar os documentos, podendo incluir uma justificativa.


  • RF09 — Cadastro de Oportunidades
    • O administrador deve conseguir cadastrar novas oportunidades para o feed dos alunos


Fase 2 - 2025-2



  • RF01: Submeter documento para o OCR
  • RF02: Processar a resposta do OCR
  • RF03: Persistir o texto pelo OCR


Requisitos Não-Funcionais


  • RNF01 — Segurança
    • O sistema deve proteger os dados dos usuários e documentos através de autenticação segura.
    • Deve haver controle de acesso (permissões diferenciadas entre alunos e administradores).


  • RNF02 — Usabilidade
    • A interface deve ser intuitiva, com navegação clara para ambos os perfis de usuário.


  • RNF03 — Confiabilidade
    • O sistema deve garantir que os documentos enviados não sejam corrompidos ou perdidos.
    • A informação exibida (como status de documentos) deve estar sempre atualizada com o banco de dados.


  • RNF04 — Escalabilidade
    • O sistema deve suportar o crescimento no número de usuários e documentos sem perda de desempenho.


  • RNF05 — Performance
    • O tempo de resposta para login, envio de documentos e visualização de painéis deve ser rápido (idealmente  2s).


  • RNF06 — Compatibilidade
    • O sistema deve funcionar nos principais navegadores Chrome, Firefox, Edge).
    • Deve ser acessível em dispositivos móveis (responsivo).


  • RNF07 — Manutenibilidade
    • O sistema deve ser estruturado para facilitar futuras atualizações e correções de bugs

Melhores Práticas

O backend (Java) segue uma Arquitetura de Camadas (Layered Architecture), fundamental para o desacoplamento e a manutenibilidade do sistema. A camada de Controladores (controllers) é responsável apenas por receber requisições HTTP e rotear os dados, atuando como interface entre o cliente e a lógica de negócio, sem conter regras de validação ou manipulação de dados.

O coração da aplicação reside na camada de Serviços (services), onde está concentrada toda a lógica de negócio (validações, cálculos e transformações). Esse isolamento garante que as regras de negócio sejam testáveis independentemente do protocolo web.

Complementam essa estrutura as camadas de Infraestrutura (infra), que trata de aspectos técnicos como acesso a bancos de dados, e Segurança (security), dedicada à autenticação e autorização dos usuários.

Exemplo de Single Responsibility Principle (SRP)

@RestController
@RequestMapping("/api/certificates")
public class CertificateController {

    private final CertificateService certificateService;

    @Autowired
    public CertificateController(CertificateService certificateService) {
        this.certificateService = certificateService;
    }

    @PostMapping
    public ResponseEntity<CertificateDTO> createCertificate(@Valid @RequestBody CertificateDTO dto) {
        CertificateDTO created = certificateService.createCertificate(dto);
        return new ResponseEntity<>(created, HttpStatus.CREATED);
    }
}

No exemplo acima, o CertificateController tem uma única responsabilidade: atuar como interface HTTP, delegando toda a lógica de negócio ao CertificateService. Isso está em conformidade com o Princípio da Responsabilidade Única (SRP) do SOLID, facilitando a manutenção, testes e evolução do sistema.

Monorepo com Módulos Independentes

O projeto adota a estratégia de monorepo, onde múltiplos módulos — como backend, frontend e bibliotecas internas — são gerenciados em um único repositório. Essa abordagem facilita a integração entre as equipes, promove a reutilização de código e garante maior consistência entre os diferentes domínios do sistema. Cada módulo pode ser desenvolvido, testado e implantado de forma independente, otimizando o fluxo de trabalho e a manutenção do projeto.

Documentação Automática com OpenAPI/Swagger

A API backend é documentada automaticamente utilizando OpenAPI/Swagger. Por meio de anotações no código, toda a especificação dos endpoints é gerada de forma dinâmica, criando uma documentação viva e sempre atualizada. Isso facilita a integração com o frontend, acelera o desenvolvimento e reduz dúvidas sobre o funcionamento da API, além de servir como referência para novos desenvolvedores e para a manutenção futura.

Evolução do projeto


Item Data Atividades CertificaUFU Realizado
1 14/11/2025 Documentar tópico Investigação 100%
2 14/11/2025 Documentar os Manuais 100%
3 14/11/2025 Definir Proposta de Projeto ??
4 14/11/2025 Validar Visão do Usuário ??
5 17/11/2025 Especificar RFs e RNFs - Fase 2 100%
6 17/11/2025 RF01: Submeter documento para o OCR 100%
x 24/11/2025 TeckWeek
7 01/12/2025 Melhores Práticas
8 01/12/2025 RF01: Submeter documento para o OCR 100%
9 08/12/2025 RF01: Submeter documento para o OCR ??
10 08/12/2025 RF02: Processar a resposta do OCR
11 15/12/2025 2a. Entrega - Vídeo até 19/12 pelo Teams - RFs 1 e 2
12 RF03: Persistir o texto pelo OCR
13 Incrementar diferencial tecnológico