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