## 1. Pré-requisitos e alinhamento de testes - [x] 1.1 Confirmar `phpunit.xml` com PostgreSQL (`amare_test`) e documentar criação do banco de teste no README - [x] 1.2 Registrar Policies de conteúdo no `AppServiceProvider` ou descoberta automática - [x] 1.3 Criar diretório `tests/Feature/Marketing/` para testes desta change ## 2. Content media (content-media) - [x] 2.1 Criar `app/Support/PublicImageUploadRules.php` com allowlist MIME/extensão, limite 10 MB e regra de alt text obrigatório - [x] 2.2 Escrever teste unitário ou feature validando rejeição de MIME inválido e arquivo oversize - [x] 2.3 Documentar `php artisan storage:link` e disco `public` no README - [x] 2.4 Reforçar uploads Filament com validação compartilhada de MIME, extensão e limite de 10 MB, incluindo mensagens em pt-BR e testes regressivos ## 3. Site settings (site-settings / WEB-06) - [x] 3.1 Criar migration `site_settings` conforme SPEC §8.2 (incluindo `social_links` jsonb) - [x] 3.2 Criar model `SiteSetting` com `instance()` singleton e casts (jsonb, timestamps) - [x] 3.3 Criar `SiteSettingPolicy` admin-only - [x] 3.4 Criar Filament Page `ManageSiteSettings` no grupo **Conteúdo do site** com form tipado (hero, contato, meta, OG image, analytics desabilitados por padrão) - [x] 3.5 Escrever feature tests: admin salva settings; assistant recebe 403 - [x] 3.6 Adicionar alt text condicional à imagem OG padrão na migration, model, formulário, seed determinístico e testes ## 4. Service catalog (service-catalog / WEB-02) - [x] 4.1 Criar migration `services` com índices em `slug`, `sort_order`, `is_featured`, `published_at` - [x] 4.2 Criar model `Service` com scope `published()`, slug único e fillable conforme SPEC - [x] 4.3 Criar `ServiceFactory` e `ServicePolicy` admin-only - [x] 4.4 Criar `ServiceResource` Filament (form, table, confirmação de exclusão, upload de capa com alt text via PublicImageUploadRules) - [x] 4.5 Escrever feature tests: slug único, publicação via `published_at`, assistant 403 ## 5. Portfolio cases (portfolio-cases / WEB-03) - [x] 5.1 Criar migrations `portfolio_cases` e `portfolio_images` (FK cascade, índice composto `portfolio_case_id, sort_order`) - [x] 5.2 Criar models `PortfolioCase` e `PortfolioImage` com relação hasMany ordenada e scope `published()` - [x] 5.3 Criar factories e `PortfolioCasePolicy` admin-only - [x] 5.4 Criar `PortfolioCaseResource` com relation manager de galeria (reorderable, alt text, caption opcional) - [x] 5.5 Escrever feature tests: publicação, ordem da galeria, cascade delete, assistant 403 ## 6. Testimonials (testimonials / WEB-04) - [x] 6.1 Criar migration `testimonials` conforme SPEC §8.2 - [x] 6.2 Criar model `Testimonial` com scope `published()` e `TestimonialFactory` - [x] 6.3 Criar `TestimonialPolicy` e `TestimonialResource` Filament - [x] 6.4 Escrever feature tests: publicação, featured filter, assistant 403 ## 7. Seed de conteúdo de demonstração - [x] 7.1 Criar `ContentSeeder` ou estender `DatabaseSeeder` com settings padrão, 3 serviços, 3 casos (com galeria), 3 depoimentos - [x] 7.2 Adicionar imagens fixture versionadas em `tests/fixtures/images/` e referenciá-las no seed - [x] 7.3 Garantir datas e conteúdo determinísticos para testes visuais futuros (SPEC §17.3) ## 8. Verificação final - [x] 8.1 Executar `composer pint:check` e `composer phpstan` - [x] 8.2 Executar `composer test:feature` contra PostgreSQL local - [x] 8.3 Executar `composer quality` e corrigir falhas - [x] 8.4 Reportar conclusão no formato SPEC §24 (requisitos WEB-02/03/04/06, alterações, testes, comandos, aceite, pendências)