# Trasfega - Sistema de Consultas Contábeis

O **Trasfega** é um sistema modular e escalável desenvolvido em **Laravel 11.9** e **PHP 8.2**, projetado para realizar consultas centralizadas de dados contábeis, como CPF, CNPJ, Consulta de notas etc. Ele oferece suporte à integração com múltiplas fontes de dados externas e utiliza técnicas de cache para otimizar o desempenho.

## Estrutura do Projeto

O projeto segue uma abordagem modular, com foco na flexibilidade e escalabilidade.

### Fluxo de Consulta

1. **Requisição à API**:
    - As consultas são feitas por rotas genéricas:
      ```
      GET /fonte-dados/{fontId}/{entity}/{value?}
      ```
      Onde:
        - `fontId`: Identifica a fonte de dados (ex.: audittoCpf, receitaCnpj, Unecont).
        - `entity`: Tipo de dado a ser consultado (ex.: cpf ou cnpj, documentos).
        - `value`: O valor do dado a ser consultado (ex.: um número de CPF ou CNPJ).

2. **Controlador Principal**:
    - O `DataSourceController` recebe a requisição e identifica:
        - A fonte de dados solicitada (`fontId`).
        - O tipo de entidade a ser consultada (`entity`).
        - O valor fornecido (`value`), se aplicável.
    - Após a validação, o controlador direciona a consulta para o serviço correspondente.

3. **Serviços de Integração**:
    - Cada fonte de dados e tipo de entidade possui um serviço dedicado. Exemplos:
        - `ReceitaCnpj`: Lida com consultas de CNPJ na Receita Federal.
        - `SerproCpf`: Realiza consultas de CPF no Serpro.
        - `AudittoUni`: Realiza consultas de documentos na unecont.
    - Esses serviços encapsulam a lógica de comunicação com APIs externas e processam os resultados.

4. **Resposta**:
    - O sistema retorna os dados no formato JSON, com as informações solicitadas.

## Principais Recursos

- **Modularidade**:
    - Cada fonte de dados e entidade é isolada em módulos independentes, facilitando a manutenção e expansão do sistema.

- **Flexibilidade**:
    - O sistema suporta consultas a diferentes fontes de dados (APIs externas, scraping, etc.) sem necessidade de reestruturação.

- **Escalabilidade**:
    - Novos endpoints e fontes de dados podem ser adicionados facilmente.

- **Caching**:
    - Reduz consultas redundantes às fontes de dados externas, melhorando o desempenho.

## Configuração do Projeto

### Dependências

- **Laravel 11.9**
- **PHP 8.2**
- Banco de dados compatível (MySQL ou PostgreSQL).

### Instalação

1. Clone o repositório:
   ```bash
   git clone https://gitlab.auditto.com.br/auditto/trasfega
   cd trasfega
```
2. Instale as dependências do projeto:
```bash
composer install
npm install
```
3. Configure o arquivo .env com as informações do seu ambiente:
```bash
APP_NAME=Trasfega  
APP_ENV=local  
APP_KEY=base64:chave-de-seguranca  
DB_CONNECTION=mysql  
DB_HOST=127.0.0.1  
DB_PORT=3306  
DB_DATABASE=trasfega  
DB_USERNAME=seu-usuario  
DB_PASSWORD=sua-senha  
```
4. Gere a chave da aplicação:
```bash
php artisan key:generate
```
5. Execute as migrações do banco de dados:
```bash
php artisan migrate
```

6. Inicie o servidor de desenvolvimento:
```bash
php artisan serve
```
