# 🛰️ Relatório de Conexão API - Integra Finance

Este documento descreve a arquitetura de comunicação entre o Front-end (React) e o Back-end, detalhando como as conexões foram construídas e como proceder para conectar o backend em segundos.

## 🏗️ Arquitetura de Comunicação (DAL)

A camada de acesso a dados (Data Access Layer) foi projetada para ser **híbrida (API + Mock)**. Isso permite que o desenvolvimento continue mesmo sem o backend estar rodando, garantindo alta produtividade.

### 1. Instância Central (`src/services/api.js`)
Utilizamos o **Axios** para gerenciar as requisições. 
- **BaseURL**: Configurável via variável de ambiente.
- **Interceptors**: Gerenciam automaticamente a inclusão de tokens de autenticação (`x-access-token`) em todas as chamadas.

### 2. Utilitário de Decisão (`src/services/serviceUtils.js`)
Criamos um helper chamado `handleRequest`. Ele é o "cérebro" que decide se a aplicação deve buscar dados do **Mock** ou da **API Real** com base em uma única flag global.

---

## ⚡ Como conectar o Backend em Segundos

Para conectar o back, você não precisa alterar o código de nenhum componente ou tela. Basta seguir estes 3 passos:

### Passo 1: Configurar o arquivo `.env`
Crie um arquivo chamado `.env` na raiz do projeto (use o `.env.example` como base):

```env
VITE_API_URL=http://sua-url-do-backend:5000
VITE_USE_MOCK=false
```

> [!IMPORTANT]
> Ao mudar `VITE_USE_MOCK` para `false`, **todos** os serviços do sistema passarão a apontar para o seu backend instantaneamente.

### Passo 2: Padrão de Implementação de Serviço
Ao criar uma nova funcionalidade, siga este padrão em `src/services/[feature]Service.js`:

```javascript
import api from './api';
import { handleRequest, simulateLatency } from './serviceUtils';

export const meuNovoService = {
  getDados: () => handleRequest({
    mockFn: () => simulateLatency({ nome: "Dado Mockado" }), // O que retorna no modo Mock
    apiFn: () => api.get('/api/meu-endpoint')             // O que retorna no modo Real
  }),
};
```

---

## 📋 Resumo Técnico para Desenvolvedores

| Recurso | Localização | Função |
| :--- | :--- | :--- |
| **Instância Axios** | `src/services/api.js` | Configuração de URL e Tokens. |
| **Logic Wrapper** | `src/services/serviceUtils.js` | Alternância Mock/Real e Simulação de Latência. |
| **Mocks** | `src/services/mocks/` | Objetos JSON com dados de teste. |
| **Serviços** | `src/services/*.js` | Definição dos endpoints e contratos. |

---

## ✅ Checklist de Conexão Rápida

1. [ ] Definir `VITE_API_URL` no `.env`.
2. [ ] Mudar `VITE_USE_MOCK` para `false`.
3. [ ] Reiniciar o servidor de desenvolvimento (`npm run dev`).

**Pronto!** O sistema agora consumirá dados reais do seu banco de dados.
