Contexte du document
Transversal. Odoo (vues pivot/graph natives) et un ERP propriétaire du marché des PME
industrielles (générateur d’états + datamart décisionnel) sont les références
(pirates:analyses/transversales/matrice-fonctionnelle-globale.md §2, DOM-11). Moteur de
rapports/BI = complexe/coûteux (pirates:analyses/transversales/matrice-fonctionnelle-globale.md §6) :
Elena vise un socle d’états + tableaux de bord, la BI avancée étant Won’t-v1. Aucune reprise de
code des ERP étudiés.
Exigence détaillée
-
Priorité : Must
-
Livraison : Lot 0 (DEC-0219), avec tous les critères acquis et l’interface normative ci-dessous ; le décisionnel reste distinct.
-
Domaine : DOM-11
-
Énoncé : « Elena doit fournir dès la v1 un concepteur d’états visuel permettant de composer un document sur plusieurs pages distinctes, par blocs positionnés librement (texte, image, tableau, code-barres, QR code, ligne, rectangle, ellipse), sans développement. »
-
Justification : précise le générateur d’états d’EXG-11-001 (CA-01, « modèles de documents personnalisables sans développement lourd ») avec les briques attendues d’un concepteur crédible en contexte PME industrielle : étiquettes et documents portant un code-barres ou un QR code pour la traçabilité article/lot, tableaux répétés pour les lignes d’un document.
-
Critères d’acceptation :
-
CA-01 — Un utilisateur compose un document en positionnant librement des blocs de texte, image, tableau et code-barres/QR sur une ou plusieurs pages distinctes. Dès la v1, il peut ajouter, dupliquer, supprimer et réordonner ces pages ; chaque page possède ses propres blocs, modifiables indépendamment. Après enregistrement et réouverture, toutes les pages conservées, leurs blocs et leur ordre sont restitués sans perte. L’aperçu et la génération respectent cette composition. La gestion des pages de conception est distincte de la pagination automatique des tableaux de CA-02 (voir DEC-0090).
- Complément CA-01 — Formes : dès la v1, l’utilisateur positionne des lignes, rectangles et ellipses, règle la couleur et l’épaisseur de leur contour et, pour rectangles et ellipses, un remplissage facultatif. Aucun import d’image n’est nécessaire et aucun outil de dessin libre n’est inclus. Enregistrer et rouvrir conserve les éléments et propriétés ; l’aperçu et la génération les restituent. Vérifier les trois primitives avec différents contours, une forme remplie et une sans remplissage. Les règles existantes des zones répétées et des blocs après tableau restent applicables (voir DEC-0099).
- En v1, le format de papier, l’orientation et les marges sont définis au niveau du modèle et communs à toutes ses pages, continuations et annexes comprises, sans dérogation par page. La sauvegarde/réouverture, l’aperçu et la génération conservent ces réglages communs. Vérifier sur plusieurs pages composées avec un tableau débordant avant une annexe : même format, même orientation et mêmes marges partout, sans réglage divergent par page (voir DEC-0096).
- Dès la v1, chaque page composée possède ses propres éléments Header/Footer, répétés sur cette page et ses continuations ; la page suivante conserve les siens. Ils sont éditables dans un mode commun sur toute la surface du papier, contenu masqué. En mode Contenu, ils restent visibles, non atténués, verrouillés et rendus derrière le contenu. Deux limites de pagination propres à la page, saisies en millimètres depuis le haut du papier et reprises sur ses continuations, bornent le développement des tableaux indépendamment du placement du décor. Aucun contournement automatique d’un élément central ni réglage individuel devant/derrière ; les réserves haute/basse sont respectées. Sauvegarde/réouverture et rendus conservent ces propriétés. Voir l’interface normative, UI-08/09, et DEC-0136, qui précise et ajuste DEC-0092.
- Dès la v1, un bloc texte ordinaire permet d’insérer deux variables : numéro de page courante et nombre total de pages du PDF rendu, notamment en en-tête/pied, sans bloc de pagination dédié. Le texte autour des variables est libre (ex. « Page n / N »). La numérotation commence à 1 et reste continue, continuations et annexes comprises, sans remise à zéro entre pages composées ; chaque occurrence répétée affiche le numéro de sa page effective. Le total est celui du rendu courant : l’aperçu limité affiche son propre total sans prétendre donner celui du PDF final et conserve ses signalements de collections partielles. Si ces variables modifient la mesure du texte, la mise en page est recalculée jusqu’à stabilisation dans une limite d’itérations bornée ; sans convergence, une erreur explicite bloque la livraison du PDF, plutôt qu’un total incorrect. Enregistrer et rouvrir préserve texte et variables. Vérifier sur un tableau débordant suivi d’une annexe, en aperçu et en génération finale (voir DEC-0094).
- Dès la v1, un bloc texte ordinaire permet de mettre certains passages en gras, italique ou souligné, et de varier leur taille et leur couleur dans un même bloc, variables insérées comprises. Les valeurs des variables respectent les styles appliqués. Enregistrer puis rouvrir conserve les styles par passage et les variables ; l’aperçu et la génération finale les restituent, y compris dans les en-têtes/pieds répétés et pour les variables de pagination. Vérifier un bloc combinant plusieurs styles et variables : un style local ne s’étend pas involontairement au bloc entier (voir DEC-0097).
-
CA-02 — Un bloc tableau se répète automatiquement pour chaque élément d’une liste de données (ex. les lignes d’une commande), avec pagination automatique si le contenu dépasse une page. Dès la v1, ses pages de continuation sont insérées automatiquement avant la page composée suivante du modèle. Celle-ci commence sur une nouvelle page après toutes les lignes du tableau, sans écrasement ni mélange de son contenu avec le tableau. L’aperçu et la génération finale respectent cet ordre sur leurs jeux de données respectifs ; sans débordement, aucune page de continuation superflue n’est ajoutée (voir DEC-0091).
- Dès la v1, les blocs du corps placés après le tableau (totaux, signature, mentions) suivent automatiquement sa fin et apparaissent une seule fois. Ils restent sur la dernière page du tableau si la place suffit ; sinon une continuation supplémentaire est insérée avant la page composée suivante. Ils ne sont ni écrasés ni répétés ; les espaces des en-têtes/pieds sont respectés. Vérifier sans débordement, avec débordement et place suffisante, puis avec continuation supplémentaire, en aperçu et génération ; l’annexe conserve sa nouvelle page et les pages ajoutées entrent dans le total rendu (voir DEC-0095).
- Dès la v1, l’utilisateur peut également composer un tableau statique : lignes et colonnes définies manuellement, cellules contenant du texte et des variables, sans répétition depuis une collection. Enregistrer puis rouvrir conserve la structure et les contenus ; l’aperçu et la génération finale les restituent et résolvent les variables sur leurs données respectives, sans multiplier les lignes. Vérifier une grille de coordonnées combinant texte et variables. Les permissions sur les champs restent applicables et le modèle conserve son type racine unique ; statique ne signifie pas sans source métier (voir DEC-0098).
-
CA-03 — Un bloc peut afficher une valeur calculée ou mise en forme à partir des données liées (ex. concaténer deux champs pour un code-barres), sans écrire de code applicatif.
-
CA-04 — Un aperçu du document est disponible pendant la conception, sur les données que l’utilisateur est autorisé à consulter, limité par défaut à 15 éléments par collection paginée et signalant séparément chaque collection partielle ; en l’absence de donnée consultable, il présente un état vide explicite sans donnée fictive.
-
CA-05 — Un template possède les états
draftetactive; sa duplication crée un nouveau template, une écriture concurrente sur une version périmée est refusée explicitement et sa suppression ne conserve aucun historique métier en v1. -
CA-06 — Une limite d’éléments définie dans un template est présentée comme une règle métier visible du document ; la génération indique qu’elle est complète relativement à cette limite. Un dépassement de l’enveloppe technique publiée provoque un refus explicite sans PDF partiel, jamais une troncature ni une limite métier implicite.
-
CA-07 — Dès la v1, la configuration d’un tableau est organisée en onglets « Source », « Colonnes », « Apparence », « Sous-lignes » et « Script ». Changer d’onglet conserve les modifications et le tableau sélectionné ; une erreur dans un autre onglet reste signalée. Vérifier la navigation entre les cinq onglets avec saisies en cours et le maintien du signalement après avoir quitté un onglet en erreur. L’onglet Source est précisé par EXG-11-006/CA-03 (DEC-0112) ; l’onglet Colonnes est précisé par CA-08 (DEC-0103), l’onglet Apparence par CA-09 (DEC-0104) ; l’onglet Sous-lignes est précisé par CA-10 (DEC-0105) ; l’onglet Script et son articulation globale sont précisés par CA-12/13 (DEC-0107/0108) (voir DEC-0111).
-
CA-08 — Dès la v1, les colonnes du tableau de données reprennent toutes les fonctionnalités de configuration de la référence MES-968 gelée par DEC-0103, sans reproduire ses défauts ni imposer son code ou son style visuel :
- Les pourcentages s’appliquent à la largeur du tableau ; les colonnes automatiques se partagent équitablement l’espace restant. Dépasser la largeur disponible ou ne laisser aucune place à une colonne provoque une erreur explicite, sans correction silencieuse.
- Ajouter, supprimer, réordonner par glisser-déposer, renommer ; replier/déplier une fiche ou toutes les fiches. Choisir un champ autorisé par libellé métier, du texte avec variables ou une expression du mini-langage ; configurer sans script les formats texte, nombre, montant et date (complément validé, non attribué au POC).
- Texte riche par passage (gras, italique, soulignement, taille, couleur), variables comprises ; colonnes QR avec contenu brut comprenant variables/expressions, taille en millimètres réglable par saisie et glissement horizontal, correction L/M/Q/H, couleurs du motif et du fond. Suggestions de variables utilisables ; complétion détaillée par CA-14.
- Largeur automatique ou pourcentage du tableau, par saisie ou glissement horizontal sur le contrôle. Menus d’ajout/changement de type accessibles sans découpe par le panneau.
- Changer le type/champ en place conserve position, largeur, contenus compatibles et pied textuel ; propriétés spécifiques adaptées. Titre conservé sauf passage d’un type non-donnée à un champ, qui l’initialise avec son libellé. Agrégat de données retiré lors du passage à texte/QR. La sélection directe prévient l’affectation du même champ à plusieurs colonnes de données comme dans le POC, sans interdire sa réutilisation dans le texte à variables.
- Pied facultatif : aucun ou texte riche avec variables ; pour les données, également somme, comptage, nombre de valeurs distinctes, moyenne, minimum, maximum. Portée et placement précisés par CA-11 (DEC-0106).
- Vérifier un tableau mixte données/texte riche/QR : réordonnancement sans dissocier titre, contenu, largeur et pied ; changements de type, largeurs mixtes et pieds ; sauvegarde/réouverture, aperçu et génération conservent et restituent la configuration sur leurs données respectives. Toute capacité de colonne démontrée sur la référence gelée mais omise de l’inventaire doit être répercutée, non exclue silencieusement. Droits et sandbox restent applicables ; apparence générale, sous-lignes et scripts suivis séparément.
-
CA-09 — Dès la v1, l’onglet Apparence permet de régler la taille et la couleur du texte séparément pour les titres, le corps et le pied du tableau, les fonds des titres et du pied, l’activation et les couleurs de l’alternance des fonds de lignes, ainsi que la couleur et l’épaisseur des bordures. Les styles locaux du texte riche sont conservés, sans effacement par les réglages généraux. Les titres des colonnes sont répétés sur chaque page de continuation du tableau ; leur espace est réservé sans chevaucher les données ni les en-têtes/pieds de page. Si le texte d’une cellule dépasse la hauteur utile d’une page entière, il se poursuit sur la page suivante sans troncature, avec titres répétés et styles conservés. Une image plus haute qu’une page utile est poursuivie par fragments si sa restitution intégrale est réalisable, sinon le rendu échoue en identifiant l’élément, sans réduction automatique. La faisabilité reste à démontrer. Les QR restent indivisibles et provoquent une erreur localisée s’ils dépassent une page utile. Vérifier cette continuation en aperçu et en génération finale, sans perte ni duplication de texte. Le pied de tableau reste distinct du pied de page ; sa portée et son placement sont précisés par CA-11 (DEC-0106). Vérifier sauvegarde/réouverture, aperçu et génération finale avec styles distincts, alternance activée puis désactivée, bordures et styles locaux ; vérifier un tableau débordant suivi d’une annexe, avec titres répétés et sans chevauchement (voir DEC-0104).
-
CA-10 — Dès la v1, l’onglet Sous-lignes permet de composer plusieurs groupes successifs de relations sous leur parent, chacun avec sa source, ses colonnes et son apparence propres, dans l’ordre défini par la composition. Une source peut être une collection ou un objet lié unique, notamment les informations du fournisseur d’une ligne. Les détails d’une ligne suivent leur parent avant la ligne parente suivante ; ils ne deviennent pas une liste indépendante. Les continuations conservent cet ordre et ce rattachement, sans imposer que tous les détails tiennent sur la même page. Les droits existants, la profondeur maximale de trois relations depuis la racine et la même autorité propriétaire restent applicables ; l’exemple fournisseur n’impose pas une nouvelle relation métier. Vérifier plusieurs groupes distincts, relations unique et collection, colonnes/apparences différentes, sauvegarde/réouverture, aperçu et final avec continuation sans mélange entre parents ou groupes (voir DEC-0105).
-
CA-11 — Dès la v1, un pied facultatif est configurable pour le tableau et pour chaque groupe de sous-lignes. Chaque pied calcule uniquement sur les données de son périmètre après filtrage, sans compter plusieurs fois une ligne à cause de ses sous-lignes ni mélanger groupes ou parents. Il apparaît une seule fois après les données concernées, pas à chaque page : sous-total après le groupe du parent courant, total du tableau après toutes les lignes et leurs détails, avant les blocs suivant le tableau. Le pied de page répété reste distinct. Les règles de continuation et de complétude restent applicables ; l’aperçu calcule sur ses données et conserve les signalements de collections partielles, sans présenter ses totaux comme ceux du final complet. Vérifier plusieurs parents et groupes filtrés, absence de double comptage, pieds activés/désactivés, sauvegarde/réouverture, aperçu et génération avec continuation et apparition unique de chaque pied (voir DEC-0106).
-
CA-12 — Dès la v1, le script du tableau exploite les données autorisées du document, sa collection filtrée et les contextes de ligne/groupe pour calculer des valeurs réutilisables dans ses cellules et pieds. Les valeurs communes et celles propres aux lignes/groupes restent distinctes, sans mélange entre parents ni modification des données métier. Le tableau peut utiliser des variables globales et exposer des variables à la portée globale du document pour réutilisation dans d’autres blocs. Vérifier ces deux sens d’échange, l’isolation des contextes et la sauvegarde/réouverture, en aperçu et final sur leurs données respectives. Droits, sandbox et signalement des collections partielles inchangés. L’articulation globale est précisée par CA-13 ; le script construit la valeur et la publie uniquement par
expose VARIABLE. Les variables non exposées restent locales au script ; deux variables exposées de même nom provoquent une erreur explicite. Le moteur n’impose ni agrégation ni collection, sans écrasement par la dernière ligne (voir DEC-0107). -
CA-13 — Dès la v1, un script global unique à éditer permet de créer des variables réutilisables dans les blocs et les scripts de tableaux. Les calculs suivent leurs dépendances indépendamment du placement : une variable exposée par un tableau peut alimenter un calcul global ou un texte situé avant ce tableau. La décomposition des calculs préserve la sémantique des conditions, boucles bornées et affectations locales du script unique, sans réordonnancement naïf. Chaque variable globale possède un producteur unique, sans écrasement silencieux ; les collisions de producteurs et les dépendances circulaires sont signalées explicitement et bloquent le rendu. Vérifier une chaîne globale → tableau → variable exposée → calcul global et texte antérieur, puis déplacer les blocs sans changer les résultats ; vérifier collision, cycles directs et indirects, sauvegarde/réouverture, aperçu et final sur leurs données respectives. Droits, sandbox, isolation des contextes et signalement des collections partielles restent applicables (voir DEC-0108).
-
CA-14 — Dès la v1, la complétion fonctionne dans le script global, les scripts des tableaux, les expressions des colonnes et le texte avec variables. Elle propose les champs autorisés, les variables accessibles dans le contexte courant et les fonctions du mini-langage, avec type, description et paramètres attendus lorsque applicables. Les variables globales exposées par les tableaux sont proposées indépendamment du placement des blocs. Les suggestions suivent les modifications du modèle et s’insèrent au clavier ou à la souris. Les erreurs indiquent emplacement et cause, avec accès au script concerné. Vérifier chaque surface, les portées ligne/groupe/tableau/global, l’absence de suggestions non autorisées, l’actualisation après modification, les deux modes d’insertion et la navigation vers une erreur. Droits, sandbox et règles de dépendances inchangés (voir DEC-0109).
-
CA-15 — Dès la v1, le concepteur offre un espace de travail dédié : canevas central occupant l’espace disponible, panneaux de blocs et de propriétés redimensionnables et repliables, configuration du tableau suffisamment large pour ses onglets, éditeur de script agrandissable sans perte de sélection ni de modifications. Sauvegarde, aperçu, annuler/rétablir et zoom restent directement accessibles. Les composants et styles du design system n’imposent pas une disposition qui étrique l’éditeur. Recetter un parcours réel : configurer un tableau avec plusieurs groupes, écrire et compléter un script, corriger une erreur puis revenir au placement, sans perte de travail ni manipulations permanentes de fenêtres. Vérifier aussi repli et redimensionnement des panneaux, agrandissement du script et retour au canevas ; une simple conformité visuelle ne suffit pas (voir DEC-0110).
-
-
Requiert : EXG-11-001 (générateur d’états)
-
Conditionne : EXG-11-006 (liaison aux données), EXG-11-007 (impression contextuelle)
-
Complément normatif CA-01/04/07/15 : Interface du concepteur PDF, UI-01 à UI-11 (DEC-0136) : composition DsToolbar/panneaux/canevas, pagination centrée en bas, color picker partagé, états détaillés et recette 1366 × 768 / 1920 × 1080. Les limites de l’aperçu CA-04 restent applicables.
-
Co-requis : aucun