Skip to content

Feat/sprint4 padroes de projeto - #2

Open
NandoTavares wants to merge 16 commits into
mainfrom
feat/sprint4-padroes-de-projeto
Open

Feat/sprint4 padroes de projeto#2
NandoTavares wants to merge 16 commits into
mainfrom
feat/sprint4-padroes-de-projeto

Conversation

@NandoTavares

Copy link
Copy Markdown
Collaborator

No description provided.

romhenri and others added 16 commits June 10, 2026 21:48
Co-authored-by: luislrl <luislrl@users.noreply.github.com>
Co-authored-by: rauana-carvalho <rauana-carvalho@users.noreply.github.com>
Co-authored-by: rauana-carvalho <rauana-carvalho@users.noreply.github.com>
Introduz a entidade Gerente atraves do perfil de usuario (cliente ou
gerente) e o subsistema de produtos gerenciado por ele.

- usuario: campo perfil com validacao (cliente/gerente) e rota /gerentes
- produto: dominio, repositorio (memoria/binario) e CRUD completo
- api: FacadeSingletonController como ponto de acesso unico da boundary,
  centralizando os gerenciadores de usuarios e produtos
- ui: telas de admin e cadastro consumindo as novas rotas
- testes: cobertura de produtos, facade e perfil gerente

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
A separação de business/infra (4dbbeca) e o Repository Pattern (1f089f8)
deixaram referências antigas (app.service, app.repository,
backend.app.business.service) que não existem mais, quebrando a API e
a suíte de testes.
…itory

RepositoryFactory (Abstract Factory) cria a família de repositórios de
uma mesma estratégia de persistência; obter_fabrica() é o Factory
Method que escolhe MemoriaRepositoryFactory ou
ArquivoBinarioRepositoryFactory a partir de WIZARDRY_PERSISTENCIA. O
FacadeSingletonController deixa de instanciar repositórios concretos
diretamente e passa a depender só da fábrica.
LoggerInterface define o contrato que a camada business espera;
LoggingLibAdapter adapta o módulo `logging` da biblioteca padrão a
esse contrato, isolando GerenciadorUsuarios/GerenciadorProdutos de
qualquer biblioteca de log concreta (LoggerNulo é o padrão quando
nenhum logger é injetado). Cadastro, autenticação, atualização e
remoção passam a registrar eventos de info/erro.
Novo domínio RegistroAcesso + repositório registram cada login bem
sucedido (GerenciadorUsuarios.autenticar_usuario), alimentando
RelatorioAcessoUsuarios: Template Method que fixa o algoritmo de
geração (coletar estatísticas -> cabeçalho -> corpo -> rodapé ->
finalizar) e delega a renderização a RelatorioAcessoHTML e
RelatorioAcessoPDF (PDF gerado sem dependências externas, com
paginação). Facade ganha gerar_relatorio_acesso(formato).
Novo diagrama (sprint 4) separa visualmente Domain, Business
(interfaces/services/relatorios) e Infra (repositories/logging) para
todas as entidades, e identifica com estereótipos os padrões de
projeto usados até agora: Singleton, Facade, Repository, Abstract
Factory, Factory Method, Adapter e Template Method.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants