O repositório tp2-stockapp é um projeto desenvolvido em C# utilizando .NET Core, seguindo os princípios da Clean Architecture. A aplicação serve para gerenciar o estoque de produtos de uma empresa, permitindo o cadastro, atualização, visualização e remoção de itens no estoque. A aplicação possui endpoints documentados utilizando Swagger, mas ainda não implementa autenticação JWT. A comunicação com o banco de dados é realizada via Azure SQL Server, utilizando Entity Framework.
- Backend:
- C#: Linguagem de programação.
- .NET Core: Framework para construção da aplicação.
- Swagger: Ferramenta para documentação de APIs.
- Entity Framework: ORM (Object-Relational Mapping) para interação com o banco de dados.
- Azure SQL Server: Serviço de banco de dados relacional na nuvem da Microsoft.
A arquitetura da aplicação é organizada em diversas camadas, cada uma com responsabilidades específicas:
- Application
- Domain
- Domain.Test
- Infra.IoC
- Infra.Data
- API
-
Application:
- Função: Esta camada contém a lógica de aplicação, incluindo os casos de uso e os serviços de aplicação.
- Componentes:
- DTOs (Data Transfer Objects): Objetos utilizados para transferência de dados entre as camadas.
- Mediators: Implementação do padrão Mediator para tratar as requisições e respostas.
- Services: Serviços específicos da aplicação que orquestram as operações de negócio.
-
Domain:
- Função: Esta camada representa o núcleo da aplicação, contendo as entidades de domínio e a lógica de negócio.
- Componentes:
- Entities: Entidades de domínio que representam os objetos de negócio.
- Interfaces: Contratos que definem os serviços e repositórios utilizados pela aplicação.
- Specifications: Regras de negócio e validações específicas do domínio.
-
Domain.Test:
- Função: Esta camada contém os testes unitários para a lógica de negócio na camada de domínio.
- Componentes:
- Unit Tests: Testes que validam o comportamento das entidades de domínio e das regras de negócio.
-
Infra.IoC:
- Função: Esta camada é responsável pela configuração da Injeção de Dependências (IoC - Inversion of Control).
- Componentes:
- Dependency Injection Configurations: Configurações para registrar e resolver dependências entre as camadas.
-
Infra.Data:
- Função: Esta camada contém a implementação dos repositórios e a configuração do banco de dados.
- Componentes:
- Repositories: Implementações dos repositórios utilizando Entity Framework para interagir com o Azure SQL Server.
- Migrations: Configurações e migrações do banco de dados para gerenciar a estrutura de dados.
-
API:
- Função: Esta camada expõe os endpoints da API para interação com a aplicação.
- Componentes:
- Controllers: Controladores que definem os endpoints da API utilizando ASP.NET Core.
- Swagger Configuration: Configurações para a documentação da API com Swagger.
- Middlewares: Incluem configurações para tratamento de erros, log e outras funcionalidades transversais.
+---------------------------------+
| API |
| (Controllers, Swagger) |
+---------------+-----------------+
|
v
+---------------+-----------------+
| Application |
| (DTOs, Mediators) |
+---------------+-----------------+
|
v
+---------------+-----------------+
| Domain |
| (Entities, Interfaces, Specs) |
+---------------+-----------------+
|
v
+---------------+-----------------+
| Infra.IoC |
| (Dependency Injection Config) |
+---------------+-----------------+
|
v
+---------------+-----------------+
| Infra.Data |
| (Repositories, Migrations) |
+---------------+-----------------+
|
v
+---------------+-----------------+
| Azure SQL Server |
| (Entity Framework) |
+---------------------------------+
Neste diagrama:
- API: Contém os controllers que definem os endpoints da API e a configuração do Swagger para documentação.
- Application: Contém a lógica de aplicação, incluindo os DTOs e os mediators que tratam as requisições.
- Domain: Contém as entidades de domínio, interfaces e especificações que implementam a lógica de negócio.
- Infra.IoC: Contém as configurações para injeção de dependências.
- Infra.Data: Contém as implementações dos repositórios e a configuração do Entity Framework para interação com o Azure SQL Server.
- Azure SQL Server: Banco de dados relacional utilizado para armazenar os dados da aplicação.
-
Documentação e Comentários XML na API:
- Tarefa 46: Adiciona comentários XML nos controladores e métodos da API, melhorando a documentação automática com Swagger e a compreensão do código.
-
Configuração de CORS:
- Tarefa 22: Configura CORS (Cross-Origin Resource Sharing) para permitir requisições de diferentes origens, facilitando a integração com frontend e outras APIs.
-
Paginação:
- Tarefa 23: Implementa paginação nos endpoints de leitura para melhorar a performance e usabilidade ao lidar com grandes volumes de dados.
-
Logging:
- Tarefa 24: Adiciona logging usando Serilog para registrar requisições e erros, facilitando a depuração e manutenção do sistema.
-
Caching:
- Tarefa 25: Implementa caching usando Redis para melhorar a performance das leituras frequentes.
-
Relatórios de Estoque Baixo:
- Tarefa 26: Adiciona um endpoint para gerar relatórios de produtos com estoque baixo, ajudando na gestão do estoque.
-
Atualização em Massa:
- Tarefa 27: Implementa um endpoint de atualização em massa para facilitar a administração de múltiplos produtos.
-
Exportação de Relatórios:
- Tarefa 28: Adiciona suporte à exportação de relatórios em formato CSV, permitindo a análise offline e integração com outras ferramentas.
-
Autenticação Multi-Fator (MFA):
- Tarefa 29: Implementa autenticação multi-fator para aumentar a segurança do sistema.
-
Reposição Automática de Estoque:
- Tarefa 30: Adiciona funcionalidade para repor automaticamente o estoque de produtos com baixo estoque, garantindo disponibilidade contínua.
-
Upload de Imagem de Produtos:
- Tarefa 31: Implementa a funcionalidade de upload de imagem para os produtos, melhorando a apresentação visual no frontend.
-
Notificações em Tempo Real:
- Tarefa 32: Implementa notificações em tempo real usando SignalR para alterações no estoque, proporcionando atualizações instantâneas aos usuários.
-
Auditoria de Mudanças no Estoque:
- Tarefa 33: Adiciona auditoria de mudanças no estoque para registrar e monitorar alterações, melhorando a rastreabilidade.
-
Sistema de Permissões Granulares:
- Tarefa 34: Implementa um sistema de permissões granulares para controlar o acesso a diferentes funcionalidades com base em roles.
-
Integração com API Externa para Cotação de Preços:
- Tarefa 35: Adiciona integração com uma API externa para obter cotações de preços dos produtos, auxiliando na precificação dinâmica.
-
Filtragem Avançada nos Relatórios:
- Tarefa 36: Implementa funcionalidade de filtragem avançada nos relatórios de produtos, facilitando a análise e a tomada de decisões.
-
Backup Automático do Banco de Dados:
- Tarefa 37: Adiciona funcionalidade de backup automático do banco de dados para garantir a segurança e a recuperação de dados.
-
Importação de Dados em Massa:
- Tarefa 38: Implementa a funcionalidade para importar dados de produtos em massa a partir de um arquivo CSV, agilizando a inserção de grandes volumes de dados.
-
Notificações por Email:
- Tarefa 39: Adiciona sistema de notificações por email para alertar sobre eventos importantes como baixo estoque.
-
Relatórios Gráficos:
- Tarefa 40: Implementa funcionalidade de geração de relatórios gráficos de estoque e vendas, facilitando a visualização de dados e tendências.
-
Avaliação de Produtos pelos Clientes:
- Tarefa 41: Adiciona funcionalidade para que os clientes possam avaliar os produtos, proporcionando feedback valioso.
-
Busca Avançada:
- Tarefa 42: Implementa busca avançada com suporte a filtros e ordenação, melhorando a experiência do usuário na busca de produtos.
-
Recomendação de Produtos:
- Tarefa 43: Adiciona sistema de recomendação de produtos baseado no histórico de compras dos clientes, incentivando vendas cruzadas.
-
Carrinho de Compras:
- Tarefa 44: Implementa funcionalidade de carrinho de compras para os clientes, facilitando a gestão de pedidos.
-
Checkout e Processamento de Pagamentos:
- Tarefa 45: Adiciona funcionalidade de checkout e integração com um serviço de processamento de pagamentos, completando o ciclo de vendas.
-
Recuperação de Senha:
- Tarefa 51: Adiciona uma funcionalidade para recuperação de senha via email, aumentando a segurança e usabilidade do sistema.
-
Autenticação com Redes Sociais:
- Tarefa 52: Implementa autenticação usando provedores de redes sociais como Google e Facebook, facilitando o login para os usuários.
-
Testes de Carga:
- Tarefa 53: Configura e executa testes de carga para avaliar o desempenho da API sob condições de alta carga.
-
Webhook:
- Tarefa 54: Implementa uma funcionalidade de webhook para notificar sistemas externos sobre eventos importantes.
-
Suporte a GraphQL:
- Tarefa 55: Adiciona suporte a GraphQL para consultas mais flexíveis e eficientes.
-
Análise de Sentimento:
- Tarefa 56: Adiciona uma funcionalidade para analisar o sentimento das avaliações dos produtos.
-
Integração com Serviço de Mensagens (SMS):
- Tarefa 57: Adiciona suporte para envio de mensagens SMS para notificações críticas.
-
Pesquisa de Texto Completo:
- Tarefa 58: Implementa uma funcionalidade de pesquisa de texto completo para melhorar a busca de produtos.
-
Sistema de Backup Incremental:
- Tarefa 59: Adiciona um sistema de backup incremental para reduzir o tempo e os recursos necessários para backups.
-
Agendamento de Tarefas:
- Tarefa 60: Implementa uma funcionalidade para agendamento de tarefas recorrentes.
-
Integração com ERP Externo:
- Tarefa 61: Adiciona integração com um sistema ERP externo para sincronizar dados de produtos e estoque.
-
Controle de Acesso Baseado em Claims:
- Tarefa 62: Adiciona um sistema de controle de acesso baseado em claims para gerenciar permissões detalhadas.
-
Comparação de Produtos:
- Tarefa 63: Implementa uma funcionalidade para permitir que os usuários comparem diferentes produtos.
-
Cache Distribuído com Redis:
- Tarefa 64: Adiciona suporte para cache distribuído usando Redis, melhorando a escalabilidade.
-
Recomendação Personalizada com Machine Learning:
- Tarefa 65: Adiciona uma funcionalidade de recomendação personalizada usando modelos de machine learning.
-
Monitoramento e Alertas com Prometheus e Grafana:
- Tarefa 66: Configura monitoramento e alertas usando Prometheus e Grafana para monitorar a saúde do sistema.
-
Sistema de Workflow:
- Tarefa 67: Adiciona um sistema de workflow para gerenciar processos de negócios complexos.
-
Análise Preditiva de Vendas:
- Tarefa 68: Adiciona uma funcionalidade para análise preditiva de vendas usando algoritmos de machine learning.
-
Gestão de Inventário Just-in-Time:
- Tarefa 69: Adiciona uma funcionalidade para gestão de inventário just-in-time, otimizando o estoque com base na demanda.
-
Sistema de Feedback com Análise de Sentimento:
- Tarefa 70: Adiciona um sistema de feedback para clientes com análise de sentimento para avaliar a satisfação.
-
Nova Classe e Repositório de Fornecedores:
- Tarefas 71-74: Introdução da classe
Supplier, interface de repositório, implementação do repositório e criação do controladorSuppliersController. Essas tarefas ajudam na gestão de fornecedores.
- Procedures e Endpoints em MySQL:
- Tarefas 75-76, 80-81, 85-86, 95-96: Criação de procedures para relatórios de vendas, estoque, compras e lucros, além de endpoints para chamar essas procedures. Isso facilita a geração de relatórios e análise de dados.
- Triggers em MySQL:
- Tarefa 77: Criação de triggers para atualização automática de estoque, melhorando a integridade e a automação dos dados.
- Dashboards de Vendas e Estoque:
- Tarefas 78, 83, 93: Implementação de endpoints que retornam dados para dashboards de vendas, estoque e compras, agregando informações relevantes para a visualização e análise.
- Funcionalidade de Busca Avançada:
- Tarefas 79, 84: Adição de funcionalidades de busca avançada para fornecedores e produtos, incluindo filtros.
- Notificações e Alertas:
- Tarefas 82, 94: Implementação de sistemas de notificações push e alertas personalizados, melhorando a comunicação com os usuários.
- Relatórios de Impostos e Sistema de Cálculo de Impostos:
- Tarefas 88-89: Adição de um sistema de cálculo de impostos e um endpoint para gerar relatórios de impostos, auxiliando na conformidade fiscal.
- Sistema de Descontos e Promoções:
- Tarefa 90: Implementação de um sistema para aplicar descontos e promoções, incentivando as vendas.
- Integração com Serviços Externos:
- Tarefas 91, 100, 111: Integração com serviços de entrega, CRM e pagamentos externos, expandindo a funcionalidade do sistema.
-
Moderação de Reviews:
- Tarefa 92: Implementação de um sistema para moderação de reviews dos produtos pelos clientes, mantendo a qualidade dos comentários.
-
Feedback via SMS e Sistema de Feedback Anônimo:
- Tarefas 97, 101: Adição de sistemas para coleta de feedback via SMS e feedback anônimo, proporcionando mais canais de comunicação com os clientes.
-
Análise de Tendências de Mercado:
- Tarefa 98: Implementação de um sistema para análise de tendências de mercado, auxiliando na tomada de decisões estratégicas.
-
Sistema de Devolução de Produtos:
- Tarefa 99: Adição de um sistema para gerenciar a devolução de produtos, melhorando a experiência do cliente.
-
Métricas de Performance e Monitoramento de Qualidade:
- Tarefas 102, 122: Implementação de sistemas para medir e monitorar a performance do sistema e a qualidade dos produtos.
-
Backup em Nuvem e Gestão de Recursos Financeiros:
- Tarefas 103, 123: Adição de um sistema para backup em nuvem e gerenciamento de recursos financeiros, garantindo a segurança dos dados e a saúde financeira.
-
Automação de Processos e Planejamento de Produção:
- Tarefas 121, 120: Implementação de sistemas para automação de processos empresariais e planejamento de produção, aumentando a eficiência operacional.
-
Rastreamento de Entregas e Gestão de Inventário em Tempo Real:
- Tarefas 112, 107: Adição de sistemas para rastrear as entregas dos pedidos dos clientes e gestão de inventário em tempo real, proporcionando atualizações instantâneas das quantidades de produtos.
-
Relatórios Personalizados e Gestão de Relacionamento com Clientes:
- Tarefas 108, 116: Implementação de sistemas para criação e visualização de relatórios personalizados e gerenciamento do relacionamento com clientes.
-
Análise de Competitividade e Gestão de Contratos:
- Tarefas 124, 117: Adição de sistemas para análise de competitividade e gestão de contratos com fornecedores e clientes.
-
Avaliação de Desempenho de Funcionários e Viabilidade de Projetos:
- Tarefas 118, 119: Implementação de sistemas para avaliação de desempenho dos funcionários e análise de viabilidade de novos projetos.