Changelog
Historique des versions de CUIS.web — du portage 1992 à la vision accomplie.
Moteur récursif original : Bernard Vandendaele (1992) — non modifié, fondation de chaque sprint.
Écran d'accueil de CUIS sous Clipper, tel qu'utilisé de 1992 à 2026. Cliquer pour agrandir.
- Base OBJET / LIEN d'origine, conçue par Bernard Vandendaele
- Moteur de calcul récursif — le même, à l'identique, trente-quatre ans plus tard
- Utilisé en production réelle, poste après poste, jusqu'au portage web
- Portage complet depuis le Clipper Summer '87 (1992)
- Moteur récursif de Bernard Vandendaele — intégré sans modification
- Table polymorphique OBJET (ingrédients + recettes unifiés via TYPE)
- Table LIEN (liste d'adjacence avec ordonnancement)
- Calcul récursif des coûts et quantités
- Navigation Accueil / Recettes / Matières premières / Tous les objets
- Fiche objet avec composition et besoins matière
- Éditeur de composition en référentiel natif
- Support PHP 8 / MySQL 8 / Bootstrap 5
- Déploiement dual : Laragon (cuis.test) + OVH (cuis.palika.fr)
- Authentification, rôles et permissions
- Détection de cycles directs et indirects (WITH RECURSIVE)
- Fil d'Ariane et historique de navigation (10 entrées)
- Trois nouveaux types d'objets : Journée, Mois, Année
- Intégration native dans objet/lien — moteur récursif inchangé
- Vue liste mensuelle et annuelle
- Grille calendrier annuelle (12 mini-mois)
- Compteurs de production sur la page d'accueil
- Bandeau démo d'accueil
- La notion de "recette" s'étend à l'organisation temporelle de la production
- Bug de navigation : le contexte multiplicatif était perdu en descendant d'une recette parente vers un composant enfant
- ctx_mul_enfant = ctx_mul_parent × (lien.qt / qt_ref_enfant) — calcul désormais correct
- Bandeau bleu contextuel sur chaque fiche visitée depuis un parent
- Bouton "Vue isolée" pour revenir au référentiel natif
- Propagation du contexte en avant dans tous les liens enfants
- L'éditeur de composition reste volontairement hors contexte (référentiel natif uniquement)
- Cinq fichiers PHP modifiés : helpers.php, index.php, fiche.php, composition.php, besoins.php — aucun SQL
- 2 428 matières premières publiques injectées avec prix RNM 2026 (FranceAgriMer / Rungis)
- Fournisseur MARCHE pré-installé comme référence de prix
- Réparation de 1 530 liens legacy remappés vers le référentiel RNM
- 488 chaînes récursives cassées réparées
- Module d'import en masse : CSV / XLS / XLSX lus dans le navigateur (SheetJS)
- Assistant d'import pas à pas : feuille → mapping → aperçu → import
- Import batch multi-feuilles (un classeur entier en une fois)
- Interpréteur sémantique des colonnes avec dictionnaire de synonymes extensible
- Profils d'import réutilisables et classe automatique par feuille
- Fournisseur "MARCHE" pré-installé (prix de référence)
- Tableau de bord : indicateurs de santé de la base (matières classées, avec prix ; recettes avec composition)
- Encart "Entretien de la base" avec raccourcis import / triage / matières sans prix
- Refonte des unités : codes lisibles (kg, gr, lt, cl…) au lieu de K/G/L/M/P/X
- Barre de navigation allégée : Recettes, Matières et Tous les objets regroupés sous "Catalogue"
- Changelog déplacé dans le menu utilisateur
- Page d'accueil contextuelle selon le rôle
- Mise à jour du prix d'une matière existante même sans fournisseur associé
- Composition autorisée pour les types temporels (journée, mois, année)
- Catalogue transversal réutilisable : cuisson_ref, repos_ref, prepa_ref (7 métiers, 690 lignes issues du guide Cuissons Leboucher)
- Table grammage_ref : 119 références (légumes, fruits, œufs, abats, corps gras, garnitures)
- Extraction automatique des durées sur 4 674 étapes existantes (51% exploitables)
- 4 fonds de base sans eau corrigés (dont le Fond Blanc de Veau, référence historique du projet)
- Restructuration Fond brut → Bouillon réduit → recette finale, sur toutes les recettes concernées
- Classificateur cuisson/repos : 354 étapes mal classées ramenées à 48
- Wizard de découverte : composer un menu à partir de produits finis, sans jargon technique
- Consolidation multi-recettes et liste de courses (Recette::explosionMenu())
- Ordre de production suggéré, réordonnançable à la main
- Export/import CSV du panier, sans compte requis
- Panier en session PHP native — aucune nouvelle table
- Chaîne CONV.OEUFS corrigée : quantité de référence figée par erreur à 0,055/0,019/0,036 au lieu de 1 (62 liens)
- Pâte à Choux (B) restaurée depuis l'archive Clipper originale (18,182 pc d'œuf → 1 pc réel)
- 10 liens en litres mal aiguillés repointés
- Verrouillage/déverrouillage des fiches validées, réservé aux fondateurs, avec traçabilité complète
- Cinq exports Excel par fiche, dont un classeur "Fiche technique" multi-feuilles entièrement piloté par formules
- Verrouillage cellule par cellule dans les exports (patch du générateur Excel)
- Faille de sécurité corrigée sur les 4 routes d'édition d'étape, jusque-là sans vérification de verrouillage
- CLI.1992 (base Clipper originale, 881 recettes) — le socle du projet, présent depuis l'origine, restauré et corrigé au fil des sessions
- BPI.CDR, CDC et BPI.PDR (Cuisine de Référence, Cuisine de Collectivité, Pâtisserie de Référence) — injectés sur trois semaines, avec plusieurs passes de correction (267+ / 268 / 145 recettes)
- PAL.CAH85 (manuscrit personnel de Palika, 1985-86) — près d'une semaine d'ingestion, ~205 recettes
- Corpus Ferrandi (boulangerie/viennoiserie, 91 recettes) — démarré 20-23 juin 2026, plusieurs recorrections depuis (voir 1.1.4 et 1.1.5)
- Tous les corpus validés verrouillés au fur et à mesure (verrouille / verrouille_le / verrouille_motif)
- Menu Catalogue et onglets métier entièrement cliquables, arborescence dépliable comme un explorateur de fichiers
- Imbrication récursive généralisée dans la fiche technique — toute sous-recette, à profondeur illimitée, en une seule FT
- Filtres par source bibliographique et par provenance (maison / atelier)
- Badge Matières premières du header qui affichait "1" au lieu de plusieurs milliers
- Comptage récursif des sous-classes ne matchant plus par préfixe texte fragile
- Hero avec la chaîne du moteur récursif rendue visible (matière → composition → fiche → coût)
- Message d'accès progressif : consultation libre, compte gratuit, puis contribution
- Tri visuel des 4 colonnes principales de la liste des objets (déjà fonctionnel depuis le Chapitre 9, enfin visible)
- Recherche avec icône intégrée
- Carte changelog en bonne place sur l'accueil
- Les 3 hubs (Mode d'emploi, Liberté du chef, Communauté) mis à jour avec la logique visiteur → membre → contributeur
- 36 nouveaux verbes dans le dictionnaire des gestes (dict_locution) : 142 → 178 termes
- Matching automatique en 2 passes (position de tête + radical) : 5 516 étapes rattachées sur 5 882 orphelines (93,8%)
- Règle de priorité verbe-titre vs verbe spécifique : quand une étape reformule le nom du plat avant un geste plus précis, c'est ce second verbe qui prime (807 étapes recatégorisées)
- Corpus Ferrandi entier (549 étapes) qui n'avait aucun verbe rattaché, corrigé à 512/549
- Collision "METTRE EN PLACE" qui polluait le verbe DRESSER, corrigée par une entrée dédiée
- 32 étapes fantômes du corpus Cahier 85 (énumérations d'ingrédients sans geste réel) désactivées, sans impact sur le calcul de coût
- Export Excel riche d'une fiche technique (Fiche/Besoins/Composition/Procédure/Carte imprimable formule-driven)
- Export "Matrice" — gabarit vierge ou pré-rempli, même structure de colonnes que le futur import (chapitre 10.b)
- Vue interactive "façon Excel" d'une fiche : onglets par (sous-)recette, incrustation d'un niveau, recalcul instantané en JS sur changement de quantité
- Panier du Wizard fusionné avec cette vue interactive : un onglet Votre commande, Liste de courses, Ordre de production et un onglet par recette du menu
- Ingrédients directs affichés systématiquement au-dessus de la procédure (corrige leur absence sur les recettes non tagguées étape par étape, ex. corpus CDR)
- Timing modifiable étape par étape dans l'Ordre de production, cumulé automatiquement au total du bloc, avec reset vers les durées d'origine
- Badge "Début global" — le démarrage le plus exigeant parmi tous les blocs de production
- Téléchargement Excel du menu complet (onglets Commande/Courses/Production avec timing, un onglet par recette) et import (Excel ou CSV) pour reprendre après une perte de session
- Sous-recette partagée entre plusieurs recettes du même menu (ex. pâte à choux utilisée par deux desserts) : la fusion des arbres écrasait silencieusement une des deux occurrences — corrigé par un marquage de racine d'origine, la sous-recette affiche maintenant un lot combiné avec le détail de chaque usage
- Rechargement de page à chaque caractère tapé dans les quantités du panier (cassait la saisie d'un nombre à 2 chiffres) — recalcul différé + position de défilement restaurée
- Bouton "Voir l'ordre de production" qui ne menait plus à rien depuis le passage en onglets
- Import Excel : message clair au lieu d'un plantage si l'extension PHP zip n'est pas activée sur le serveur
- Diaporama en fondu de 26 photos culinaires libres de droit (licence Unsplash) en fond du hero, mélangées aléatoirement à chaque chargement
- Vue interactive du menu (Wizard) présentée en bonne place sur l'accueil, avec accès direct sans compte
- Overlay du hero allégé pour laisser respirer les photos plutôt que les assombrir
- Icône œuf stylisée retirée, remplacée par les vraies photos
- Mode d'emploi mis à jour avec la section Composer un menu / export Excel ; Liberté du chef mentionne le menu composable sans compte
- Chaque onglet recette du panier exporté est désormais FORMULÉ : la quantité se pilote depuis l'onglet "Votre commande" (source unique) et se répercute par formule sur tous les ingrédients
- Un onglet PAR sous-recette du panier, tous niveaux confondus — quantité cumulée sur tous ses usages, avec le détail par recette d'origine quand elle est partagée (ex. pâte à choux commune à Éclairs café et Choux au rhum)
- Onglet index "Productions cumulées", placé juste après les recettes racines : vue d'ensemble des sous-recettes partagées et de leur quantité totale à produire
- Onglet "Ordre de production" : chaque bloc développe désormais ses étapes avec une durée modifiable par étape (comme sur le site), le total du bloc devenant une formule SOMME
- Heure de service et ordre des blocs modifiables directement dans le classeur (cellules déverrouillées, tri manuel sur la colonne Ordre)
- Feuille "Liste de courses" désormais entièrement verrouillée (consolidation calculée, pas un formulaire)
- Version précédente "Carte imprimable" à valeurs figées par recette du panier remplacée par ces onglets formulés et liés entre eux
- Nouvel écran "Créer une recette" : nom, classe (cascade métier/famille), quantité de référence, puis composition en direct
- Recherche live d'ingrédients et sous-recettes (réutilise le moteur de recherche existant, matières et recettes confondues)
- Création à la volée d'une matière ou sous-recette introuvable, ajoutée immédiatement à la composition en cours, sans quitter l'écran
- Choix explicite de destination à la création d'un objet : rester dans son carnet perso, proposer à la communauté (en attente de validation), ou base commune directement (chefs senior+)
- Nouvelle unité "pers" (personne/portion) dans le catalogue d'unités
- Gouvernance de création d'objet enfin appliquée : la colonne visibilite n'était jamais renseignée à la création, ce qui rendait toute nouvelle fiche invisible dans l'arbre de navigation et les comptages malgré sa présence dans la liste à plat
- Erreur fatale systématique lors de l'ajout d'un composant à une composition (référence à une constante d'unités obsolète depuis la refonte du système d'unités) — présente depuis le Sprint 2B, jamais déclenchée jusqu'ici faute d'usage réel
- Table objet_grammage_repere créée : repère de grammage/rendement par rôle de produit, état d'entrée et transformation, distincte de objet_unite_equiv (conversion pure)
- Plus de cent lignes de repère peuplées depuis deux sources croisées : les fiches du Lycée hôtelier de La Rochelle (poids brut à l'achat, par mode de cuisson) et l'Annexe 2 du GEM-RCN (poids prêt à consommer, adulte, tolérance officielle ±10%)
- Calibrage documenté pour les condiments vendus au nombre de pièces au kilo (cornichons, olives), sourcé sur les normes Codex officielles
- Matelote de saumonettes (CDC) : 10 kg corrigés en 16 kg, conformément au texte source — la fiche portait une erreur de saisie depuis son injection
- Doctrine actée : une quantité de composant (lien.qt) est toujours exprimée crue, jamais prête à consommer — tout grammage "assiette servie" doit d'abord repasser par son taux de perte à la cuisson avant d'entrer dans une recette
- Le "poids par personne" affiché en en-tête d'une fiche CDC n'est pas une source fiable à elle seule : il peut désigner tantôt le seul élément protidique, tantôt le plat fini garni et saucé — toute correction doit être recoupée, jamais prise pour argent comptant
- Cadrage du futur référentiel de grammages/rendements repères (Chapitre 12.b) : croisement catégorie de convive × rôle du produit dans le plat × état d'entrée (frais/surgelé/conserve) × transformation (cru/cuit/réduit), avec exceptions documentées par famille (coquillages, champignons, produits à dessaler)
- Distinction actée entre conversion d'unité (objet_unite_equiv) et règle de dosage contextuelle : deux tables séparées plutôt qu'une extension, pour éviter une table à colonnes majoritairement vides selon le type de ligne
- 56 liens chapeau→déclinaison et fiche→sous-recette portaient un facteur ×0,01 au lieu de ×1 (qt=1.000 au lieu de 100.000), sous-évaluant leur poids réel d'un facteur 100
- Quantités de sous-recettes CDC recalibrées, doublons de numéro d'ordre résolus
- Mismatch unité/ingrédient corrigés sur plusieurs fiches CDC (type de persil, cacao amer, référence coq)
- Correction persil IQF généralisée à 28 fiches concernées par le même mismatch
- Attribution CDC systématiquement clarifiée : le corpus est crédité à ses véritables auteurs (BPI), jamais à la copiste d'un exemplaire scanné
- Atelier de création multi-fiches : un onglet par recette/matière ouverte dans la session de travail, jamais besoin de sortir de l'écran entre deux fiches
- Récursif : dès qu'une recette de l'atelier référence une autre comme composant, elle obtient automatiquement son propre onglet (nouvelle ou existante réutilisée)
- Ouverture d'une fiche existante comme onglet pour la modifier (recherche live), champs éditables selon le rôle connecté
- Passage en force réservé au fondateur sur une fiche verrouillée : jamais silencieux (confirmation explicite avec motif du verrou rappelé), traçabilité complète dans audit_log
- Unification des moteurs d'export Excel : l'export d'une fiche seule réutilise désormais le même moteur à onglets par sous-recette que le panier Wizard
- Section "News" et carte communauté Facebook sur l'accueil
- Badge de version resté figé à 1.3.1 malgré plusieurs chapitres déjà livrés (désynchronisation APP_VERSION/changelog)
- Onglet "+ Ajouter" de l'Atelier jamais cliquable une fois une fiche ouverte (gestionnaire de clic manquant)
- Erreur JS au chargement quand un onglet était déjà en session (désérialisation objet vs tableau)
- Import de recette membre avec trois issues : correction officielle, variante partagée, copie strictement privée
- Rien n'est publié sans validation d'un fondateur
- Réutilisation du modèle de confirmation d'import déjà éprouvé (Import.php v3, dict_synonymes)
- Workflow de validation avec système de vote
- Statuts de recette : brouillon, soumis, validé, archivé
- Historique des votes et commentaires par version
- Gestion des utilisateurs et des droits
- Panneau d'administration dédié
- Statistiques d'utilisation
- Forum phpBB lié à CUIS.web
- SSO (Single Sign-On) entre le forum et l'application
- Partage de recettes entre établissements
- La vision originelle de 1992 : techniquement impossible à l'ère des modems, réalisée aujourd'hui