PD-227 — Acceptabilité
📚 Navigation User Story
| Document | | | ---------- | -- | | 📋 [Spécification](PD-227-specification.md) | | | 🛠️ [Plan d'implémentation](PD-227-plan.md) | | | ✅ **Critères d'acceptation** | *(ce document)* | | 📝 [Retour d'expérience](PD-227-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 | Liens FR↔EN et balises hreflang pointent vers des URLs inexistantes dès que les slugs diffèrent (ex. /en/legal/privacy-policy → /fr/legal/privacy-policy inexistant, idem legal-notice), car les URLs alternates sont construites par simple remplacement de préfixe. Les pages concernées n’ont pas d’équivalent accessible via le switcher, ce qui viole l’invariant « 100% des pages » et la bascule canonique exigée. | Spec §Invariants 1 & 3 ; Plan §Mapping invariants ; src/components/LangSwitcher.astro:2-10 ; src/layouts/BaseLayout.astro:22-29 ; src/pages/en/legal/privacy-policy.astro / fr/legal/politique-confidentialite.astro ; src/pages/en/legal/legal-notice.astro / fr/legal/mentions-legales.astro | BLOQUANT |
| E-02 | Langue non supportée non redirigée vers FR : configuration redirectToDefaultLocale: false et absence de middleware/route de fallback → /de/product retourne 404, contraire au cas d’erreur « redirection vers la page FR correspondante ». | Spec §Cas d’erreur ; astro.config.mjs:9-14 ; absence de middleware dédié | MAJEUR |
| E-03 | Validation de parité i18n absente : aucun script scripts/validate-i18n.sh ni helper i18n/index.ts prévus au plan, donc aucune vérification automatique des pages manquantes/slugs divergents. | Plan §Fichiers à créer / Script de validation ; repository (fichiers manquants) | MAJEUR |
| E-04 | Redirection racine implémentée via JS (window.location.replace) et non via un Astro.redirect('/fr/', 302) serveur comme prévu, ce qui déroge au flux attendu et dépend du JS pour la redirection initiale. | Plan §Flux techniques (Redirection racine) ; src/pages/index.astro | MINEUR |
Suivi des écarts (append-only)
[2025-12-19] — Suivi E-01
- Statut précédent : OUVERT
- Statut actuel : RÉSOLU
- Justification factuelle :
- Slugs FR alignés sur EN :
src/pages/fr/legal/legal-notice.astro et src/pages/fr/legal/privacy-policy.astro renommés pour correspondre aux cibles EN, évitant les 404. - Liens de navigation mis à jour :
src/components/Footer.astro et src/components/NewsletterCTA.astro pointent vers les nouvelles URLs FR. - LangSwitcher/hreflang utilisent le préfixe de langue sur un chemin désormais existant.
- Référence vérification :
src/pages/fr/legal/legal-notice.astro, src/pages/fr/legal/privacy-policy.astro src/components/Footer.astro, src/components/NewsletterCTA.astro
[2025-12-19] — Suivi E-02
- Statut précédent : OUVERT
- Statut actuel : RÉSOLU
- Justification factuelle :
- Middleware de redirection locale ajouté :
src/middleware.ts redirige tout préfixe non supporté (/de/*, /es/*, etc.) vers /fr/* avec code 302 et préservation de la query string. - Référence vérification :
src/middleware.ts
[2025-12-19] — Suivi E-03
- Statut précédent : OUVERT
- Statut actuel : RÉSOLU
- Justification factuelle :
- Script de parité i18n ajouté et exécuté en CI avant déploiement :
scripts/validate-i18n.sh et job validate-i18n dans .gitlab-ci.yml (needs du job pages). - Comptage actuel des pages fr/en : 11/11, aucun manque signalé.
- Référence vérification :
scripts/validate-i18n.sh .gitlab-ci.yml
[2025-12-19] — Suivi E-04
- Statut précédent : OUVERT
- Statut actuel : RÉSOLU
- Justification factuelle :
- Redirection racine désormais serveur :
src/pages/index.astro retourne Astro.redirect('/fr/', 302) sans dépendance JS côté client. - Référence vérification :
src/pages/index.astro
Verdict d’acceptabilité (courant)
- ✅ ACCEPTÉ
- Date : 2025-12-19
- Motif synthétique : Tous les écarts identifiés (E-01 à E-04) sont corrigés et vérifiés.
Historique des verdicts
| Date | Verdict | Version | Commentaire |
| 2025-12-18 | ⛔ REFUSÉ | n/a | Verdict initial avec E-01 BLOQUANT (bascule FR↔EN cassée) |
| 2025-12-19 | ✅ ACCEPTÉ | n/a | Écarts E-01 à E-04 résolus (slugs FR alignés, middleware locale, validation i18n CI, redirection racine serveur) |