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

1744 lines
45 KiB
YAML
Raw Normal View History

# =============================================================================
# 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