Contexte
Crée la page de consultation en lecture seule /representation-equilibree/[siren]/[year] : récap complet de la déclaration, bouton téléchargement PDF, accessible à l'utilisateur connecté propriétaire du SIREN. La recherche publique est hors scope. Issue parent #3287. Dépend de #TICKET_ROUTER, #TICKET_PDF.
Fichiers impactés
packages/app/src/app/representation-equilibree/[siren]/[year]/page.tsx (création)
packages/app/src/modules/representation-equilibree/ConsultationPage.tsx (création)
packages/app/src/modules/representation-equilibree/__tests__/ConsultationPage.test.tsx (création)
Changement attendu
- Route
[siren]/[year]/page.tsx : server component.
params: Promise<{ siren: string, year: string }>.
- Vérifie via
api.representationEquilibree.getBySirenAndYear (router côté utilisateur authentifié — lève si non propriétaire). Si non trouvée ou non submitted → notFound().
- Passe la déclaration + company au composant
ConsultationPage.
ConsultationPage :
- Bannière
CompanyBanner.
- En-tête avec
<h1> "Représentation équilibrée {year}" et bouton <DownloadRepeqPdfButton year={year} /> aligné à droite.
- Si deadline dépassée :
fr-alert--info "Cette déclaration ne peut plus être modifiée (deadline du {date} dépassée)."
- 5 sections
<h2> en lecture seule, chacune avec une liste de définition <dl> DSFR :
- Période de référence : date de fin.
- Écarts cadres dirigeants : soit les 2 %, soit le libellé du motif.
- Écarts instances dirigeantes : idem.
- Publication : date + URL (avec
<NewTabNotice /> N°30) ou modalités.
- Transmission : date de soumission, ID de transmission.
- Bouton "Retour à mon espace" en pied de page.
- Tests :
- Rendu déclaration calculable : affichage des 2 %.
- Rendu déclaration non calculable : affichage du motif.
- Présence du
<NewTabNotice /> si URL de publication.
- Deadline dépassée : affichage de l'alerte info.
- Accès refusé (non propriétaire) : le router lève une erreur — tester via un mock que le composant ne rend pas (404).
Scénarios de test
- S13 — Utilisateur connecté propriétaire accède à
/representation-equilibree/[siren]/{year} → récap lecture seule + bouton PDF.
- RGAA N°30 — NewTabNotice présent si URL publication.
Références visuelles
Desktop

Mobile

Annexe pipeline (lecture locale par code-dev / design-validator) :
/tmp/egapro-mocks/epic-3287/screenshots/consultation-desktop.png
/tmp/egapro-mocks/epic-3287/screenshots/consultation-mobile.png
Critères d'acceptation
Contexte
Crée la page de consultation en lecture seule
/representation-equilibree/[siren]/[year]: récap complet de la déclaration, bouton téléchargement PDF, accessible à l'utilisateur connecté propriétaire du SIREN. La recherche publique est hors scope. Issue parent #3287. Dépend de #TICKET_ROUTER, #TICKET_PDF.Fichiers impactés
packages/app/src/app/representation-equilibree/[siren]/[year]/page.tsx(création)packages/app/src/modules/representation-equilibree/ConsultationPage.tsx(création)packages/app/src/modules/representation-equilibree/__tests__/ConsultationPage.test.tsx(création)Changement attendu
[siren]/[year]/page.tsx: server component.params: Promise<{ siren: string, year: string }>.api.representationEquilibree.getBySirenAndYear(router côté utilisateur authentifié — lève si non propriétaire). Si non trouvée ou nonsubmitted→notFound().ConsultationPage.ConsultationPage:CompanyBanner.<h1>"Représentation équilibrée {year}" et bouton<DownloadRepeqPdfButton year={year} />aligné à droite.fr-alert--info"Cette déclaration ne peut plus être modifiée (deadline du {date} dépassée)."<h2>en lecture seule, chacune avec une liste de définition<dl>DSFR :<NewTabNotice />N°30) ou modalités.<NewTabNotice />si URL de publication.Scénarios de test
/representation-equilibree/[siren]/{year}→ récap lecture seule + bouton PDF.Références visuelles
Desktop

Mobile

Annexe pipeline (lecture locale par code-dev / design-validator) :
/tmp/egapro-mocks/epic-3287/screenshots/consultation-desktop.png/tmp/egapro-mocks/epic-3287/screenshots/consultation-mobile.pngCritères d'acceptation
/representation-equilibree/[siren]/[year]accessible à l'utilisateur propriétaire connecté<h2>avec<dl>en lecture seulefr-alertaffichée sur la page de consultation possède unfr-alert__titleconforme DSFR (RGAA N°33)pnpm typecheck+pnpm lint:check+pnpm format:check+pnpm testvertsconsultation-*.png