feat: otimização de performance e ajustes finais
This commit is contained in:
@@ -0,0 +1,174 @@
|
||||
# 🇬🇼 Localização para Guiné-Bissau
|
||||
|
||||
## ✅ Configuração Completa
|
||||
|
||||
O frontend está totalmente configurado para Guiné-Bissau, compatível com o backend.
|
||||
|
||||
## 💰 Moeda: XOF (Franco CFA)
|
||||
|
||||
### Configuração
|
||||
- **Código ISO**: XOF
|
||||
- **Símbolo**: FCFA
|
||||
- **Locale**: pt-GW
|
||||
- **Formato**: `1 000 FCFA` ou `1,0K FCFA` (compacto)
|
||||
|
||||
### Função de Formatação
|
||||
|
||||
```typescript
|
||||
import { formatCurrency } from '@/utils/locale';
|
||||
|
||||
// Formato padrão
|
||||
formatCurrency(1000000); // "1 000 000 FCFA"
|
||||
|
||||
// Formato compacto
|
||||
formatCurrency(1000000, { compact: true }); // "1,0M FCFA"
|
||||
|
||||
// Com decimais
|
||||
formatCurrency(1000.50, { decimals: 2 }); // "1 000,50 FCFA"
|
||||
```
|
||||
|
||||
### Locais Corrigidos
|
||||
|
||||
✅ **Dashboard.tsx**
|
||||
- Antes: `currency: 'AOA'` (Angola)
|
||||
- Agora: Usa `formatCurrency()` com XOF
|
||||
|
||||
✅ **AgentsPage.tsx**
|
||||
- Usa `formatNumber()` para estatísticas
|
||||
- Usa `formatCurrency()` para valores monetários
|
||||
|
||||
✅ **Todos os componentes**
|
||||
- Usam funções de `@/utils/locale`
|
||||
|
||||
## 📅 Datas: DD/MM/YYYY
|
||||
|
||||
### Configuração
|
||||
- **Formato**: DD/MM/YYYY
|
||||
- **Timezone**: Africa/Bissau
|
||||
- **Locale**: pt-GW
|
||||
|
||||
### Funções
|
||||
|
||||
```typescript
|
||||
import { formatDate, formatDateTime, formatLocalDate } from '@/utils/locale';
|
||||
|
||||
// Formata Date object
|
||||
formatDate(new Date()); // "28/12/2024"
|
||||
|
||||
// Formata data e hora
|
||||
formatDateTime(new Date()); // "28/12/2024 14:30"
|
||||
|
||||
// Converte LocalDate do backend (YYYY-MM-DD) para exibição
|
||||
formatLocalDate('2024-12-28'); // "28/12/2024"
|
||||
```
|
||||
|
||||
## 📞 Telefone: +245
|
||||
|
||||
### Formato
|
||||
- **Código do país**: +245
|
||||
- **Formato**: +245 XXX XXX XXX
|
||||
|
||||
### Função
|
||||
|
||||
```typescript
|
||||
import { formatPhone } from '@/utils/locale';
|
||||
|
||||
formatPhone('955123456'); // "+245 955 123 456"
|
||||
formatPhone('245955123456'); // "+245 955 123 456"
|
||||
```
|
||||
|
||||
## 🔢 Números
|
||||
|
||||
### Formatação
|
||||
- **Separador de milhares**: Espaço (ex: `1 000`)
|
||||
- **Separador decimal**: Vírgula (ex: `1 000,50`)
|
||||
- **Locale**: pt-GW
|
||||
|
||||
### Função
|
||||
|
||||
```typescript
|
||||
import { formatNumber } from '@/utils/locale';
|
||||
|
||||
formatNumber(1000); // "1 000"
|
||||
formatNumber(1000.50, 2); // "1 000,50"
|
||||
```
|
||||
|
||||
## 🏦 Bancos (Mocks Atualizados)
|
||||
|
||||
Os mocks foram atualizados com bancos da Guiné-Bissau:
|
||||
|
||||
- Banco Central da Guiné-Bissau (BCGB)
|
||||
- Banco da África Ocidental (BAO)
|
||||
- Ecobank Guiné-Bissau
|
||||
- Banco Atlântico Guiné-Bissau
|
||||
- Banco Internacional da Guiné-Bissau
|
||||
|
||||
## 📋 Checklist de Compatibilidade
|
||||
|
||||
- [x] Moeda: XOF (Franco CFA) em todo o sistema
|
||||
- [x] Datas: DD/MM/YYYY (formato Guiné-Bissau)
|
||||
- [x] Timezone: Africa/Bissau
|
||||
- [x] Locale: pt-GW
|
||||
- [x] Telefone: +245
|
||||
- [x] Números: Formato pt-GW (espaço para milhares, vírgula para decimais)
|
||||
- [x] Dashboard: Usa formatCurrency() com XOF
|
||||
- [x] AgentsPage: Usa formatNumber() e formatCurrency()
|
||||
- [x] Mocks: Bancos da Guiné-Bissau
|
||||
- [x] Backend: Compatível (application.yml configurado)
|
||||
|
||||
## 🔧 Arquivos Modificados
|
||||
|
||||
1. **src/utils/locale.ts**
|
||||
- Funções de formatação para Guiné-Bissau
|
||||
- formatCurrency() com suporte a XOF
|
||||
- formatNumber() com locale pt-GW
|
||||
- formatDate() e formatDateTime()
|
||||
- formatPhone() com código +245
|
||||
|
||||
2. **src/pages/Dashboard.tsx**
|
||||
- Removido formatação hardcoded (pt-AO, AOA)
|
||||
- Usa formatCurrency() e formatNumber() de locale.ts
|
||||
|
||||
3. **src/modules/rh/pages/AgentsPage.tsx**
|
||||
- Usa formatNumber() para estatísticas
|
||||
- Usa formatCurrency() para valores monetários
|
||||
|
||||
4. **src/mocks/data.ts**
|
||||
- Bancos atualizados para Guiné-Bissau
|
||||
|
||||
## 🎯 Uso Recomendado
|
||||
|
||||
**SEMPRE use as funções de `@/utils/locale`:**
|
||||
|
||||
```typescript
|
||||
import {
|
||||
formatCurrency,
|
||||
formatNumber,
|
||||
formatDate,
|
||||
formatDateTime,
|
||||
formatLocalDate,
|
||||
formatPhone
|
||||
} from '@/utils/locale';
|
||||
|
||||
// ✅ CORRETO
|
||||
const price = formatCurrency(1000); // "1 000 FCFA"
|
||||
const date = formatLocalDate('2024-12-28'); // "28/12/2024"
|
||||
|
||||
// ❌ ERRADO - Não use
|
||||
const price = new Intl.NumberFormat('pt-AO', { currency: 'AOA' }); // Angola!
|
||||
const price = value.toLocaleString(); // Locale padrão do navegador
|
||||
```
|
||||
|
||||
## 📝 Notas Importantes
|
||||
|
||||
1. **XOF não tem subunidades**: O Franco CFA não tem centavos, então `decimals: 0` é o padrão
|
||||
2. **Formato de número**: pt-GW usa espaço para milhares e vírgula para decimais
|
||||
3. **Timezone**: Sempre use `Africa/Bissau` para datas
|
||||
4. **Backend**: Envia datas como `YYYY-MM-DD` (LocalDate), frontend exibe como `DD/MM/YYYY`
|
||||
|
||||
---
|
||||
|
||||
**Status**: ✅ 100% Configurado para Guiné-Bissau
|
||||
**Moeda**: ✅ XOF (Franco CFA)
|
||||
**Última atualização**: Dezembro 2024
|
||||
|
||||
Reference in New Issue
Block a user