Guia de Configuração e Constantes¶
Este guia explica como configurar a aplicação MeAjudaAi para diferentes ambientes e como usar o sistema de constantes centralizadas.
📋 Visão Geral da Configuração por Ambiente¶
A aplicação suporta configuração específica para dois ambientes principais: - Development - Desenvolvimento local - Production - Ambiente de produção
Templates Disponíveis¶
1. Development (appsettings.Development.template.json)¶
- Propósito: Desenvolvimento local e testes
- Características:
- Logging detalhado (Debug level)
- CORS permissivo para frontend local
- Keycloak sem HTTPS (desenvolvimento)
- Rate limiting relaxado
- Swagger UI habilitado
- Messaging in-memory
2. Production (appsettings.Production.template.json)¶
- Propósito: Ambiente de produção
- Características:
- Logging mínimo (Warning level)
- CORS muito restrito
- Keycloak com configurações de segurança máximas
- Rate limiting conservador
- Swagger UI desabilitado
- Todos os recursos de segurança habilitados
3. Dead Letter Queue Templates¶
appsettings.Development.deadletter.json: Configuração de dead letter queue para desenvolvimento com RabbitMQ.appsettings.Production.deadletter.json: Configuração de dead letter queue para produção com ServiceBus.
4. Authorization Example (appsettings.authorization.example.json)¶
- Propósito: Template completo de configuração de autorização.
Como Usar os Templates¶
Passo 1: Copiar o Template¶
# Para desenvolvimento
cp docs/configuration-templates/appsettings.Development.template.json src/Bootstrapper/MeAjudaAi.ApiService/appsettings.Development.json
# Para produção
cp docs/configuration-templates/appsettings.Production.template.json src/Bootstrapper/MeAjudaAi.ApiService/appsettings.Production.json
Passo 2: Configurar Variáveis de Ambiente (Produção)¶
export DATABASE_CONNECTION_STRING="Host=prod-db.meajudaai.com;..."
export REDIS_CONNECTION_STRING="prod-redis.meajudaai.com:6380,ssl=True"
export KEYCLOAK_BASE_URL="https://auth.meajudaai.com"
# ... e outras variáveis de ambiente
🔧 Constantes Centralizadas¶
O projeto MeAjudaAi utiliza um sistema de constantes centralizadas para melhor organização e manutenção.
Estrutura das Constantes¶
Todas as constantes estão localizadas em src/Shared/MeAjudai.Shared/Constants/:
Constants/
├── ApiEndpoints.cs # Endpoints da API por módulo
├── AuthConstants.cs # Constantes de autorização
├── ValidationConstants.cs # Limites de validação
└── ValidationMessages.cs # Mensagens de erro padronizadas
Como Usar¶
1. ApiEndpoints - Endpoints da API¶
// Em vez de: app.MapGet("/users/{id:guid}", ...)
app.MapGet(ApiEndpoints.Users.GetById, GetUserAsync)
2. AuthConstants - Autorização¶
// Em vez de: .RequireAuthorization("AdminOnly")
.RequireAuthorization(AuthConstants.Policies.AdminOnly)
3. ValidationConstants - Limites de Validação¶
// Em vez de: [StringLength(50, MinimumLength = 2)]
[StringLength(ValidationConstants.UserLimits.MaxFirstNameLength,
MinimumLength = ValidationConstants.UserLimits.MinFirstNameLength)]
4. ValidationMessages - Mensagens de Erro¶
Benefícios¶
- Consistência: Evita "números mágicos" e strings duplicadas.
- Manutenibilidade: Um único lugar para atualizar valores.
- Legibilidade: Código mais limpo e semântico.
📝 Diretrizes de Uso¶
- Use sempre as constantes em vez de valores hardcoded.
- Mantenha as constantes organizadas por contexto.
- Documente novas constantes com XML comments.
- Não duplique valores em locais diferentes.