# Arquitetura - v2.0

## Opção Escolhida: A (API Thin Layer)

A API v2.0 será uma camada fina sobre o código existente:

- **Controllers da API:** Recebem request, chamam Service, retornam JSON
- **Services:** Orquestram e chamam os DAOs existentes em `src/`
- **DAOs:** Continuam em `src/` sem alteração

## Diagrama de Fluxo

```mermaid
flowchart LR
    subgraph frontend [Frontend Next.js]
        UI[Componentes]
        API_Client[Cliente HTTP]
    end
    
    subgraph api [API v2.0]
        Controller[Controller]
        Service[Service]
    end
    
    subgraph legado [Código Legado]
        DAO[DAOs]
        BolaoController[BolaoController]
        ConcursoController[ConcursoController]
    end
    
    UI --> API_Client
    API_Client -->|"GET/POST /api/v2/..."| Controller
    Controller --> Service
    Service --> DAO
    Service --> BolaoController
    Service --> ConcursoController
```

## Estrutura da API (Opção A)

```
api/
├── public/
│   └── index.php              # Entry point (router)
├── src/
│   ├── Http/
│   │   ├── Router.php
│   │   ├── Request.php
│   │   ├── Response.php
│   │   └── Middleware/
│   ├── Controller/
│   └── Service/
└── config/
```

## Opção B (Futura): Clean Architecture

Para evolução posterior, quando v1.0 for desativada:

- **Domain:** Entidades, regras de negócio
- **Application:** Use cases
- **Infrastructure:** Implementações (adaptadores para DAOs)
- **Presentation:** Controllers HTTP

**Estimativa:** 5-7 meses (1 dev) para migração completa.

## Princípios SOLID (aplicados na Opção A)

- **S:** Um Service por responsabilidade
- **O:** Extender regras por nova loteria sem alterar código existente
- **L/I/D:** Interfaces e injeção de dependência (evolução gradual)
