You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Sistema completo de gerenciamento de pedidos construído com .NET 8
Arquitetura de microsserviços escalável capaz de processar milhares de pedidos por minuto
🚀 Como rodar
🐳 Opção 1: Docker (Recomendado)
# Clone o repositório
git clone <repository-url>cd OrderManagement
# Sobe tudo de uma vez - bancos, Redis, RabbitMQ e os serviços
docker-compose up -d
# Ou use o script PowerShell (Windows)
.\scripts\run-local.ps1
# Pra parar tudo
docker-compose down
# ou
.\scripts\stop-local.ps1
💻 Opção 2: Local (pra debug)
# 1. Suba a infraestrutura primeiro
docker-compose up -d postgres redis rabbitmq
# 2. Rode cada serviço em terminais separados
dotnet run --project src/ApiGateway
dotnet run --project src/OrderService
dotnet run --project src/PaymentService
dotnet run --project src/InventoryService
dotnet run --project src/NotificationService
🛠️ Opção 3: Scripts Úteis
# Build e testes
.\scripts\build.ps1
# Testa se a API tá funcionando
.\scripts\test-api.ps1
Health Checks: Disponível em /health em cada serviço
🏗️ Arquitetura do Sistema
graph TB
subgraph "Frontend"
WEB[🌐 Web App]
MOBILE[📱 Mobile App]
end
subgraph "API Gateway"
GATEWAY[🚪 YARP Gateway<br/>Rate Limiting<br/>Load Balancing]
end
subgraph "Microsserviços"
ORDER[📦 Order Service<br/>CRUD Pedidos<br/>Workflow Status]
PAYMENT[💳 Payment Service<br/>Processamento<br/>Stripe Mock]
INVENTORY[📋 Inventory Service<br/>Controle Estoque<br/>Reservas]
NOTIFICATION[📬 Notification Service<br/>Email & SMS<br/>SendGrid Mock]
end
subgraph "Infraestrutura"
POSTGRES[(🐘 PostgreSQL<br/>Database per Service)]
REDIS[(⚡ Redis<br/>Cache Distribuído)]
RABBIT[🐰 RabbitMQ<br/>Message Broker]
end
WEB --> GATEWAY
MOBILE --> GATEWAY
GATEWAY --> ORDER
GATEWAY --> PAYMENT
GATEWAY --> INVENTORY
GATEWAY --> NOTIFICATION
ORDER --> POSTGRES
PAYMENT --> POSTGRES
INVENTORY --> POSTGRES
ORDER --> REDIS
PAYMENT --> REDIS
INVENTORY --> REDIS
ORDER --> RABBIT
PAYMENT --> RABBIT
INVENTORY --> RABBIT
NOTIFICATION --> RABBIT
style GATEWAY fill:#00D4FF,stroke:#0099CC,color:#fff
style ORDER fill:#4CAF50,stroke:#45a049,color:#fff
style PAYMENT fill:#FF9800,stroke:#F57C00,color:#fff
style INVENTORY fill:#9C27B0,stroke:#7B1FA2,color:#fff
style NOTIFICATION fill:#F44336,stroke:#D32F2F,color:#fff
Loading
🔄 Fluxo de Pedido
sequenceDiagram
participant C as 👤 Cliente
participant G as 🚪 Gateway
participant O as 📦 Order Service
participant I as 📋 Inventory
participant P as 💳 Payment
participant N as 📬 Notification
C->>G: 1. Criar Pedido
G->>O: Validar & Criar
O->>I: Reservar Estoque
I-->>O: ✅ Estoque OK
O->>N: Pedido Criado
N->>C: 📧 Email Confirmação
O->>P: Processar Pagamento
P-->>O: ✅ Pagamento OK
O->>O: Status → Pago
O->>N: Pagamento Confirmado
N->>C: 📧 Pagamento Aprovado
O->>O: Status → Enviado
O->>N: Pedido Enviado
N->>C: 📱 SMS Rastreamento
O->>O: Status → Entregue
O->>N: Pedido Entregue
N->>C: 📧 Avaliação
Loading
🧪 Testes
# Roda todos os testes
dotnet test# Com coverage
dotnet test --collect:"XPlat Code Coverage"# Só os testes de unidade
dotnet test --filter Category=Unit
# Testa a API funcionando
.\scripts\test-api.ps1