Visão geral
Aplicação web completa de e-commerce (não uma API sem interface, como o projeto anterior de Clean Architecture): catálogo, carrinho persistido por usuário, autenticação real via ASP.NET Core Identity, checkout com cupom de desconto, processamento de pagamento assíncrono em background com motor de risco simulado, concorrência otimista no estoque, e um painel administrativo com atualização em tempo real via SignalR.
Pagamento assíncrono e o gatilho de recusa
Sem gateway de pagamento real disponível, o checkout enfileira o pedido numa fila em memória
e retorna na hora. Um BackgroundService consome a fila, simula a latência de rede e chama
um motor de risco determinístico: pedidos acima de R$ 10.000 são recusados automaticamente,
como um bloqueio antifraude real faria, com devolução do estoque reservado.
Concorrência otimista sem SQL Server
Produto usa um token de concorrência regenerado à mão a cada mutação de estoque (SQLite não
tem rowversion nativo como o SQL Server) — dois checkouts disputando o último item do estoque
na mesma fração de segundo fazem o segundo falhar em vez de vender o mesmo item duas vezes.
Painel admin em tempo real
Toda transição de status de pedido publica um evento de domínio que vira notificação instantânea no painel administrativo via SignalR — nenhum admin logado precisa dar F5 pra ver um pedido novo ou uma mudança de status.
Testes
87 testes automatizados: 43 de domínio, 35 de aplicação contra SQLite real, e 9 de integração
via WebApplicationFactory com o aplicativo inteiro rodando (Identity, SignalR e o worker de
pagamento em background de verdade, sem nada mockado) — incluindo o fluxo completo de
aprovação e de recusa de pagamento, e as fronteiras de autorização entre cliente e admin.