Files
sliding-automation/archive/v1_pipeline/layouts.yaml
T

1744 lines
45 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# =============================================================================
# layouts.yaml — 28 layouts Pernod Ricard Sliding
# Projet : Sliding Design System
# Usage : lu par render_engine.py pour assembler composants + positions
# Dépend : theme.yaml (couleurs, typo, spacing) + components.yaml (briques)
# =============================================================================
# CONVENTION DE COORDONNÉES
# Origine : coin supérieur gauche du slide
# Unité : centimètres (cm)
# Slide : 33.87 cm × 19.05 cm (16:9)
# Zone utile (hors footer) : 33.87 × 17.85 cm
# Footer : y = 18.35 cm, hauteur 0.70 cm
#
# ZONES PRÉDÉFINIES (calculées depuis theme.yaml)
# TITLE_ZONE : left=1.80, top=0.45, width=30.00, height=1.90
# CONTENT_ZONE: left=1.50, top=2.80, width=30.87, height=14.85
# FULL_ZONE : left=1.50, top=0.45, width=30.87, height=17.20
#
# STRUCTURE D'UN LAYOUT
# meta : infos catalogue (famille, rôles narratifs, source)
# background : paramètres C01 slide_background
# signature : éléments PR fixes (accent_bar, logo, footer)
# title_zone : paramètres C02 slide_title
# content_zones: liste de zones nommées avec composant + position
# json_schema : champs attendus dans le JSON Agent (validation Agent 3)
# constraints : règles min/max pour Agent 3
# agent_hint : conseil narratif pour Agent 1/2
# =============================================================================
meta_global:
version: "1.0"
date: "2026-05-14"
total_layouts: 28
slide_width_cm: 33.87
slide_height_cm: 19.05
content_zone_top_cm: 2.80 # sous le titre
content_zone_bottom_cm: 18.05 # au-dessus du footer
content_height_cm: 15.25
footer_top_cm: 18.35
footer_height_cm: 0.70
layouts:
# ===========================================================================
# FAMILLE 1 — COUVERTURE & NAVIGATION (L01-L05)
# ===========================================================================
# ---------------------------------------------------------------------------
# L01 — cover_split
# ---------------------------------------------------------------------------
cover_split:
id: L01
famille: "Couverture & navigation"
source: "PR Template p.1, Data Awareness"
roles_narratifs: [accroche]
agent_hint: >
Réservé au slide 1. Titre fort et accrocheur, sous-titre contextualisé.
Pas de bullets. Message = raison d'être de la présentation en 1 phrase.
background:
component: C01
color: "theme.colors.primary.dark_blue"
diagonal_split: true
color_right: "theme.colors.primary.mid_blue"
diagonal_angle_deg: 15
signature:
accent_bar: false
logo_topbar: false
footer: false
title_zone:
component: C02
left_cm: 1.80
top_cm: 6.50
width_cm: 18.00
height_cm: 4.00
font_override:
size_pt: 40
color: "#ffffff"
bold: true
subtitle:
margin_top_cm: 0.50
size_pt: 20
color: "theme.colors.primary.bright_blue"
content_zones: [] # pas de contenu — cover pur
json_schema:
required:
- titre
optional:
- sous_titre
- accroche
constraints:
titre_max_chars: 70
sous_titre_max_chars: 80
# ---------------------------------------------------------------------------
# L02 — section_divider
# ---------------------------------------------------------------------------
section_divider:
id: L02
famille: "Couverture & navigation"
source: "PR Template p.8-9"
roles_narratifs: [transition]
agent_hint: >
Slide de transition entre parties. Titre = nom de la section, percutant.
Numéro de section bien visible. Pas de contenu textuel.
background:
component: C01
color: "theme.colors.primary.dark_blue"
diagonal_split: true
color_right: "#fdfcf9"
diagonal_angle_deg: 18
signature:
accent_bar: false
logo_topbar: false
footer: false
title_zone:
component: C02
left_cm: 1.80
top_cm: 7.50
width_cm: 17.00
height_cm: 3.00
font_override:
size_pt: 32
color: "#ffffff"
bold: true
content_zones:
- id: section_number
component: C01 # forme cercle rendu par render_engine
type: section_circle
center_x_cm: 25.50
center_y_cm: 9.50
diameter_cm: 2.80
fill: "theme.colors.primary.dark_blue"
text_color: "#ffffff"
font: "theme.typography.display"
size_pt: 32
json_schema:
required:
- titre
- numero_section
optional:
- image
constraints:
titre_max_chars: 60
numero_section_type: integer
# ---------------------------------------------------------------------------
# L03 — agenda
# ---------------------------------------------------------------------------
agenda:
id: L03
famille: "Couverture & navigation"
source: "PR Template p.4-7"
roles_narratifs: [transition, contexte]
agent_hint: >
Sommaire de la présentation. Items = titres des sections, pas des bullets de contenu.
Présenter l'ossature narrative, pas le détail.
background:
component: C01
color: "#ffffff"
signature:
accent_bar: true
logo_topbar: true
footer: true
title_zone:
component: C02
left_cm: 1.80
top_cm: 0.45
width_cm: 30.00
height_cm: 1.90
content_zones:
- id: agenda_items
component: C06 # bullet_list en mode agenda (cercles numérotés)
type: agenda_numbered # variante spéciale : cercles au lieu de puces
left_cm: 1.50
top_cm: 2.80
width_cm: 30.87
height_cm: 14.85
cols: 2 # 2 colonnes si items > 3
col_gap_cm: 2.00
circle_diameter_cm: 0.80
circle_fill: "theme.colors.primary.dark_blue"
item_height_cm: 1.40
json_schema:
required:
- titre
- items
optional: []
constraints:
items_min: 2
items_max: 6
item_schema:
required: [numero, titre]
optional: [presentateur]
titre_max_chars: 50
presentateur_max_chars: 30
# ---------------------------------------------------------------------------
# L04 — content_marker
# ---------------------------------------------------------------------------
content_marker:
id: L04
famille: "Couverture & navigation"
source: "Best practice 01 p.2-25"
roles_narratifs: [transition]
agent_hint: >
Rappel de l'agenda en cours de présentation. current_index indique
l'item actif (en orange). Identique à agenda en structure.
background:
component: C01
color: "theme.colors.primary.dark_blue"
signature:
accent_bar: false
logo_topbar: false
footer: false
title_zone: null # pas de titre — le marqueur fait office de titre
content_zones:
- id: marker_items
component: C06
type: agenda_marker # variante : item actif en rose, autres atténués
left_cm: 3.00
top_cm: 4.00
width_cm: 26.00
height_cm: 12.00
active_fill: "theme.colors.primary.rose"
inactive_fill: "rgba(255,255,255,0.25)"
active_text: "#ffffff"
inactive_text: "rgba(255,255,255,0.5)"
item_height_cm: 1.60
json_schema:
required:
- items
- current_index
optional: []
constraints:
items_min: 2
items_max: 6
current_index_type: integer
# ---------------------------------------------------------------------------
# L05 — end_slide
# ---------------------------------------------------------------------------
end_slide:
id: L05
famille: "Couverture & navigation"
source: "Data Awareness V2 p.20"
roles_narratifs: [conclusion, next-steps]
agent_hint: >
Dernier slide obligatoire. Titre = message de clôture fort.
Next steps = 2-4 actions concrètes. Contact optionnel.
background:
component: C01
color: "theme.colors.primary.dark_blue"
signature:
accent_bar: false
logo_topbar: false
footer: false
accent_bar_left_full: # barre rose pleine hauteur côté gauche
color: "theme.colors.primary.rose"
width_cm: 0.40
left_cm: 0.00
title_zone:
component: C02
left_cm: 2.50
top_cm: 5.50
width_cm: 22.00
height_cm: 3.00
font_override:
size_pt: 32
color: "#ffffff"
bold: true
subtitle:
size_pt: 18
color: "theme.colors.primary.bright_blue"
content_zones:
- id: next_steps
component: C06
type: bullet_list
left_cm: 2.50
top_cm: 10.00
width_cm: 22.00
height_cm: 5.00
font_override:
color: "rgba(255,255,255,0.85)"
size_pt: 12
- id: contact
component: C07
type: text_paragraph
left_cm: 2.50
top_cm: 16.00
width_cm: 22.00
height_cm: 1.80
font_override:
color: "rgba(255,255,255,0.60)"
size_pt: 10
json_schema:
required:
- titre
optional:
- sous_titre
- message
- next_steps
- contacts
constraints:
titre_max_chars: 70
next_steps_max: 4
# ===========================================================================
# FAMILLE 2 — TEXTE STRUCTURÉ (L06-L09)
# ===========================================================================
# ---------------------------------------------------------------------------
# L06 — default_bullets
# ---------------------------------------------------------------------------
default_bullets:
id: L06
famille: "Texte structuré"
source: "PR Template p.10"
roles_narratifs: [contexte, solution, preuve]
agent_hint: >
Layout texte par défaut. Titre = So What affirmatif.
Bullets L1 = arguments principaux, L2 = preuves/détails, L3 = exemples.
Max 5 bullets L1 pour rester lisible.
background:
component: C01
color: "#ffffff"
signature:
accent_bar: true
logo_topbar: true
footer: true
title_zone:
component: C02
left_cm: 1.80
top_cm: 0.45
width_cm: 30.00
height_cm: 1.90
content_zones:
- id: main_bullets
component: C06
left_cm: 1.80
top_cm: 2.80
width_cm: 30.07
height_cm: 14.85
json_schema:
required:
- titre
- bullets
optional:
- sous_titre
constraints:
bullets_min: 1
bullets_max: 10
bullet_l1_max: 5
bullet_max_chars: 120
# ---------------------------------------------------------------------------
# L07 — two_cols_text
# ---------------------------------------------------------------------------
two_cols_text:
id: L07
famille: "Texte structuré"
source: "Best practice 03 p.2.2-3.2"
roles_narratifs: [contexte, comparaison, solution]
agent_hint: >
Deux colonnes de texte en parallèle. Idéal pour mise en contraste :
Objectifs / Approche, Problème / Solution, Avant / Après conceptuel.
Chaque colonne a un titre-couleur distinct.
background:
component: C01
color: "#ffffff"
signature:
accent_bar: true
logo_topbar: true
footer: true
title_zone:
component: C02
left_cm: 1.80
top_cm: 0.45
width_cm: 30.00
height_cm: 1.90
content_zones:
- id: col_left
component: C07
left_cm: 1.50
top_cm: 2.80
width_cm: 14.80
height_cm: 14.85
titre_couleur: "theme.colors.primary.bright_blue"
- id: separator
type: vertical_line
x_cm: 16.93
top_cm: 3.00
height_cm: 14.00
color: "theme.signature.footer.border_top_color"
width_cm: 0.03
- id: col_right
component: C07
left_cm: 17.50
top_cm: 2.80
width_cm: 14.87
height_cm: 14.85
titre_couleur: "theme.colors.primary.rose"
json_schema:
required:
- titre
- left
- right
optional:
- sous_titre
constraints:
left_schema:
required: [titre, contenu]
titre_max_chars: 40
contenu_max_chars: 500
right_schema:
required: [titre, contenu]
titre_max_chars: 40
contenu_max_chars: 500
# ---------------------------------------------------------------------------
# L08 — key_message
# ---------------------------------------------------------------------------
key_message:
id: L08
famille: "Texte structuré"
source: "Data Awareness V2, Best practice 02"
roles_narratifs: [accroche, solution, conclusion]
agent_hint: >
Un seul message clé, occupant presque tout le slide. Style quote.
Fond crème, guillemets décoratifs. Pas de bullets.
Utiliser pour marteler une recommandation ou un So What décisif.
background:
component: C01
color: "theme.colors.primary.bright_warm"
signature:
accent_bar: false
logo_topbar: false
footer: true
title_zone: null # pas de titre — le message est le titre
content_zones:
- id: message_block
component: C08
left_cm: 3.00
top_cm: 3.50
width_cm: 27.87
height_cm: 12.00
guillemet_left_cm: 3.00
guillemet_top_cm: 3.50
text_left_cm: 5.00
text_top_cm: 5.00
json_schema:
required:
- message
optional:
- auteur
- fonction
constraints:
message_max_chars: 220
auteur_max_chars: 60
# ---------------------------------------------------------------------------
# L09 — executive_summary
# ---------------------------------------------------------------------------
executive_summary:
id: L09
famille: "Texte structuré"
source: "Best practice 02 p.2"
roles_narratifs: [contexte, solution]
agent_hint: >
Synthèse SCR en 3 blocs. Situation = état des lieux factuel.
Complication = le problème ou la tension. Résolution = la réponse.
Standard McKinsey/BCG pour ouvrir un deck stratégique.
background:
component: C01
color: "#ffffff"
signature:
accent_bar: true
logo_topbar: true
footer: true
title_zone:
component: C02
left_cm: 1.80
top_cm: 0.45
width_cm: 30.00
height_cm: 1.90
content_zones:
- id: bloc_situation
component: C07
left_cm: 1.50
top_cm: 2.80
width_cm: 30.87
height_cm: 4.50
titre_couleur: "theme.colors.primary.dark_blue"
- id: separator_1
type: horizontal_line
left_cm: 1.50
y_cm: 7.50
width_cm: 30.87
color: "theme.signature.footer.border_top_color"
- id: bloc_complication
component: C07
left_cm: 1.50
top_cm: 7.70
width_cm: 30.87
height_cm: 4.50
titre_couleur: "theme.colors.primary.rose"
- id: separator_2
type: horizontal_line
left_cm: 1.50
y_cm: 12.40
width_cm: 30.87
color: "theme.signature.footer.border_top_color"
- id: bloc_resolution
component: C07
left_cm: 1.50
top_cm: 12.60
width_cm: 30.87
height_cm: 4.50
titre_couleur: "theme.colors.primary.bright_blue"
json_schema:
required:
- titre
- situation
- complication
- resolution
optional:
- sous_titre
constraints:
situation_max_chars: 300
complication_max_chars: 300
resolution_max_chars: 300
# ===========================================================================
# FAMILLE 3 — DONNÉES & KPIs (L10-L14)
# ===========================================================================
# ---------------------------------------------------------------------------
# L10 — kpi_grid
# ---------------------------------------------------------------------------
kpi_grid:
id: L10
famille: "Données & KPIs"
source: "Data Awareness V2 p.4-8"
roles_narratifs: [preuve, contexte]
agent_hint: >
Grille de KPIs. Chaque carte = 1 indicateur avec sa valeur et son contexte.
La grille s'adapte automatiquement selon le nombre d'items (2-6).
Valeurs = chiffres impactants, pas des phrases.
background:
component: C01
color: "#ffffff"
signature:
accent_bar: true
logo_topbar: true
footer: true
title_zone:
component: C02
left_cm: 1.80
top_cm: 0.45
width_cm: 30.00
height_cm: 1.90
content_zones:
- id: kpi_cards
component: C09
left_cm: 1.50
top_cm: 2.80
width_cm: 30.87
height_cm: 14.85
grid_rules: "component.kpi_card.grid_rules"
card_gap_cm: 0.40
json_schema:
required:
- titre
- items
optional:
- sous_titre
constraints:
items_min: 2
items_max: 6
item_schema:
required: [titre, valeur]
optional: [sous_titre, couleur]
titre_max_chars: 30
valeur_max_chars: 12
sous_titre_max_chars: 60
# ---------------------------------------------------------------------------
# L11 — big_stat
# ---------------------------------------------------------------------------
big_stat:
id: L11
famille: "Données & KPIs"
source: "Standard MBB"
roles_narratifs: [preuve, accroche]
agent_hint: >
Un seul chiffre énorme, centré, pour un effet de choc.
Utiliser pour un indicateur décisif qui mérite d'être seul sur le slide.
Le label contextualise en 1 ligne max.
background:
component: C01
color: "#ffffff"
signature:
accent_bar: true
logo_topbar: true
footer: true
title_zone:
component: C02
left_cm: 1.80
top_cm: 0.45
width_cm: 30.00
height_cm: 1.90
content_zones:
- id: stat_display
component: C10
left_cm: 1.50
top_cm: 2.80
width_cm: 30.87
height_cm: 14.85
vertical_center: true
json_schema:
required:
- titre
- valeur
optional:
- sous_titre
- label
- source
constraints:
valeur_max_chars: 10
label_max_chars: 80
source_max_chars: 60
# ---------------------------------------------------------------------------
# L12 — comparison_table
# ---------------------------------------------------------------------------
comparison_table:
id: L12
famille: "Données & KPIs"
source: "Best practice 01 p.22"
roles_narratifs: [preuve, comparaison]
agent_hint: >
Tableau comparatif structuré. Header = noms des critères ou acteurs.
Rows = lignes de données. Max 6 colonnes × 8 lignes pour rester lisible.
background:
component: C01
color: "#ffffff"
signature:
accent_bar: true
logo_topbar: true
footer: true
title_zone:
component: C02
left_cm: 1.80
top_cm: 0.45
width_cm: 30.00
height_cm: 1.90
content_zones:
- id: table
component: C11
left_cm: 1.50
top_cm: 2.80
width_cm: 30.87
height_cm: 14.85
json_schema:
required:
- titre
- headers
- rows
optional:
- sous_titre
- col_widths
- highlight_col
constraints:
headers_min: 2
headers_max: 6
rows_min: 1
rows_max: 8
header_max_chars: 30
cell_max_chars: 60
# ---------------------------------------------------------------------------
# L13 — chart_callout
# ---------------------------------------------------------------------------
chart_callout:
id: L13
famille: "Données & KPIs"
source: "Best practice 03 (data viz)"
roles_narratifs: [preuve]
agent_hint: >
Graphique à gauche + encadré d'insight à droite. Le chart illustre,
le callout conclut. Suivre la règle BCG : le message clé se lit
sans regarder le graphique.
background:
component: C01
color: "#ffffff"
signature:
accent_bar: true
logo_topbar: true
footer: true
title_zone:
component: C02
left_cm: 1.80
top_cm: 0.45
width_cm: 30.00
height_cm: 1.90
content_zones:
- id: chart_area
component: C12
left_cm: 1.50
top_cm: 2.80
width_cm: 19.50
height_cm: 14.85
- id: insight_callout
component: C13
left_cm: 22.00
top_cm: 4.50
width_cm: 10.37
height_cm: 8.00
json_schema:
required:
- titre
- chart_type
- data
- insight
optional:
- sous_titre
- axis_x_label
- axis_y_label
- couleurs
- titre_insight
constraints:
chart_type_values: [bar, line, pie, donut]
data_min: 2
data_max: 8
insight_max_chars: 200
# ---------------------------------------------------------------------------
# L14 — benchmark
# ---------------------------------------------------------------------------
benchmark:
id: L14
famille: "Données & KPIs"
source: "Data Days 2022 p.11"
roles_narratifs: [contexte, comparaison]
agent_hint: >
Benchmark concurrents. Critères en lignes, acteurs en colonnes de barres.
Max 4 acteurs. Utiliser pour positionner PR vs marché ou comparer des options.
background:
component: C01
color: "#ffffff"
signature:
accent_bar: true
logo_topbar: true
footer: true
title_zone:
component: C02
left_cm: 1.80
top_cm: 0.45
width_cm: 30.00
height_cm: 1.90
content_zones:
- id: benchmark_bars
component: C14
left_cm: 1.50
top_cm: 2.80
width_cm: 30.87
height_cm: 14.85
critere_col_width_cm: 5.00
bars_area_width_cm: 25.87
json_schema:
required:
- titre
- criteria
- actors
- scores
optional:
- sous_titre
- couleurs_acteurs
constraints:
criteria_min: 2
criteria_max: 6
actors_min: 2
actors_max: 4
critere_max_chars: 40
actor_max_chars: 20
# ===========================================================================
# FAMILLE 4 — FRAMEWORKS VISUELS (L15-L19)
# ===========================================================================
# ---------------------------------------------------------------------------
# L15 — matrix_2x2
# ---------------------------------------------------------------------------
matrix_2x2:
id: L15
famille: "Frameworks visuels"
source: "PR Template p.20"
roles_narratifs: [contexte, solution]
agent_hint: >
Matrice 2×2 pour priorisation (impact/effort, urgence/importance…).
Chaque item = une bulle positionnée par coordonnées normalisées [0-100].
Nommer les 2 axes clairement. Max 8 bulles pour ne pas surcharger.
background:
component: C01
color: "#ffffff"
signature:
accent_bar: true
logo_topbar: true
footer: true
title_zone:
component: C02
left_cm: 1.80
top_cm: 0.45
width_cm: 30.00
height_cm: 1.90
content_zones:
- id: matrix
component: C15
left_cm: 3.50
top_cm: 2.80
width_cm: 26.87
height_cm: 14.50
axis_x_label_bottom_cm: 0.30
axis_y_label_left_cm: 0.30
json_schema:
required:
- titre
- axis_x
- axis_y
- items
optional:
- sous_titre
constraints:
axis_schema:
required: [label]
optional: [min_label, max_label]
items_min: 2
items_max: 8
item_schema:
required: [label, x, y]
optional: [taille, couleur]
label_max_chars: 25
x_range: [0, 100]
y_range: [0, 100]
# ---------------------------------------------------------------------------
# L16 — pyramid
# ---------------------------------------------------------------------------
pyramid:
id: L16
famille: "Frameworks visuels"
source: "PR Template p.44"
roles_narratifs: [contexte, solution]
agent_hint: >
Pyramide hiérarchique. Niveau 1 = sommet (plus petit, plus rare/premium).
Niveau N = base (plus large, plus fondamental). Callouts latéraux optionnels.
3 niveaux minimum, 5 maximum.
background:
component: C01
color: "#ffffff"
signature:
accent_bar: true
logo_topbar: true
footer: true
title_zone:
component: C02
left_cm: 1.80
top_cm: 0.45
width_cm: 30.00
height_cm: 1.90
content_zones:
- id: pyramid_shape
component: C16
center_x_cm: 16.93
top_cm: 3.00
max_width_cm: 18.00
height_cm: 13.50
callout_left_area_cm: 5.00 # zone pour callouts côté gauche
callout_right_area_cm: 5.00 # zone pour callouts côté droit
json_schema:
required:
- titre
- levels
optional:
- sous_titre
constraints:
levels_min: 3
levels_max: 5
level_schema:
required: [label]
optional: [description, couleur]
label_max_chars: 30
description_max_chars: 80
# ---------------------------------------------------------------------------
# L17 — circular_diagram
# ---------------------------------------------------------------------------
circular_diagram:
id: L17
famille: "Frameworks visuels"
source: "PR Template p.46-47"
roles_narratifs: [contexte, solution]
agent_hint: >
Diagramme circulaire avec logo PR central. Idéal pour écosystème,
dimensions complémentaires, cycle vertueux. Légende numérotée à droite.
Ne pas utiliser pour montrer des proportions — utiliser chart_callout.
background:
component: C01
color: "#ffffff"
signature:
accent_bar: true
logo_topbar: true
footer: true
title_zone:
component: C02
left_cm: 1.80
top_cm: 0.45
width_cm: 30.00
height_cm: 1.90
content_zones:
- id: circle
component: C17
center_x_cm: 10.00
center_y_cm: 10.50
outer_radius_cm: 3.50
- id: legend
component: C17
type: legend_only
left_cm: 16.50
top_cm: 3.50
width_cm: 15.87
height_cm: 13.50
item_height_cm: 1.60
json_schema:
required:
- titre
- segments
optional:
- sous_titre
constraints:
segments_min: 3
segments_max: 6
segment_schema:
required: [label, description]
optional: [couleur, poids]
label_max_chars: 30
description_max_chars: 80
# ---------------------------------------------------------------------------
# L18 — from_to
# ---------------------------------------------------------------------------
from_to:
id: L18
famille: "Frameworks visuels"
source: "PR Template p.23"
roles_narratifs: [solution, contexte]
agent_hint: >
Transformation FROM → TO. Chaque paire = un changement concret.
Bloc gauche optionnel pour contexte. Bloc jaune en overlap à droite
pour le résumé de la transformation ou le bénéfice attendu.
background:
component: C01
color: "#ffffff"
signature:
accent_bar: true
logo_topbar: true
footer: true
title_zone:
component: C02
left_cm: 1.80
top_cm: 0.45
width_cm: 30.00
height_cm: 1.90
content_zones:
- id: description_bloc
component: C07
optional: true
left_cm: 1.50
top_cm: 2.80
width_cm: 8.00
height_cm: 12.00
accent_top_color: "theme.colors.semantic.arrow_color"
accent_top_height: 0.12
- id: pairs_area
component: C18
left_cm: 10.50
top_cm: 2.80
width_cm: 14.00
height_cm: 12.00
from_label_top_cm: 0.00 # en-tête FROM/TO au-dessus des paires
from_label_text: "FROM"
to_label_text: "TO"
arrow_x_offset_cm: 7.50
- id: summary_box
component: C13
left_cm: 24.00
top_cm: 5.00
width_cm: 8.87
height_cm: 7.00
overlap: true # le box déborde légèrement sur pairs_area
json_schema:
required:
- titre
- pairs
optional:
- sous_titre
- description
- titre_summary
- summary
constraints:
pairs_min: 2
pairs_max: 5
pair_schema:
required: [from, to]
from_max_chars: 60
to_max_chars: 60
description_max_chars: 200
summary_max_chars: 150
# ---------------------------------------------------------------------------
# L19 — boxes_grid
# ---------------------------------------------------------------------------
boxes_grid:
id: L19
famille: "Frameworks visuels"
source: "PR Template p.17"
roles_narratifs: [preuve, contexte]
agent_hint: >
Matrice analytique dense. Colonne label (wheat yellow) + colonne KPI
+ 3-4 colonnes de contenu. Pour analyse multi-critères, roadmap détaillée,
ou comparaison de scenarios.
background:
component: C01
color: "#ffffff"
signature:
accent_bar: true
logo_topbar: true
footer: true
title_zone:
component: C02
left_cm: 1.80
top_cm: 0.45
width_cm: 30.00
height_cm: 1.90
content_zones:
- id: grid
component: C11
type: boxes_grid_variant # variante avec col label wheat + col KPI
left_cm: 1.50
top_cm: 2.50
width_cm: 30.87
height_cm: 15.15
label_col_width_cm: 4.50
kpi_col_width_cm: 2.00
header_height_cm: 0.70
row_height_cm: 2.80
json_schema:
required:
- titre
- columns
- rows
optional:
- sous_titre
constraints:
columns_min: 3
columns_max: 5
rows_min: 2
rows_max: 5
column_max_chars: 25
row_schema:
required: [label, kpi, contents]
label_max_chars: 30
kpi_max_chars: 8
content_max_chars: 80
# ===========================================================================
# FAMILLE 5 — PROCESS & ROADMAP (L20-L24)
# ===========================================================================
# ---------------------------------------------------------------------------
# L20 — numbered_steps
# ---------------------------------------------------------------------------
numbered_steps:
id: L20
famille: "Process & roadmap"
source: "Data Awareness V2 p.10"
roles_narratifs: [solution, methodologie]
agent_hint: >
Étapes numérotées verticalement. Idéal pour méthodologie, bonnes pratiques,
checklist d'implémentation. Titre de step = verbe d'action.
Description = résultat attendu, pas la procédure.
background:
component: C01
color: "#ffffff"
signature:
accent_bar: true
logo_topbar: true
footer: true
title_zone:
component: C02
left_cm: 1.80
top_cm: 0.45
width_cm: 30.00
height_cm: 1.90
content_zones:
- id: steps
component: C19
left_cm: 1.50
top_cm: 2.80
width_cm: 30.87
height_cm: 14.85
badge_left_cm: 0.00
title_left_cm: 1.20
desc_left_cm: 1.20
json_schema:
required:
- titre
- steps
optional:
- sous_titre
constraints:
steps_min: 2
steps_max: 6
step_schema:
required: [numero, titre]
optional: [description]
titre_max_chars: 50
description_max_chars: 120
# ---------------------------------------------------------------------------
# L21 — process_arrow
# ---------------------------------------------------------------------------
process_arrow:
id: L21
famille: "Process & roadmap"
source: "Best practice 03"
roles_narratifs: [solution, next-steps]
agent_hint: >
Chevrons horizontaux pour une roadmap phasée. Étape active = dark blue.
Dernier chevron = triangle fermé (→). Bullets sous chaque phase.
Max 5 étapes. Pas de numéro dans les labels.
background:
component: C01
color: "#ffffff"
signature:
accent_bar: true
logo_topbar: true
footer: true
title_zone:
component: C02
left_cm: 1.80
top_cm: 0.45
width_cm: 30.00
height_cm: 1.90
content_zones:
- id: chevrons
component: C20
left_cm: 0.50
top_cm: 2.90
width_cm: 32.87
chevron_height_cm: 1.00
bullets_top_cm: 4.20 # bullets commencent ici sous les chevrons
bullets_height_cm: 11.00
json_schema:
required:
- titre
- phases
optional:
- sous_titre
constraints:
phases_min: 2
phases_max: 5
phase_schema:
required: [label]
optional: [duree, actif, bullets, terminal]
label_max_chars: 20
duree_max_chars: 15
bullets_max: 4
bullet_max_chars: 60
# ---------------------------------------------------------------------------
# L22 — gantt_timeline
# ---------------------------------------------------------------------------
gantt_timeline:
id: L22
famille: "Process & roadmap"
source: "Best practice 03 p.2.1"
roles_narratifs: [next-steps, solution]
agent_hint: >
Gantt simplifié. Workstreams à gauche (optionnel), barres colorées sur
la timeline. Une couleur par workstream. Dates au format YYYY-MM.
Idéal pour présenter une roadmap opérationnelle sur 6-12 mois.
background:
component: C01
color: "#ffffff"
signature:
accent_bar: true
logo_topbar: true
footer: true
title_zone:
component: C02
left_cm: 1.80
top_cm: 0.45
width_cm: 30.00
height_cm: 1.90
content_zones:
- id: gantt
component: C21
left_cm: 1.50
top_cm: 2.80
width_cm: 30.87
height_cm: 14.85
label_col_width_cm: 5.50 # colonne labels workstream (optionnelle)
header_height_cm: 0.60 # ligne des mois
workstream_height_cm: 2.80 # hauteur par workstream (2 lignes max)
label_optional: true
json_schema:
required:
- titre
- period
- workstreams
optional:
- sous_titre
constraints:
period_schema:
required: [start, end]
format: "YYYY-MM"
workstreams_min: 1
workstreams_max: 5
workstream_schema:
optional: [label]
required: [tasks]
label_max_chars: 30
tasks_min: 1
tasks_max: 4
task_schema:
required: [start, end]
optional: [label, couleur, row]
# ---------------------------------------------------------------------------
# L23 — yearly_timeline
# ---------------------------------------------------------------------------
yearly_timeline:
id: L23
famille: "Process & roadmap"
source: "PR Template p.37"
roles_narratifs: [contexte]
agent_hint: >
Timeline horizontale de jalons annuels. Idéal pour historique ou prospective.
Jalon actif en rose. Labels années au-dessus, descriptions courtes en dessous.
Ne pas mettre plus de 6 jalons pour garder la lisibilité.
background:
component: C01
color: "#ffffff"
signature:
accent_bar: true
logo_topbar: true
footer: true
title_zone:
component: C02
left_cm: 1.80
top_cm: 0.45
width_cm: 30.00
height_cm: 1.90
content_zones:
- id: timeline
component: C22
left_cm: 1.50
top_cm: 2.80
width_cm: 30.87
height_cm: 14.85
axis_y_cm: 10.00 # position de l'axe horizontal
milestones_spacing: auto # espacement calculé automatiquement
json_schema:
required:
- titre
- milestones
optional:
- sous_titre
constraints:
milestones_min: 3
milestones_max: 6
milestone_schema:
required: [annee, label]
optional: [description, actif]
annee_max_chars: 10
label_max_chars: 40
description_max_chars: 80
# ---------------------------------------------------------------------------
# L24 — phases_timeline
# ---------------------------------------------------------------------------
phases_timeline:
id: L24
famille: "Process & roadmap"
source: "Data Days 2022 p.7"
roles_narratifs: [solution, methodologie]
agent_hint: >
Timeline en phases horizontales contiguës. Largeur proportionnelle à la durée.
Chaque phase = un bandeau coloré + période + livrables en bullets.
Pour projets séquentiels avec chevauchements possibles.
background:
component: C01
color: "#ffffff"
signature:
accent_bar: true
logo_topbar: true
footer: true
title_zone:
component: C02
left_cm: 1.80
top_cm: 0.45
width_cm: 30.00
height_cm: 1.90
content_zones:
- id: phase_bars
component: C22
type: phases_variant # variante : bandes contiguës horizontales
left_cm: 1.50
top_cm: 2.80
width_cm: 30.87
phase_bar_height_cm: 0.65
period_row_height_cm: 0.50
bullets_area_top_cm: 4.20
bullets_area_height_cm: 10.00
json_schema:
required:
- titre
- phases
optional:
- sous_titre
constraints:
phases_min: 2
phases_max: 5
phase_schema:
required: [label, periode]
optional: [items]
label_max_chars: 15
periode_max_chars: 15
items_max: 4
item_max_chars: 60
# ===========================================================================
# FAMILLE 6 — ACTEURS & DÉCISION (L25-L28)
# ===========================================================================
# ---------------------------------------------------------------------------
# L25 — org_chart
# ---------------------------------------------------------------------------
org_chart:
id: L25
famille: "Acteurs & décision"
source: "Best practice 03 (Operating model)"
roles_narratifs: [acteurs, contexte]
agent_hint: >
Organigramme hiérarchique. Niveau 1 = leadership (dark blue).
Nœuds distribués automatiquement. Max 4 niveaux, max 20 nœuds total.
Utile pour présenter le modèle opérationnel Data Governance.
background:
component: C01
color: "#ffffff"
signature:
accent_bar: true
logo_topbar: true
footer: true
title_zone:
component: C02
left_cm: 1.80
top_cm: 0.45
width_cm: 30.00
height_cm: 1.90
content_zones:
- id: org_tree
component: C23
left_cm: 1.50
top_cm: 2.80
width_cm: 30.87
height_cm: 14.85
layout_algorithm: top_down # distribution automatique top-down
node_min_width_cm: 2.50
node_height_cm: 0.65
level_gap_cm: 1.20
json_schema:
required:
- titre
- root
optional:
- sous_titre
constraints:
max_total_nodes: 20
max_levels: 4
node_schema:
required: [label]
optional: [sous_label, children]
label_max_chars: 35
sous_label_max_chars: 30
# ---------------------------------------------------------------------------
# L26 — raci_table
# ---------------------------------------------------------------------------
raci_table:
id: L26
famille: "Acteurs & décision"
source: "Standard project management"
roles_narratifs: [acteurs, solution]
agent_hint: >
Matrice RACI. Tâches en lignes, acteurs en colonnes header (R/A/C/I).
R = Responsible (fait), A = Accountable (décide), C = Consulté, I = Informé.
Chaque tâche a exactement 1 R et 1 A. Pas de cellule vide obligatoire pour C/I.
background:
component: C01
color: "#ffffff"
signature:
accent_bar: true
logo_topbar: true
footer: true
title_zone:
component: C02
left_cm: 1.80
top_cm: 0.45
width_cm: 30.00
height_cm: 1.90
content_zones:
- id: raci_grid
component: C24
left_cm: 1.50
top_cm: 2.80
width_cm: 30.87
height_cm: 14.85
task_col_width_cm: 8.00
role_col_width_cm: auto # distribué sur le reste
json_schema:
required:
- titre
- roles
- tasks
optional:
- sous_titre
constraints:
roles_min: 3
roles_max: 6
tasks_min: 2
tasks_max: 8
role_max_chars: 25
task_schema:
required: [label, raci]
label_max_chars: 50
raci_values: ["R", "A", "C", "I", ""]
# ---------------------------------------------------------------------------
# L27 — decision_tree
# ---------------------------------------------------------------------------
decision_tree:
id: L27
famille: "Acteurs & décision"
source: "Best practice 02 p.16"
roles_narratifs: [decision, solution]
agent_hint: >
Arbre de décision binaire. Question centrale → 2 branches YES/NO
→ 2 options par branche. Branche recommandée en rose.
Pour structurer un arbitrage stratégique avec ses implications concrètes.
background:
component: C01
color: "#ffffff"
signature:
accent_bar: true
logo_topbar: true
footer: true
title_zone:
component: C02
left_cm: 1.80
top_cm: 0.45
width_cm: 30.00
height_cm: 1.90
content_zones:
- id: decision_tree
component: C25
left_cm: 1.50
top_cm: 2.80
width_cm: 30.87
height_cm: 14.85
question_node:
width_cm: 6.00
height_cm: 3.00
left_cm: 1.50 # relatif à la zone
center_y_cm: 7.40
branch_node:
width_cm: 5.50
height_cm: 2.50
option_node:
width_cm: 5.00
height_cm: 1.60
json_schema:
required:
- titre
- question
- branches
optional:
- sous_titre
constraints:
question_max_chars: 80
branches_schema:
required: [yes, no]
branch_schema:
required: [label, options]
label_max_chars: 60
options_min: 1
options_max: 2
option_max_chars: 60
# ---------------------------------------------------------------------------
# L28 — recommendation_card
# ---------------------------------------------------------------------------
recommendation_card:
id: L28
famille: "Acteurs & décision"
source: "Best practice 02 p.14 (Fewer.Better)"
roles_narratifs: [solution, decision, next-steps]
agent_hint: >
Carte de recommandation unique et cadrée. Sidebar gauche jaune =
numéro + titre court + résumé + CTA. Corps droit = headline + bullets détaillés.
Format "Fewer. Better." — une recommandation précise par slide.
background:
component: C01
color: "#ffffff"
signature:
accent_bar: false # la sidebar remplace la barre d'accent
logo_topbar: false
footer: true
title_zone: null # le titre est dans la sidebar (numero + titre)
content_zones:
- id: sidebar
component: C26
left_cm: 0.00
top_cm: 0.00
width_cm: 8.00
height_cm: 18.35 # pleine hauteur (hors footer)
- id: main_header
type: header_band
left_cm: 8.50
top_cm: 1.00
width_cm: 24.87
height_cm: 1.20
background: "theme.colors.primary.dark_blue"
text_color: "#ffffff"
font: "theme.typography.body"
size_pt: 11
bold: true
letter_spacing: 0.15 # style "FEWER. BETTER."
- id: main_content
component: C06
left_cm: 8.50
top_cm: 2.50
width_cm: 24.37
height_cm: 14.85
json_schema:
required:
- numero
- titre
- headline
- bullets
optional:
- subtitle
- resume
- cta
constraints:
numero_type: integer
numero_min: 1
numero_max: 9
titre_max_chars: 30
headline_max_chars: 40
bullets_min: 2
bullets_max: 6
bullet_max_chars: 100
resume_max_chars: 120
cta_max_chars: 30