feat: páginas de detalhe das modalidades de assessoria

This commit is contained in:
2026-08-12 09:18:57 -03:00
parent ea630328c9
commit a0963dd57a
36 changed files with 1407 additions and 57 deletions

View File

@@ -0,0 +1,57 @@
## MODIFIED Requirements
### Requirement: Public routes serve published content without authentication
The system SHALL expose the public routes of SPEC §5.1 plus the additive package detail route: `home` (`/`), `services.index` (`/servicos`), `packages.show` (`/pacotes/{slug}`), `portfolio.index` (`/portfolio`), `portfolio.show` (`/portfolio/{slug}`), `about` (`/sobre`), `contact` (`/contato`) and `privacy` (`/privacidade`). Every public route MUST respond without authentication and MUST NOT expose unpublished content, internal fields, or internal notes (SPEC §19).
#### Scenario: Guest reaches every public route
- **WHEN** an unauthenticated visitor requests any public route listed above that has published content where required
- **THEN** the response status MUST be 200
- **AND** no redirect to `/admin/login` MUST occur
#### Scenario: Unpublished content is invisible
- **GIVEN** a service, portfolio case, wedding modality, or testimonial with `published_at` null
- **WHEN** a visitor loads the corresponding public listing or home section
- **THEN** the record MUST NOT appear in the rendered output
#### Scenario: Unpublished case detail returns 404
- **GIVEN** a portfolio case saved as draft
- **WHEN** a visitor requests `/portfolio/{slug}` for that case
- **THEN** the response status MUST be 404
#### Scenario: Unpublished wedding modality detail returns 404
- **GIVEN** a wedding modality saved as draft
- **WHEN** a visitor requests `/pacotes/{slug}` for that modality
- **THEN** the response status MUST be 404
#### Scenario: Published case detail becomes reachable
- **GIVEN** a portfolio case saved as draft
- **WHEN** an admin fills the required fields and publishes the case
- **THEN** `/portfolio/{slug}` MUST respond 200
- **AND** the case MUST appear in the `/portfolio` listing
#### Scenario: Published wedding modality detail becomes reachable
- **GIVEN** a wedding modality saved as draft with required detail fields
- **WHEN** an admin publishes the modality
- **THEN** `/pacotes/{slug}` MUST respond 200
## ADDED Requirements
### Requirement: Wedding modality detail uses Heritage Editorial public layout
The system SHALL render `/pacotes/{slug}` with the public layout (header/footer shared), Heritage Editorial tokens, and section order: package hero (eyebrow, bipartite title, lead, outline secondary actions as designed, hero media), dark benefit strip, included-items grid, audience split (media + checklist), final conversion CTA. The page MUST be server-rendered Blade without a public Livewire dependency. Missing optional images MUST NOT break the page (omit or degrade the media slot).
#### Scenario: Detail page section order
- **GIVEN** a published modality with complete detail content
- **WHEN** a visitor loads `/pacotes/{slug}`
- **THEN** the document MUST include the hero, benefits, included items, audience and final CTA regions in that order
- **AND** MUST use the public layout chrome
#### Scenario: Detail page has no console errors
- **WHEN** the modality detail is loaded in a real browser at desktop and mobile viewports
- **THEN** the browser console MUST contain no JavaScript errors