# Histórico da Limpeza do Legado (Julho/2026)

Este documento registra o processo de eliminação completa de todo o código legado (V1)
que não era estritamente necessário para o funcionamento da V2.

## Motivação

O projeto original acumulava anos de código não utilizado, múltiplos controllers órfãos,
migrations antigas, seeds obsoletos, pacotes Composer nunca importados e assets frontend
de versões anteriores do Bootstrap/AdminLTE. A V2 foi construída dentro do mesmo repositório
e precisava de um ambiente limpo para operar sem arrastar o peso morto da V1.

## Escopo da Limpeza

### 1. Código Fonte (`app/`)

| Diretório | Ação | Arquivos |
|-----------|------|----------|
| `app/Http/Controllers/` | **Removido** | ~110 controllers legados |
| `app/Http/Requests/` | **Removido** | ~55 form requests |
| `app/Http/Resources/` | **Removido** | API resources |
| `app/Http/Presenters/` | **Removido** | 9 presenters |
| `app/Http/Filter/` | **Removido** | 2 filters |
| `app/Http/Traits/` | **Removido** | 6 traits |
| `app/Http/Views/Composers/` | **Removido** | View composers legados |
| `app/Services/` | **Removido** | ~35 services não usados pela V2 |
| `app/Repositories/` | **Removido** | ~40 repositories |
| `app/Exports/`, `app/Imports/` | **Removido** | 6 arquivos |
| `app/Rules/`, `app/Enum/` | **Removido** | 12 arquivos |
| `app/Console/Commands/` | **Removido** | 7 commands legados |
| `app/Models/` | **Removido** | ~20 models (exceto `ImportExcelLog` — migrado para V2) |
| `app/Observers/`, `app/Admin/` | **Removido** | 2 arquivos |
| `app/Library/` | **Removido** | 3 subdiretórios (cópias de serviços V2) |
| `app/Helpers/functions.php` | **Removido** | Nenhuma função usada pela V2 |
| `app/Library/Helper/appHelpers.php` | **Removido** | `is_v2()` não é mais chamado |

#### Preservado (essencial para V2)

```
app/
├── Console/Kernel.php
├── Exceptions/Handler.php
├── Http/
│   ├── Kernel.php
│   └── Middleware/ (TrimStrings, TrustProxies, EncryptCookies, VerifyCsrfToken)
│   └── Model/
│       └── Admin/
│           ├── User.php   → App\Admin\User (Sentinel auth)
│           └── Role.php   → App\Admin\Role (dependência de User)
├── Providers/
│   ├── AppServiceProvider.php
│   ├── AuthServiceProvider.php
│   └── EventServiceProvider.php
```

### 2. Rotas e Views

| Diretório | Ação | Arquivos |
|-----------|------|----------|
| `routes/` | **Removido** | web.php, api.php, basepro.php, channels.php, console.php, breadcrumbs.php |
| `resources/views/` | **Removido** | ~430 blades legados |
| `resources/lang/` | **Removido** | 17 arquivos |
| `resources/assets/` | **Removido** | 5 assets |

A V2 possui seu próprio sistema de rotas em `V2/Core/Routes/` e layouts em `V2/layouts/`.

### 3. Banco de Dados

| Diretório | Ação | Arquivos |
|-----------|------|----------|
| `database/migrations/` | **Removido** | 423 migrations legadas |
| `database/seeds/` | **Removido** | 103 seeds (substituído por `DatabaseSeeder.php` mínimo) |
| `database/factories/` | **Removido** | 4 factories |

As 23 migrações V2 em `V2/*/Migrations/` são as únicas que gerenciam o schema atual.

### 4. Assets Públicos

| Diretório | Ação | Tamanho |
|-----------|------|---------|
| `public/assets/vendor/` | **Reduzido** de ~30 MB para ~900 KB | Bootstrap5, Bootstrap Icons, jQuery |
| `public/vendor/fontawesome-6.7.2/` | **Removido** | ~29 MB (V2 usa Bootstrap Icons) |
| `public/vendor/nunito_sans/` | **Removido** | ~1.1 MB |
| `public/vendor/laravel-filemanager/` | **Removido** | ~1 MB (orphan) |
| `public/assets/css/` | **Reduzido** | Só `cms-layout.css` |
| `public/assets/js/` | **Reduzido** | Só `cms-alerts.js` |
| `public/assets/fontes/` | **Reduzido** | Só OpenDyslexic (acessibilidade) |
| `public/assets/images/` | **Reduzido** | Removido (substituído por ícone Bootstrap) |

**Preservado:** `public/vendor/pdfjs/` (assinatura digital), `public/favicon.ico`.

### 5. Configurações

| Arquivo | Ação |
|---------|------|
| `config/activitylog.php` | **Recriado** (mínimo) |
| `config/adminlte.php` | Removido |
| `config/breadcrumbs.php` | Removido |
| `config/broadcasting.php` | Removido |
| `config/cartalyst.sentinel.php` | Removido (usa defaults) |
| `config/datatables.php` | Removido |
| `config/debugbar.php` | Removido |
| `config/dompdf.php` | Removido |
| `config/excel.php` | Removido |
| `config/extensions.php` | Removido |
| `config/image.php` | Removido |
| `config/recaptcha.php` | Removido |
| `config/social.php` | Removido |
| `config/tinker.php` | Removido |
| `config/toaster.php` | Removido |
| `config/trustedproxy.php` | Removido |
| `config/verbs.php` | Removido |
| `config/contantType.php` | Removido |
| `config/v2.php` | Preservado |
| `config.json` (raiz) | Removido (migrado para `.env`) |

### 6. Pacotes Composer

| Pacote | Ação | Motivo |
|--------|------|--------|
| `davejamesmiller/laravel-breadcrumbs` | Removido | Não usado |
| `barryvdh/laravel-dompdf` / `dompdf/dompdf` | Removido | Não usado |
| `blueimp/jquery-file-upload` | Removido | Legado |
| `canducci/zipcode` | Removido | Não usado |
| `greggilbert/recaptcha` | Removido | Não usado |
| `guzzlehttp/guzzle` | Removido | Não usado |
| `intervention/image` | Removido | Não usado |
| `jadjoubran/laravel-angular` | Removido | Legado |
| `jeroennoten/laravel-adminlte` | Removido | V2 não usa AdminLTE |
| `laracasts/presenter` | Removido | PresentableTrait removido dos models |
| `laralabs/toaster` | Removido | Não usado |
| `laravelcollective/html` | Removido | Não usado |
| `laravellegends/pt-br-validator` | Removido | Não usado |
| `phaza/laravel-postgis` | Removido | Não usado |
| `rosell-dk/webp-convert` | Removido | Não usado |
| `setasign/fpdi` | Removido | Não usado |
| `simplesoftwareio/simple-qrcode` | Removido | Não usado |
| `tecnickcom/tcpdf` | Removido | Não usado |
| `yajra/laravel-datatables` | Removido | Não usado |
| `zircote/swagger-php` | Removido | Não usado |
| `barryvdh/laravel-debugbar` | Removido | Dev apenas |
| `filp/whoops` | Removido | Dev apenas |
| `fzaninotto/faker` | Removido | Dev apenas |
| **`laravel/tinker`** | Movido para `require-dev` | Só uso em `artisan tinker` |

**Preservados:** `cartalyst/sentinel`, `laracasts/flash`, `laravel/framework`, `maatwebsite/excel`,
`spatie/laravel-activitylog`, `swiftmailer/swiftmailer`, `fideloper/proxy`, `mockery/mockery`, `phpunit/phpunit`.

### 7. Migrações Recriadas

Tabelas do Sentinel que eram criadas pelas migrations legadas (deletadas) e foram recriadas na V2:

| Migration | Tabelas |
|-----------|---------|
| `2026_06_23_100000_create_sentinel_tables` | `persistences`, `activations`, `reminders`, `throttle`, `role_users`, `roles` |
| `2026_06_23_110000_create_users_table` | `users` |
| `2026_06_14_100000_create_activity_log_table` | `activity_log` |

## Tabela Comparativa: Antes vs Depois

| Categoria | Antes | Depois |
|-----------|-------|--------|
| **app/** | ~200 arquivos | 12 arquivos essenciais |
| **V2/** | Integral | Preservado (único código de aplicação) |
| **config/** | 29 arquivos | 11 essenciais |
| **database/** | 423 migrations + 103 seeds | 0 legados (23 V2) |
| **routes/** | 6 arquivos | 0 (V2 gerencia próprias) |
| **resources/** | 430+ views | 0 (V2 tem próprias) |
| **public/assets/vendor** | 250+ arquivos (~30 MB) | 6 arquivos (~900 KB) |
| **public/vendor/** | 2100+ arquivos (~31 MB) | 2 pdfjs (~1.3 MB) |
| **composer.json require** | 23 pacotes | 6 produção + 3 dev |
| **storage/debugbar/** | 30 MB | Removido |
| **storage/logs/\*.bak** | 2.5 MB | Removido |

## Testes

- **154/187 testes V2 passam** (82%)
- 18 erros pré-existentes (módulo exemplo com namespace divergente)
- 1 falha pré-existente
- **81 testes core** (Storage, Gallery, ActivityLogger, SEO, PermissionService) **100% verdes**

## Comandos para Reproduzir o Ambiente

```bash
# Destruir e recriar banco do zero
php artisan migrate:fresh --seed

# Verificar estado das migrations
php artisan migrate:status

# Rodar suite de testes V2
vendor/bin/phpunit --testsuite "V2 Unit"

# Se novo desenvolvedor clonar o repositório
composer install --no-dev    # ou sem --no-dev se quiser dev tools
cp .env.example .env
php artisan key:generate
php artisan migrate:fresh --seed
```

---

*Documentado em Julho de 2026 — Limpeza executada por agente opencode.*
