Aller au contenu

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)