# Rapport de recette — 26 octobre 2026

## Résultats acquis

| Contrôle | Résultat |
| --- | --- |
| TypeScript strict | Réussi |
| Construction Vinext Worker | Réussie : bundles client, RSC et SSR ; routes principales reconnues dynamiques |
| Moteur de recherche | 12 assertions réussies : contraintes cumulées, âge, budgets, types, synonymes, dictionnaire de faute, texte hostile et zéro résultat |
| Recherche dans le navigateur | Enfant + sciences + 50 € retourne le kit d'expériences |
| Favoris | Ajout, présence sur la page dédiée et suppression vérifiés |
| Carte solidaire | Destinataire et signature repris immédiatement dans l'aperçu |
| Accueil ordinateur | Vérifié visuellement : logo, bandeau, titre, formulaire, CTA |
| Accueil mobile | Vérifié dans des vues de 390 × 844 et 360 × 800 ; pas de débordement horizontal (scrollWidth = clientWidth) |
| Menu mobile | Ouverture vérifiée et liens lisibles |
| Optimisation image | Hero WebP ~168 Ko ; planche portraits ~279 Ko ; logo ~40 Ko |
| Métadonnées navigateur | 5 types de pages contrôlés : H1 unique, title, description, canonical, noindex et JSON-LD valides |
| Liens internes | 67 liens littéraux contrôlés ; slugs uniques ; aucune redirection non approuvée |
| Originaux | Brief et trois visuels conservés dans docs/00-sources/ |
| Don | Lien officiel vérifié ; aucun paiement ni confirmation simulée |
| Architecture d'indexation | Version privée : noindex global, robots bloquant, sitemap sans URL tant que INDEXABLE=false |

## Contrôles complémentaires

Le script verify-routes.mjs vérifie les liens internes littéraux, les slugs uniques et l'absence de redirections historiques non validées. Il ne remplace pas un crawl HTTP complet. Les ZIP sont reconstruits avec package-project.py et inspectés avant livraison.

Le rendu est implémenté par le Worker et les pages serveur Vinext. La compilation contient bien l'environnement SSR. La vérification directe du HTML brut et des statuts HTTP n'a pas pu être menée depuis le shell : l'URL d'aperçu répond dans le navigateur géré mais n'est pas accessible par ce chemin de test. Le script verify-http.py est fourni pour le refaire dans un environnement ayant accès au site. Ne pas présenter ce contrôle comme réussi.

## Limites restantes

- Pas de crawl complet du fonds WordPress.
- Pas de preuve de récupération des 2 063 références historiques.
- Pas de vérification de prix ou de stock marchand.
- Pas de test de charge, Lighthouse/Core Web Vitals mesuré ou audit d'accessibilité complet.
- Impression réelle/PDF sur l'appareil de l'utilisateur non contrôlée ; aperçu et règles d'impression implémentés.
- Pas de test transactionnel de don : le site ne collecte pas de paiement.
- Conditions juridiques de l'ouverture publique à compléter.
- Pas de back-office persistant ni d'assistant IA raccordé à un catalogue importé.

Les résultats de publication sont communiqués dans la livraison après l'opération Sites. Aucun nom de domaine personnalisé n'est modifié.

## Révision recherche et accessibilité

- Champ de recherche visible dans le hero, avec actions discussion et catalogue ; nouvelle route /assistante/ et API internes. Premier échange rendu par la page serveur, suivants traités par POST sans fournisseur IA.
- TypeScript : réussi après les modifications de recherche et de navigation.
- Tests de logique : 12 assertions catalogue et 16 assertions recherche/dialogue réussies. Scénarios : âge → budget → passion, phrase complète, budget réduit sans relaxation, mot cadeau inconnu conservé, limite du catalogue et texte sans résultat, tri.
- Navigateur : parcours « fils de 12 ans → 50 € → sciences » vérifié jusqu’au kit scientifique ; recherche directe depuis le champ mobile aboutissant à 1 idée ; retour aux filtres disponible.
- Panneau : ouverture, réglages de taille, contraste, espacement, liens soulignés, réduction d’animation et réinitialisation contrôlés. Échap ferme le dialogue et redonne le focus au bouton. Préférences reprises après navigation.
- Mobile : vues de 360 et 390 pixels contrôlées. Débordements à 200 % observés puis corrigés (footer, navigation et dialogue). Le dialogue à 200 % mesure 312 pixels utiles pour 312 pixels de contenu horizontal ; aucune barre horizontale. La recherche mobile standard a 345 pixels utiles pour 345 pixels de contenu horizontal.
- L’outil mobile est dans l’en-tête pour laisser libres les boutons de recherche ; l’outil ordinateur reste flottant et nommé.
- Ces vérifications ciblées ne constituent pas un audit complet avec lecteurs d’écran ni une certification d’accessibilité.
- Les limites de vérification HTTP et d’import historique de la première recette restent applicables.


## Correction du signalement mobile — 26 octobre 2026

La capture utilisateur a révélé quatre colonnes maintenues sur téléphone. Cause : une déclaration globale tardive de `.gift-grid` écrasait les deux colonnes des anciennes media queries. Le contrôle précédent de l'absence de débordement de la page n'avait pas détecté les textes coupés à l'intérieur des cartes.

Correction : suppression des nombres de colonnes concurrents ; grille commune calculée sur la largeur disponible et la taille du texte, avec une seule colonne sur petit mobile. Les cartes disposent d'une ligne réservée à leur étiquette et au bouton favori ; les textes et budgets disposent de toute la largeur utile. La grille couvre accueil, collections, recherche, favoris et idées associées ; la même règle est appliquée aux recommandations de l'assistante. Le logo se réduit au besoin pour garder tous les contrôles dans l'en-tête à 320 pixels.

Recette ciblée :

- Catalogue complet, 12 cartes : 320, 360, 390 et 430 pixels, une colonne ; tablette 768 pixels, deux colonnes à taille standard.
- Texte à 200 % : mêmes cinq largeurs, une colonne et aucune superposition entre étiquette et favori ; aucun texte des titres, sous-titres, étiquettes ou budgets débordant horizontalement.
- Largeur utile / largeur de défilement de la page : identiques après correction, y compris 305/305 pixels pour la vue de 320 pixels avec sa barre de défilement.
- Ordinateur : quatre cartes de 275,5 pixels, aucun texte débordant ; favoris : ajout, affichage en une colonne de 337 pixels sur mobile et suppression vérifiés.
- TypeScript : vérification réussie.

La capture utilisateur est conservée dans `cartes-mobile-avant.png` et la vue corrigée dans `cartes-mobile-apres.jpg`. Ces vérifications concernent le correctif d'affichage ; elles ne constituent pas un audit d'accessibilité complet.


## Calendrier et complément au plan — 27 octobre 2026

- Inventaire, périmètre et architecture complétés : activités pour enfants, histoires/Grimm, chansons françaises et anglaises avec illustrations et vidéos, dessins/coloriages, jeux navigateur et calendrier. Document détaillé ajouté et proposé au téléchargement depuis /projet/.
- Ajout de /calendrier-de-l-avent/ en page serveur force-dynamic, métadonnées spécifiques et fil d’Ariane. 24 idées éditoriales originales, sans chansons ou récits tiers reproduits. Les cases utilisent les éléments natifs details/summary, utilisables sans JavaScript.
- Navigation mobile : cinq liens, calendrier à la troisième place, colonnes symétriques, nom accessible complet, lien doré. À texte très agrandi, le calendrier occupe une ligne centrée et les autres commandes peuvent revenir à la ligne. Accès également dans l’en-tête ordinateur, le menu déroulant et le pied de page.
- Vérification TypeScript réussie ; 83 liens internes littéraux contrôlés, aucune redirection historique non approuvée.
- Limite de cette session : le gestionnaire annonce un aperçu en cours à http://terminal.local:4173/, mais le navigateur reçoit ERR_CONNECTION_REFUSED. La requête HTTP depuis le shell expire sans réponse. Aucun contrôle visuel, interaction clavier, mesure de dimensions ou contrôle du HTML brut n’est donc déclaré réussi pour cette révision. Les vérifications visuelles de la révision précédente ne prouvent pas celles du nouveau menu.
- Les nouveaux contenus famille et médias restent à produire ; les jeux du calendrier sont des idées à partager, pas des jeux vidéo dans le navigateur. Le déblocage quotidien des cases et la progression locale ne sont pas implémentés.
- Les archives sont régénérées avec le complément. La compilation et la publication sont effectuées après les vérifications ci-dessus ; leur résultat est communiqué lors de la livraison.


## Contes de Grimm
Six adaptations abrégées et routes SSR ajoutées, images originales IA, narration inscrite au backlog. Vérifications TypeScript et compilation exécutées avant publication. Vérification visuelle non réalisée : aperçu indisponible lors de la session précédente.


## Navigation par univers — 27 octobre 2026
Menu ordinateur et mobile regroupés en Cadeaux (recherche d’idées et destinataires), Noël en famille (contes et calendrier), Solidarité (dons, fondation, carte). Icônes accompagnées de libellés, sections distinctes et commandes natives details/summary. Un seul sous-menu ordinateur ouvert à la fois. Calendrier central mobile conservé ; correspondance de son icône corrigée. La navigation n’annonce que des pages disponibles. Vérification TypeScript réussie.

Aperçu de cette révision non vérifié visuellement : le démarrage du serveur géré échoue avec un conflit de serveur Vinext déjà actif dans son environnement. Aucun résultat de test mobile ou clavier n’est déclaré pour ce menu.
