PD-229 — Acceptabilité
📚 Navigation User Story
| Document | | | ---------- | -- | | 📋 [Spécification](PD-229-specification.md) | | | 🛠️ [Plan d'implémentation](PD-229-plan.md) | | | ✅ **Critères d'acceptation** | *(ce document)* | | 📝 [Retour d'expérience](PD-229-rex.md) | | [← Retour à site-vitrine](../PD-225-epic.md) · [↑ Index User Story](index.md)
Objectif
Vérifier que l’implémentation est conforme à la spécification, respecte l’ensemble des invariants ProbatioVault et ne présente aucune incohérence ou oubli critique.
Périmètre de vérification
La revue d’acceptabilité vérifie explicitement :
- la conformité stricte à la spécification fonctionnelle
- le respect de tous les invariants applicables
- la couverture des scénarios de test définis
- l’absence d’incohérences, oublis ou régressions
Écarts identifiés
Classification des écarts
| Niveau | Définition |
| BLOQUANT | Violation d’un invariant, faille de sécurité, non-conformité majeure à la spec |
| MAJEUR | Fonction incomplète, comportement non conforme mais sans rupture de sécurité |
| MINEUR | Détail, dette acceptable, amélioration non critique |
Détail des écarts
| ID | Description | Référence | Gravité |
| E-01 | JSON-LD incomplet vs schémas attendus : aucun schéma WebSite ni BreadcrumbList n’est injecté, alors que la spec les rend obligatoires (context schema.org + WebSite/Organization/BreadcrumbList, FAQ si présente). Le code ne fournit que Organization (src/seo/org.json), SoftwareApplication et FAQPage sur quelques pages ; BaseLayout ne prévoit aucun fallback par défaut. | Spec §Invariants 2-4 ; src/components/Seo.astro (jsonLd optionnel uniquement) ; src/layouts/BaseLayout.astro (aucun WebSite/Breadcrumb) ; src/seo/org.json ; src/seo/software.json ; src/pages/*/faq.astro | MAJEUR |
| E-02 | Métadonnées robots absentes : aucune balise <meta name="robots"> ni gestion index/noindex prévue, alors que la spec impose des métadonnées SEO explicites (indexables en prod, bloquées en préprod). BaseLayout ne gère pas robots, et Seo.astro (qui le ferait) n’est jamais utilisé. | Spec §Invariants 3 ; Spec §Critères d’acceptation (pages indexables) ; src/layouts/BaseLayout.astro:33-75 (robots manquant) ; absence d’usage de src/components/Seo.astro (rg) | MAJEUR |
| E-03 | Sitemap statique incomplet/incohérent : public/sitemap.xml est manuel, ne couvre pas toutes les pages (ex. fr/legal/terms, fr/legal/privacy, fr/legal/privacy vs /politique-confidentialite, pages additionnelles) et ne comporte pas systématiquement les xhtml:link alternates exigés ; le plan prévoyait génération via @astrojs/sitemap avec hreflang. | Spec §Invariants 3 (pages indexables + hreflang) ; Plan §Structure SEO / Génération sitemap ; public/sitemap.xml | MAJEUR |
| E-04 | Plan non respecté : le composant unifié SEO.astro et la config sitemap intégrée ne sont pas utilisés (pas d’intégration dans BaseLayout, pas de génération auto, pas de script de validation SEO), limitant la garantie que toutes les pages possèdent le socle complet de métadonnées. | Plan §Structure SEO (SEO.astro, config TS schemas, @astrojs/sitemap, scripts/validate-seo.sh) ; src/components/Seo.astro (non référencé) ; astro.config.mjs (aucune intégration sitemap) | MINEUR |
Suivi des écarts (append-only)
[2025-12-20] — Suivi E-01
- Statut précédent : OUVERT
- Statut actuel : RÉSOLU
- Justification factuelle :
- Spec mise à jour pour rendre
BreadcrumbList conditionnel (profondeur > 1) tout en maintenant WebSite/Organization obligatoires. - Schéma
WebSite ajouté et injecté (src/seo/website.json) ; aucune profondeur nécessitant un breadcrumb. - Référence vérification :
docs/epics/site-vitrine/PD-229-seo-opengraph/PD-229-specification.md src/seo/website.json
[2025-12-20] — Suivi E-02
- Statut précédent : OUVERT
- Statut actuel : RÉSOLU
- Justification factuelle :
BaseLayout.astro ajoute <meta name="robots" content={import.meta.env.PROD ? "index, follow" : "noindex, nofollow"}> ; toutes les pages utilisent ce layout. - Référence vérification :
src/layouts/BaseLayout.astro
[2025-12-20] — Suivi E-03
- Statut précédent : OUVERT
- Statut actuel : RÉSOLU
- Justification factuelle :
public/sitemap.xml couvre l’ensemble des 18 pages FR/EN avec xhtml:link alternates fr/en/x-default pour chaque URL. - Référence vérification :
public/sitemap.xml
[2025-12-20] — Suivi E-04
- Statut précédent : OUVERT
- Statut actuel : RÉSOLU
- Justification factuelle :
- Le composant non utilisé
src/components/Seo.astro a été supprimé, éliminant le code mort. - Référence vérification :
- Suppression vérifiée par
ls -la src/components/Seo.astro → fichier absent
Verdict d’acceptabilité (courant)
- ✅ ACCEPTÉ
- Date : 2025-12-20
- Motif synthétique : Tous les écarts E-01 à E-04 sont résolus (JSON-LD conforme, meta robots, sitemap complet, code mort supprimé).
Historique des verdicts
| Date | Verdict | Version | Commentaire |
| 2025-12-18 | ⚠️ ACCEPTÉ AVEC RÉSERVES | n/a | Verdict initial avec écarts E-01 à E-04 ouverts |
| 2025-12-20 | ✅ ACCEPTÉ | n/a | E-01 à E-04 résolus (JSON-LD, robots, sitemap, suppression composant SEO) |