Date de déploiement: vendredi 27 mars 2026 à 12:48
Version Actuelle
0.1.20
Sprint 1
Nom du Projet
BackToSchool
Environnement
Déploiement OVH
vendredi 27 mars 2026 à 12:48
Découvrez l'évolution de l'application à travers ses versions
Pipeline v2 parser : nouveau mode de parsing avec dictionnaire NL→FR (80+ termes) pour la recherche cross-langue. Reformulation automatique des noms de produits néerlandais en français pour interroger l'index FTS français (aquarelpapier → papier aquarelle, plakkaatverf → gouache). Corrections de marque incluses (pelican → pelikan, staedler → staedtler).
Discrimination par type de produit dans le fuzzy scoring : extractProductType() identifie le type (aquarel, dessin, mixed-media, couleur, pastel, toile, photo-mount, creative-mount, etc.) et applique +0.20 bonus si match / -0.25 pénalité si mismatch. Empêche 'aquarelpapier' de matcher 'mixed media papier'.
Validation AI avec prompts stricts : les noms de gamme/sous-produit sont désormais DISCRIMINANTS (Photo Mount ≠ Creative Mount, Colorline ≠ Imagine). Règles de tolérance explicites : nb feuilles = OK, grammage/format/type = REJET. Exemples de faux positifs ajoutés aux prompts Haiku, Sonnet et validateur Pipeline.
Persistence complète au changement de langue : match stats, parser mode, modèle AI, durée, raisons de rejet, candidates fuzzy, itemsPerUnit, matchType/confidence — tout est conservé. Zone d'upload affiche 'Previously processed' avec le nom du fichier.
Affichage de la durée du parsing dans la barre de statistiques et de la raison de non-match dans la colonne 'Matched Product' (texte amber italic, non tronqué).
Validation AI batched : découpage en lots de 40 items (au lieu de 147 en un seul appel) pour éviter le crash sur les gros fichiers. Modèle passé de Opus à Haiku, max_tokens de 2048 à 4096. Retry automatique si la validation échoue.
Priorité items/u document > catalogue : le nombre d'items par unité est extrait du texte du document (45 vellen) et prévaut sur la valeur du produit matché (25 vellen). Regex améliorée pour les nombres entre parenthèses : blok (45 vellen).
Shared prefix matching dans le fuzzy scorer : les mots composés néerlandais (aquarelpapier, aquarelblok, aquarelalbum) se matchent via leur racine commune 'aquarel' (≥5 chars, ≥50% du mot court). Pénalité -0.1 quand le candidat n'a pas un attribut spécifié par la requête (grammage, format, taille).
Nouveaux champs produit bulkQuantity et itemsPerUnit : le scraper extrait et sauvegarde le nombre d'unités par paquet bulk (ex: PAR PAQUET DE 10 → 10) et le nombre d'items par produit (ex: pack 24 feuilles → 24, feuille → 1). Backfill des 57 784 produits existants.
Colonnes Doc i/u et DB i/u dans la table de parsing : affiche le nombre d'items par unité extrait du nom du document et du produit matché en DB, avec calcul du total (items × quantité). Support FR/NL/EN : feuilles, vel, vellen, sheets, stuks, pièces.
parseItemsPerUnit() partagé client/serveur : fonction pure de parsing des noms de produits pour extraire le conditionnement (pack 24, bloc 20, pak van 100vel, 3 stuks). Gestion des faux positifs (vert feuille, bladgroen, feuille d'étiquette).
Propagation itemsPerUnit/bulkQuantity dans toute la chaîne : schema Prisma, scraper save functions, FTS search queries (CatalogProduct), API routes Pipeline v1 et Hybrid, MatchedProduct type, matching-validator swap.
Scrape catalogue complet avec bulkQuantity : 497 catégories, 57 258 produits, 41 805 avec bulkQuantity rempli (72%), 4 470 avec itemsPerUnit (8%). Ajout de dotenv/config au script scrape-catalogue.ts.
Amélioration du fuzzy matching : détection du type de produit (aquarel, dessin, mixed-media, couleur, pastel, toile, mount sprays) avec bonus/malus dans le scoring. Décomposition des mots composés néerlandais dans buildFtsQuery (aquarelpapier → aquarel).
Vérifiez l'état opérationnel de tous les composants critiques
Application
Next.js App Router
Base de données
PostgreSQL + Prisma ORM
Points d'API
REST API pour produits, écoles, commandes