Este projeto é um ecossistema completo e robusto de gerenciamento de chamados de suporte técnico, desenvolvido em C# .NET 8.0. Ele adota os princípios da Clean Architecture, padrões de design modernos, injeção de dependências e comentários internos escritos em Português (sem acentuação) para garantir compatibilidade universal.
O SGPST Enterprise simula um ambiente de TI corporativo onde:
- Clientes ou o Gerador de Carga abrem chamados técnicos via API REST.
- A Web API autentica as requisições via JWT, persiste os dados no PostgreSQL e publica um evento assíncrono na fila de triagem do RabbitMQ.
- O Background Service Worker consome e processa as mensagens da fila.
- As Apresentações Web (MVC) e Desktop (WPF) fornecem painéis administrativos ricos para triagem, designação de técnicos, registro de deslocamentos físicos, faturamento operacional e cancelamento.
A solução está dividida em 9 projetos organizados segundo a Clean Architecture:
- SGPST.Domain: O núcleo de regras de domínio. Contém entidades (
SupportTicket,Client,Technician,ServicePrice,User,DisplacementLog), enums e interfaces de contrato. - SGPST.Application: Camada de casos de uso, lógica de negócios, DTOs compartilhados, mapeamentos e interfaces de serviço.
- SGPST.Infrastructure: Contém as implementações técnicas:
- Data (EF Core): Persistência relacional utilizando Entity Framework Core configurado para PostgreSQL.
- Messaging: Publicador de mensagens integrado ao RabbitMQ.
- SGPST.Presentation.Api: Web API RESTful que centraliza o processamento e expõe endpoints seguros para todas as aplicações clientes.
- SGPST.Presentation.Web: Painel administrativo Web desenvolvido em ASP.NET Core MVC com tema escuro e visual moderno.
- SGPST.Presentation.Desktop: Cliente administrativo desktop desenvolvido em WPF (Windows Presentation Foundation) com tema escuro premium e controle dinâmico de permissões.
- SGPST.Service.Worker: Serviço de segundo plano (.NET Worker) que atua como Consumer do RabbitMQ para notificações e eventos assíncronos.
- SGPST.Client.Generator: Aplicativo console de simulação de estresse que gera carga de chamados, autenticando-se via JWT e cadastrando dados fictícios automaticamente se necessário.
- SGPST.Tests: Suíte de testes automatizados com xUnit e Mocking para validação do domínio e regras de negócio.
- Linguagem e Runtime: C# com .NET 8.0 e WPF.
- Banco de Dados: PostgreSQL 16 (rodando em container Docker).
- Mapeador Relacional: Entity Framework Core (EF Core) com suporte a Migrations automáticas.
- Broker de Mensageria: RabbitMQ 3 com painel de gerenciamento habilitado.
- Segurança: Autenticação customizada via Tokens JWT (Bearer).
- Aesthetics (UI): Cores escuras curadas, gradientes neon, fontes limpas e efeitos visuais premium.
Toda a inicialização do ambiente e dos módulos foi simplificada usando scripts batch (.bat) na raiz do repositório.
- .NET 8.0 SDK instalado.
- Docker Desktop instalado e em execução.
Execute o script abaixo para subir os containers do PostgreSQL e do RabbitMQ em segundo plano:
start-environment.bat- RabbitMQ Management Dashboard: Acesse em
http://localhost:15672(Usuário:guest| Senha:guest). - Para parar a infraestrutura, execute:
stop-environment.bat.
Abra terminais separados para rodar os serviços na seguinte ordem recomendada:
- Web API (Core):
run-api.bat
- Background Consumer (Worker):
run-worker.bat
- Gerador de Carga de Testes (Para criar chamados automaticamente):
run-generator.bat
- Desktop Client (WPF):
run-desktop.bat
- Dashboard Web (MVC):
run-web.bat
Para testar as interfaces Web e Desktop, utilize qualquer uma das seguintes contas pré-configuradas:
- Administrador: Usuário
admin/ Senhaadmin123 - Atendente: Usuário
atendente/ Senhaatendente123 - Técnico: Usuário
tecnico/ Senhatecnico123 - Cliente: Usuário
cliente/ Senhacliente123
A suíte de testes unitários cobre as lógicas cruciais de negócio do Domínio e Casos de Uso. Execute via CLI de dentro do diretório src/:
dotnet testNa raiz da solução está localizada a pasta demo-sgpst. Esta pasta contém a versão anterior de referência do projeto didático, servindo como documentação base de diretrizes arquiteturais, exemplos de estruturação de código, arquivos originais de persistência e instruções de estilização. Ela é preservada para fins de consulta histórica e conformidade com as regras de design originais exigidas na construção do SGPST Enterprise.