feat: otimização de performance e ajustes finais

This commit is contained in:
Idrissa Banora
2026-05-18 10:49:32 +00:00
commit 52a7c4f9cf
579 changed files with 156489 additions and 0 deletions
@@ -0,0 +1,130 @@
# Configurações para Guiné-Bissau
Este documento descreve as configurações específicas implementadas para garantir compatibilidade com a Guiné-Bissau.
## Informações do País
- **Código do País**: GW (ISO 3166-1 alpha-2)
- **Nome**: Guiné-Bissau
- **Moeda**: XOF (Franco CFA da África Ocidental)
- **Símbolo da Moeda**: FCFA
- **Timezone**: Africa/Bissau (UTC+0)
- **Locale**: pt_GW (Português da Guiné-Bissau)
- **Código Telefônico**: +245
## Configurações Implementadas
### 1. Timezone
O sistema está configurado para usar o timezone `Africa/Bissau` (UTC+0) em todas as operações:
- **application.yml**: `spring.jackson.time-zone: Africa/Bissau`
- **SigefpApplication**: Configuração do timezone padrão na inicialização
- **LocaleConfig**: Bean para garantir timezone correto
### 2. Locale e Idioma
- **Locale padrão**: `pt_GW` (Português da Guiné-Bissau)
- **Fallback**: `pt` (Português genérico) se pt_GW não estiver disponível
- Configurado em `LocaleConfig` e `JacksonConfig`
### 3. Formatação de Datas
Formatos padrão implementados:
- **Data**: `dd/MM/yyyy` (ex: 25/12/2024)
- **Data e Hora**: `dd/MM/yyyy HH:mm` (ex: 25/12/2024 14:30)
- **Data e Hora Completo**: `dd/MM/yyyy HH:mm:ss` (ex: 25/12/2024 14:30:45)
### 4. Formatação de Moeda
- **Código**: XOF
- **Símbolo**: FCFA
- **Formato**: Números com separador de milhares (ponto) e decimal (vírgula)
- **Exemplo**: `1.234,56 FCFA`
### 5. Formatação de Números
- **Separador de milhares**: Ponto (.)
- **Separador decimal**: Vírgula (,)
- **Exemplo**: `1.234,56`
### 6. Utilitários
A classe `GuineaBissauConfig` fornece métodos utilitários para:
- `formatCurrency(BigDecimal)`: Formata valores monetários
- `formatNumber(BigDecimal)`: Formata números decimais
- `formatInteger(Long)`: Formata números inteiros
- `getDateFormatter()`: Retorna formatter para datas
- `getDateTimeFormatter()`: Retorna formatter para data/hora
## Uso
### No Backend (Java)
```java
import br.gov.sigefp.common.util.GuineaBissauConfig;
import java.math.BigDecimal;
// Formatar moeda
BigDecimal valor = new BigDecimal("1234.56");
String formatado = GuineaBissauConfig.formatCurrency(valor);
// Resultado: "1.234,56 FCFA"
// Formatar número
String numero = GuineaBissauConfig.formatNumber(valor);
// Resultado: "1.234,56"
// Formatar data
LocalDate data = LocalDate.now();
String dataFormatada = data.format(GuineaBissauConfig.getDateFormatter());
// Resultado: "25/12/2024"
```
### Configuração de Perfil
Para usar o perfil específico da Guiné-Bissau:
```bash
mvn spring-boot:run -Dspring-boot.run.profiles=gw
```
Ou definir a variável de ambiente:
```bash
export SPRING_PROFILES_ACTIVE=gw
```
## Arquivos de Configuração
- `application.yml`: Configuração base com timezone e locale
- `application-gw.yml`: Perfil específico para Guiné-Bissau
- `LocaleConfig.java`: Configuração de locale e timezone
- `JacksonConfig.java`: Configuração de serialização JSON
- `WebConfig.java`: Configuração de formatação web
- `GuineaBissauConfig.java`: Utilitários e constantes
## Validações
O sistema valida automaticamente:
- Timezone em todas as operações de data/hora
- Locale em formatação de números e moedas
- Formato de datas em serialização JSON
- Formato de números em serialização JSON
## Notas Importantes
1. **PostgreSQL**: Certifique-se de que o PostgreSQL está configurado com timezone `Africa/Bissau`:
```sql
SET timezone = 'Africa/Bissau';
```
2. **JVM**: O timezone da JVM é configurado automaticamente na inicialização da aplicação.
3. **Frontend**: O frontend deve usar as mesmas configurações de locale e timezone para consistência.
4. **Moeda**: XOF (Franco CFA) é a moeda oficial da Guiné-Bissau e é compartilhada com outros países da África Ocidental.