Files
manoel freitas 7a858b52af feat: implement CMS for content management (WEB-02/03/04/06)
Introduces Filament management for site settings, services, portfolio cases, and testimonials with admin-only policies, validated media uploads, and deterministic seeding. Includes comprehensive design and task documentation for the implementation.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-29 06:18:42 -03:00

58 lines
3.6 KiB
Markdown

## 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)