# FASE 18 — Settings → Homepage

## Objective
Vincular a tabela `settings` à homepage (`welcome.blade.php`), tornando todo o texto do front-end editável via admin (Filament → Settings).

## Changes

### database/seeders/SettingSeeder.php
- Adicionadas ~40 novas settings no grupo `home` cobrindo todas as secções da homepage:
  - **Hero:** badge, title (HTML), subtitle, CTAs primário/secundário
  - **Localizador:** título, texto (com placeholder `:count`), help title/text
  - **Categorias:** badge, título, texto, link label
  - **Campanhas:** badge, título, texto
  - **Experiência:** badge, título, texto, 3 cards (title + text cada)
  - **Negócios:** badge, título, texto, 3 bullets, CTA, anos value/label (HTML)
  - **Rede:** badge, título, texto
  - **Notícias:** badge, título, texto
  - **CTA Final:** título, texto, botões primário/secundário

### app/Filament/Resources/SettingResource.php
- Grupo `home` já existia; adicionados grupos `company`, `seo`, `operational` ao `Select::make('group')`

### resources/views/welcome.blade.php
- `@php` block: 3 novas variáveis (`$homeSettings`, `$contactSettings`, `$seoSettings`) que carregam grupos completos via `Setting::group()`
- Meta tags `@section('title')` e `@section('description')` passaram a usar `$seoSettings['default_title']` e `$seoSettings['default_description']`
- Telefone e WhatsApp: número lido de `contact.phone`/`contact.whatsapp` e limpo com `preg_replace('/[^0-9]/', '', ...)` para uso em links `tel:` e `https://wa.me/`
- Todas as secções (Hero a CTA Final): texto hardcoded substituído por `$homeSettings['key'] ?? 'fallback'`
- Campos com HTML (hero_title, business_years_text) usam `{!! safe_html(...) !!}`
- **Removido `Cache::remember`** das queries de modelos Eloquent (categorias, campanhas, notícias, lojas, províncias): o driver de cache `database` serializava Collections e causava erro de unserialização com `incomplete object` no PHP 8.5. As queries são simples e indexadas (<10ms cada)

### app/Filament/Resources/StoreResource.php
- Removido `->tel()` do campo `phone` (validação de formato telefónico rejeitava números gerados pela factory)

## Verification
- `php artisan test --compact`: **68 testes, 209 assertions, 0 falhas**
- `php artisan migrate:fresh --seed`: ✅ 24 migrations, 12 seeders
- `npm run build`: ✅ 9.96s, sem warnings

## Settings Groups (Filament)

| Grupo | Descrição | Origem |
|---|---|---|
| `home` | Texto da homepage (8 secções) | FASE 18 |
| `company` | Dados institucionais | FASE 0 |
| `contact` | Contactos (phone, WhatsApp, email) | FASE 0 |
| `social` | Redes sociais | FASE 0 |
| `about` | Página Sobre | FASE 0 |
| `business` | B2B | FASE 0 |
| `seo` | Meta tags padrão | FASE 0 |
| `operational` | Moeda, IVA | FASE 0 |
| `general` | Outros | FASE 0 |
