# INT-019-01 — SegurancaController e presenter

| Campo | Valor |
|---|---|
| **status** | feita |
| **spec** | [`docs/specs/integracao/019-seguranca.md`](../specs/integracao/019-seguranca.md) §§2–3, §5 |
| **depende de** | [INT-018-02](INT-018-02-omni-empresas-front-reads-cms.md) (feita) |
| **primo** | hero/notícias do `017`; casal do `018`; redes = `002` |

## Objetivo

`GET /seguranca` devolve o DTO da landing (página + casal da Home + redes globais + 3 do Blog). O React ainda pode ignorar nesta task.

## Fazer

1. `SegurancaController` invokable no lugar da closure. Nome de rota igual.
2. `SegurancaPresenter::make()` — hero com `subtitleLines`; protege/fiqueAtento/dicas; boleto; denuncie; canais + social dos globais; `casal`; **sem** FAQ/WhatsApp/App/Agentes.
3. Testes em `tests/Feature/Integracao/`.

## Testes (PHPUnit)

- Seeder: eyebrow; titleLines; 2 subtitleLines; sem bullets; Protege 4; Fique atento 3; Dicas 5; boleto `/validador-boletos`; Denuncie; canais social vazio no seed global.
- Página + Home: `casal.compositionImage`.
- Página + globais com Facebook: 1 item em `canais.social`.
- Página + Blog: 3 artigos com `href` `/blog/…`.
- `seguranca/x.webp` no hero → `/storage/seguranca/x.webp`.
- Sem seed: `GET /seguranca` 200, coleções vazias.
- Sem keys `app`, `agentes`, `faq`, `whatsapp`.

## Fora

Ligar as seções React (task 02). Filament. Omni Empresas. Validador.
