# INT-021-01 — FaqController e presenter

| Campo | Valor |
|---|---|
| **status** | feita |
| **spec** | [`docs/specs/integracao/021-faq.md`](../specs/integracao/021-faq.md) §§2–3, §5 |
| **depende de** | [INT-020-02](INT-020-02-atendimento-front-reads-cms.md) (feita) |
| **primo** | hero slim do `020`; cards da Home `010`; Equipe/Ligue do `020` |

## Objetivo

`GET /faq` devolve o DTO do índice (esta tela + Soluções da Home + canais do Atendimento). O React ainda pode ignorar nesta task.

## Fazer

1. `FaqController` invokable no lugar da closure. Nome de rota igual.
2. `FaqPresenter::make()` — hero slim; categorias (copy desta tela + cards da Home com `#faq`); Equipe/Ligue do Atendimento. **Sem** accordion / WhatsApp faixa / App / Blog.
3. `HomePresenter::solucoesPayload()` público — o FAQ reusa a mesma resolução de mídia da Home.
4. Testes em `tests/Feature/Integracao/`.

## Testes (PHPUnit)

- Seeder: eyebrow `FAQ`; title; categorias title; 7 cards; `[0].href` `/financiamento-carro#faq`; último Omni Empresas `/omni-empresas#faq`.
- Equipe/Ligue do Atendimento.
- `faq/x.webp` no hero → `/storage/faq/x.webp`.
- Sem seed: `GET /faq` 200, coleções vazias.
- Sem keys `faq_items`, `whatsapp`, `noticias`, `app`, `agentes`.
- Cards em `faq_categorias` são ignorados. Cards **não** vêm do Programa Elas.

## Fora

Ligar as seções React (task 02). Filament. Perguntas das landings.
