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

3.6 KiB

1. Pré-requisitos e alinhamento de testes

  • 1.1 Confirmar phpunit.xml com PostgreSQL (amare_test) e documentar criação do banco de teste no README
  • 1.2 Registrar Policies de conteúdo no AppServiceProvider ou descoberta automática
  • 1.3 Criar diretório tests/Feature/Marketing/ para testes desta change

2. Content media (content-media)

  • 2.1 Criar app/Support/PublicImageUploadRules.php com allowlist MIME/extensão, limite 10 MB e regra de alt text obrigatório
  • 2.2 Escrever teste unitário ou feature validando rejeição de MIME inválido e arquivo oversize
  • 2.3 Documentar php artisan storage:link e disco public no README
  • 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)

  • 3.1 Criar migration site_settings conforme SPEC §8.2 (incluindo social_links jsonb)
  • 3.2 Criar model SiteSetting com instance() singleton e casts (jsonb, timestamps)
  • 3.3 Criar SiteSettingPolicy admin-only
  • 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)
  • 3.5 Escrever feature tests: admin salva settings; assistant recebe 403
  • 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)

  • 4.1 Criar migration services com índices em slug, sort_order, is_featured, published_at
  • 4.2 Criar model Service com scope published(), slug único e fillable conforme SPEC
  • 4.3 Criar ServiceFactory e ServicePolicy admin-only
  • 4.4 Criar ServiceResource Filament (form, table, confirmação de exclusão, upload de capa com alt text via PublicImageUploadRules)
  • 4.5 Escrever feature tests: slug único, publicação via published_at, assistant 403

5. Portfolio cases (portfolio-cases / WEB-03)

  • 5.1 Criar migrations portfolio_cases e portfolio_images (FK cascade, índice composto portfolio_case_id, sort_order)
  • 5.2 Criar models PortfolioCase e PortfolioImage com relação hasMany ordenada e scope published()
  • 5.3 Criar factories e PortfolioCasePolicy admin-only
  • 5.4 Criar PortfolioCaseResource com relation manager de galeria (reorderable, alt text, caption opcional)
  • 5.5 Escrever feature tests: publicação, ordem da galeria, cascade delete, assistant 403

6. Testimonials (testimonials / WEB-04)

  • 6.1 Criar migration testimonials conforme SPEC §8.2
  • 6.2 Criar model Testimonial com scope published() e TestimonialFactory
  • 6.3 Criar TestimonialPolicy e TestimonialResource Filament
  • 6.4 Escrever feature tests: publicação, featured filter, assistant 403

7. Seed de conteúdo de demonstração

  • 7.1 Criar ContentSeeder ou estender DatabaseSeeder com settings padrão, 3 serviços, 3 casos (com galeria), 3 depoimentos
  • 7.2 Adicionar imagens fixture versionadas em tests/fixtures/images/ e referenciá-las no seed
  • 7.3 Garantir datas e conteúdo determinísticos para testes visuais futuros (SPEC §17.3)

8. Verificação final

  • 8.1 Executar composer pint:check e composer phpstan
  • 8.2 Executar composer test:feature contra PostgreSQL local
  • 8.3 Executar composer quality e corrigir falhas
  • 8.4 Reportar conclusão no formato SPEC §24 (requisitos WEB-02/03/04/06, alterações, testes, comandos, aceite, pendências)