/**
* IRPF — Workflow de production d'une fiche thème ultra-approfondie
*
* Usage : Workflow({ scriptPath: '...build-theme.js', args: { slug: 'education', label: 'Éducation & Formation' } })
*
* Structure produite (9 sections) :
* 1. Diagnostic → état actuel, chiffres clés, paradoxes
* 2. Historique → Timeline 30 ans de réformes
* 3. Enjeux → Structurel / Politique / Conjoncturel (3 couches visuelles)
* 4. International → Comparatifs UE/OCDE + recommandations institutionnelles
* 5. Opinion → Sondages Eurobaromètre, CEVIPOF, presse
* 6. Acteurs → Cartographie décisionnaires, think tanks, corps intermédiaires
* 7. Propositions → Partis + institutionnelles + IRPF originales
* 8. Scénarios 2027-2032 → 3 scénarios avec probabilités
* 9. Sources → Bibliographie complète
*/
export const meta = {
name: 'irpf-build-theme',
description: 'Produit une fiche thème IRPF ultra-approfondie — 9 sections, composants visuels, deep research multi-sources',
phases: [
{ title: 'Collecte internationale', detail: 'OCDE, UE, FMI, OMS, OIT, GIEC, V-Dem, etc.' },
{ title: 'Collecte nationale', detail: 'INSEE, Cour des comptes, think tanks FR, DREES, etc.' },
{ title: 'Opinion & acteurs', detail: 'Eurobaromètre, CEVIPOF, cartographie institutionnelle' },
{ title: 'Historique & enjeux', detail: 'Timeline réformes 30 ans + 3 couches (structurel/politique/conj.)' },
{ title: 'Synthèse Opus', detail: 'Diagnostic de niveau Cour des comptes × OCDE' },
{ title: 'Propositions Opus', detail: 'Programme IRPF 2027-2032, fondé sur benchmarks pays' },
{ title: 'Lecture politique', detail: 'Partis, blocages, fenêtres, séquence réforme' },
{ title: 'Production MDX', detail: 'Fichier complet prêt à déployer' },
],
};
// ─── CONFIGURATION PAR THÈME ─────────────────────────────────────────────────
const THEME_CONFIG = {
'economie-finances': {
ordre: 1, priorite: 'critique', budget_milliards: 492, effectifs: 0,
kpi_label: 'Dette publique / PIB',
sources_intl: ['FMI Article IV France 2024', 'OCDE Études économiques France 2024', 'Commission européenne Country Report France 2024', 'Eurostat finances publiques', 'BRI statistiques bancaires France', 'HCFP avis 2024-2025'],
sources_fr: ['INSEE comptes nationaux 2024', 'Banque de France projections 2025', 'Cour des comptes situation finances publiques 2024', 'CAE notes récentes', 'iFRAP études fiscales', 'Institut Montaigne économie', 'France Stratégie économie'],
sources_opinion: ['IFOP baromètre fiscalité', 'CREDOC niveau de vie 2024', 'Eurobaromètre économie France 2024', 'IFOP confiance économique'],
indicateurs_cibles: ['déficit public %PIB', 'dette publique %PIB', 'dépenses publiques %PIB', 'prélèvements obligatoires %PIB', 'croissance PIB', 'charge de la dette milliards', 'rang compétitivité WEF', 'taux chômage', 'inflation'],
angles_specifiques: ['trajectoire dette 2030-2035 scénarios FMI', 'espace budgétaire réel réformes possibles', 'comparaison fiscalité Zone Euro détail', 'réforme fiscale OCDE Pilier 2 impact France'],
think_tanks: ['iFRAP', 'Institut Montaigne', 'CAE', 'OFCE', 'Terra Nova', 'Fondapol', 'France Stratégie'],
partis: ['LFI', 'PS', 'EELV', 'Renaissance', 'LR', 'RN'],
timeline_periodes: ['Traité de Maastricht 1992', 'Réforme Jospin 35h 2000', 'Crise 2008-2009', 'Réforme fiscale Hollande 2012', 'Pacte responsabilité 2014', 'Macron CICE/baisses IS 2017-2022', 'COVID déficit record 2020', 'Inflation et remontée taux 2022-2024'],
},
'sante': {
ordre: 2, priorite: 'critique', budget_milliards: 260, effectifs: 1100000,
kpi_label: 'Médecins / 1 000 hab.',
sources_intl: ['OCDE Health at a Glance 2023-2024', 'OMS WHO Euro Health Observatory France 2024', 'Commission UE Country Health Profile France 2023', 'Eurostat santé SILC', 'IRDES études comparatives'],
sources_fr: ['DREES Panorama santé 2025', 'Haut Conseil de la Santé Publique', 'Cour des comptes santé 2024-2025', 'Institut Montaigne santé', 'Terra Nova santé', 'Fédération Hospitalière de France'],
sources_opinion: ['Eurobaromètre santé mentale 2023', 'Eurobaromètre cancer 2024', 'IFOP confiance système de santé 2024', 'CEVIPOF baromètre confiance hôpital', 'Elabe perception déserts médicaux'],
indicateurs_cibles: ['espérance de vie', 'dépenses santé %PIB', 'médecins pour 1000 hab', 'généralistes pour 1000 hab', 'lits hospitaliers pour 1000', 'déficit hôpitaux milliards', 'délais attente', '% territoires déserts médicaux'],
angles_specifiques: ['démographie médicale 2025-2032 projections', 'comparaison systèmes UE Bismarck vs Beveridge', 'performance hospitalière financement T2A alternatives', 'prévention vs curatif investissement comparé'],
think_tanks: ['Institut Montaigne', 'Terra Nova', 'IRDES', 'Fondation de l\'Avenir', 'IFRAP santé'],
partis: ['LFI', 'PS', 'EELV', 'Renaissance', 'LR', 'RN'],
timeline_periodes: ['Loi Évin 1991', 'Plan Juppé 1995-1996', 'CMU 1999', 'Loi HPST Bachelot 2009', 'Pacte territoire-santé 2012-2017', 'Ségur de la Santé 2020', 'Suppression numerus clausus 2019', 'Loi Valletoux 2023'],
},
'education': {
ordre: 3, priorite: 'haute', budget_milliards: 168, effectifs: 1000000,
kpi_label: 'Score PISA (mathématiques)',
sources_intl: ['OCDE PISA 2022 France résultats', 'OCDE TALIS 2018-2024 France enseignants', 'OCDE Education at a Glance 2023 France', 'UNESCO UIS France données', 'Commission UE Education Monitor France 2023'],
sources_fr: ['DEPP statistiques éducation 2024', "Conseil d'évaluation de l'école CEE", 'Cour des comptes éducation 2022-2024', 'Institut Montaigne éducation', 'Terra Nova école', 'Ifrap éducation'],
sources_opinion: ['Eurobaromètre confiance enseignement France', 'IFOP parents satisfaction école 2024', 'CEVIPOF confiance institutions éducatives', 'Ipsos perception inégalités scolaires'],
indicateurs_cibles: ['score PISA maths', 'score PISA lecture', 'score PISA sciences', 'décrochage scolaire %', 'inégalités PISA entre écoles', 'dépenses par élève primaire/secondaire', 'taux scolarisation 3 ans', 'taux réussite bac'],
angles_specifiques: ['reproduction sociale mesure OCDE vs France', 'comparaison Finlande Estonie Canada méthodes pédagogiques', 'réforme lycée Blanquer impact mesuré', 'formation initiale et continue enseignants comparée'],
think_tanks: ['Institut Montaigne', 'Terra Nova', 'Fondapol', 'Les Échos Études', "Conseil d'évaluation de l'école"],
partis: ['LFI', 'PS', 'EELV', 'Renaissance', 'LR', 'RN'],
timeline_periodes: ['Loi Haby 1975 collège unique', 'Loi Jospin 1989 enfant au centre', 'Réforme Allègre 1997-2000', 'Loi Fillon 2005 socle commun', 'Rythmes scolaires 2013', 'Réforme lycée Blanquer 2019', 'Choc des savoirs Attal 2024'],
},
'environnement': {
ordre: 4, priorite: 'critique', budget_milliards: 40, effectifs: 0,
kpi_label: 'Réduction émissions vs 1990',
sources_intl: ['GIEC AR6 impacts France régionaux', 'CCNUCC NDC France trajectoire', 'AIE France Energy Policy 2023', 'IRENA France renouvelables', 'Commission UE Fit for 55 France état', 'Eurostat environnement'],
sources_fr: ['ADEME bilan carbone France 2024', 'SDES données environnement', 'Haut Conseil pour le Climat rapport 2024', 'Cour des comptes transition énergétique', 'I4CE baromètre investissement vert', 'Institut Rousseau'],
sources_opinion: ['Eurobaromètre attitude changement climatique France 2024', 'IFOP perception urgence climatique 2024', 'CREDOC comportements éco-responsables', 'CEVIPOF vote vert'],
indicateurs_cibles: ['émissions CO2 France MtCO2e', 'réduction vs 1990 %', 'part renouvelables % mix', 'objectif 2030 écart trajectoire', 'investissement vert milliards', 'artificialisation sols ha/an', 'indice biodiversité'],
angles_specifiques: ['coût inaction climatique France 2030-2050 chiffré', 'gap financement transition verte 2030', 'justice climatique impacts inégaux', 'comparaison Allemagne Energiewende et leçons'],
think_tanks: ['I4CE', 'Institut Rousseau', 'Haut Conseil pour le Climat', 'IDDRI', 'ADEME', 'France Stratégie'],
partis: ['LFI', 'PS', 'EELV', 'Renaissance', 'LR', 'RN'],
timeline_periodes: ['Loi Grenelle I 2009', 'COP21 Paris 2015', 'Loi transition énergétique 2015', 'Plan Climat 2017', 'Convention citoyenne 2020', 'Loi Climat et Résilience 2021', 'REPowerEU et crise énergie 2022', 'Planification écologique 2023'],
},
'defense': {
ordre: 5, priorite: 'haute', budget_milliards: 47, effectifs: 210000,
kpi_label: 'Budget défense % PIB',
sources_intl: ['OTAN dépenses défense rapport 2024', 'SIPRI Military Expenditure France 2024', 'IISS Military Balance France 2024', 'ECFR France défense', 'Chatham House France sécurité'],
sources_fr: ['LPM 2024-2030 texte et bilan', 'FRS études', 'IRIS défense', 'IFRI sécurité', 'Cour des comptes défense 2023'],
sources_opinion: ['Eurobaromètre défense Europe France', 'IFOP soutien armée française', 'IFOP menaces perçues 2024', 'CEVIPOF confiance armée'],
indicateurs_cibles: ['% PIB défense', 'effectifs armées actifs', 'budget R&D défense milliards', 'OPEX budget annuel', 'budget dissuasion nucléaire', 'exports défense rang mondial', 'commandes DGA milliards'],
angles_specifiques: ['trajectoire 2% PIB OTAN 2025-2030 faisabilité', 'autonomie stratégique européenne PSDC', 'compétition technologique IA-défense France vs US/Chine', 'BITD Base Industrielle Technologique Défense compétitivité'],
think_tanks: ['IFRI', 'IRIS', 'FRS', 'IRSEM', 'Chatham House', 'ECFR'],
partis: ['LFI', 'PS', 'EELV', 'Renaissance', 'LR', 'RN'],
timeline_periodes: ['Fin service militaire 1996', 'Intervention Kosovo 1999', 'LPM 2003-2008', 'Livre Blanc 2008 réforme armées', 'Opération Serval Mali 2013', 'Attentats 2015 et Opération Barkhane', 'LPM 2019-2025', 'Guerre Ukraine 2022 réveil stratégique', 'LPM 2024-2030'],
},
'justice': {
ordre: 6, priorite: 'haute', budget_milliards: 11, effectifs: 90000,
kpi_label: 'Durée procédures civiles (mois)',
sources_intl: ['CEPEJ évaluation systèmes judiciaires Europe 2024 France', 'CEDH arrêts France 2023-2024', 'GRECO rapport France 5e cycle', 'Commission UE Tableau de bord justice 2024 France', 'Transparency International France'],
sources_fr: ['Ministère Justice statistiques 2024', 'Cour des comptes justice 2023', 'Syndicats magistrats USM SM', 'Institut Montaigne justice', 'CNB barreau'],
sources_opinion: ['Eurobaromètre confiance système judiciaire France', 'IFOP confiance tribunaux 2024', 'CREDOC accès au droit perçu', 'CEVIPOF confiance justice'],
indicateurs_cibles: ['durée procédures civiles mois', 'durée procédures pénales', 'budget justice %PIB', 'magistrats pour 100k hab', 'taux population carcérale pour 100k', 'condamnations CEDH annuelles', 'aide juridictionnelle bénéficiaires'],
angles_specifiques: ['indépendance judiciaire garanties constitutionnelles comparées', 'numérique judiciaire retard France vs UE', 'surpopulation carcérale solutions comparées', 'accès justice coûts barrières comparaison UE'],
think_tanks: ['Institut Montaigne', 'Fondapol', 'Terra Nova droit', 'IHEJ', 'Association Henri Capitant'],
partis: ['LFI', 'PS', 'EELV', 'Renaissance', 'LR', 'RN'],
timeline_periodes: ['Réforme CSM 1993', 'Loi Guigou présomption innocence 2000', 'Réforme carte judiciaire Dati 2008', 'Loi Taubira 2014 alternatives prison', 'Réforme Belloubet 2017-2019', 'Loi confiance institution judiciaire 2021', 'États généraux justice 2022', 'Plan justice 2023-2027'],
},
'affaires-etrangeres': {
ordre: 7, priorite: 'normale', budget_milliards: 3.2, effectifs: 14000,
kpi_label: 'APD / RNB %',
sources_intl: ['OCDE DAC aide France 2024', 'ECFR France foreign policy scorecard 2024', 'Brookings France global role', 'Chatham House France influence', 'SIPRI France multilatéral'],
sources_fr: ['MAE rapport annuel 2024', 'France Stratégie influence française', 'IRIS international', 'IFRI France global', 'Sénat Commission affaires étrangères'],
sources_opinion: ['Eurobaromètre politique étrangère France', 'IFOP image France monde', 'BVA confiance diplomatie française', 'CEVIPOF opinion internationale'],
indicateurs_cibles: ['APD %RNB', 'APD milliards', 'rang soft power Brand Finance', 'réseau diplomatique postes', 'contribution ONU %', 'exports défense rang', 'francophonie locuteurs millions'],
angles_specifiques: ['écart APD 0,7% RNB objectif trajectoire', 'influence France Afrique recomposition post-Sahel', 'diplomatie climatique leadership Paris Accord suivi', 'soft power culturel mesure comparaison'],
think_tanks: ['IFRI', 'IRIS', 'Institut Montaigne international', 'Fondapol global', 'European Council on Foreign Relations'],
partis: ['LFI', 'PS', 'EELV', 'Renaissance', 'LR', 'RN'],
timeline_periodes: ['Traité Maastricht 1992 PESC', 'Refus guerre Irak 2003', 'Retour OTAN commandement intégré 2009', 'Traité Lisbonne et SEAE 2009', 'Présidence française UE 2022', 'Retrait Mali/Burkina 2022-2023', 'Réinvestissement OTAN post-Ukraine 2022', 'Réorientation Indo-Pacifique 2022-2025'],
},
'travail-emploi': {
ordre: 8, priorite: 'critique', budget_milliards: 0, effectifs: 0,
kpi_label: 'Taux chômage %',
sources_intl: ['OCDE Employment Outlook France 2024', 'OIT France conventions et indicateurs', 'Commission UE Semestre européen emploi France 2024', 'Eurostat emploi France', 'OCDE retraites pension systems'],
sources_fr: ['DARES emploi activité 2024', 'INSEE enquête emploi', 'Cour des comptes emploi 2023-2024', 'CAE travail', 'France Stratégie emploi', 'COR rapport retraites 2024'],
sources_opinion: ['Eurobaromètre conditions travail France', 'IFOP bien-être au travail 2024', 'Malakoff Humanis baromètre QVT', 'CEVIPOF travail valeurs'],
indicateurs_cibles: ['taux chômage %', 'taux emploi 15-64 %', 'taux emploi 55-64 %', 'taux emploi jeunes %', 'coût travail comparatif', 'taux syndicalisation %', 'accidents travail taux', 'âge départ retraite effectif moyen'],
angles_specifiques: ['plein emploi 5% scenario trajectoire', 'retraites soutenabilité 2050 COR', 'flexisécurité danoise adaptation France', 'emploi seniors France vs Allemagne Suède'],
think_tanks: ['CAE', 'OFCE', 'Institut Montaigne travail', 'Terra Nova emploi', 'iFRAP social'],
partis: ['LFI', 'PS', 'EELV', 'Renaissance', 'LR', 'RN'],
timeline_periodes: ['35 heures Aubry 2000', 'CNE CPE 2005-2006 retrait', 'Accord compétitivité emploi 2013', 'Loi El Khomri 2016', 'Ordonnances travail Macron 2017', 'Réforme assurance chômage 2019-2022', 'Réforme retraites 2023', 'Plan plein emploi France Travail 2024'],
},
'logement': {
ordre: 9, priorite: 'critique', budget_milliards: 38, effectifs: 0,
kpi_label: 'Prix immobilier / revenu médian',
sources_intl: ['OCDE Affordable Housing France 2024', 'Commission UE logement abordable rapport 2024', 'UN-Habitat France urbanisation', 'Eurostat logement SILC'],
sources_fr: ['SDES logement statistiques 2024', 'Banque des Territoires rapport', 'ANCOLS HLM contrôle', 'Fondation Abbé Pierre mal-logement 2025', 'Institut Montaigne logement'],
sources_opinion: ['Eurobaromètre logement accès France', 'IFOP préoccupation logement 2024', 'Ipsos crise logement perçue', 'CREDOC dépenses logement contraintes'],
indicateurs_cibles: ['prix immobilier/revenu ratio', 'taux propriétaires %', 'stock HLM unités', 'mal logement personnes', 'sans-abri estimations', 'construction neuve logements/an', 'coût logement %revenu', 'taux vacance'],
angles_specifiques: ['choc offre diagnostic blocages ZAN permis', 'comparaison Allemagne Pays-Bas modèle locatif', 'ZAN artificialisation objectif 2050', 'rénovation thermique MaPrimeRénov impact mesuré'],
think_tanks: ['Institut Montaigne', 'Terra Nova', 'Fondation Abbé Pierre', 'iFRAP logement', 'FNAIM'],
partis: ['LFI', 'PS', 'EELV', 'Renaissance', 'LR', 'RN'],
timeline_periodes: ['Loi SRU 2000 20% HLM', 'Loi Boutin 2009', 'Loi ALUR Duflot 2014', 'Loi Elan 2018', 'ZAN loi Climat 2021', 'Crise hausse taux 2022-2023', 'Chute construction 2023-2024', 'Plan logement 2023 100 mesures'],
},
'agriculture': {
ordre: 10, priorite: 'haute', budget_milliards: 22, effectifs: 400000,
kpi_label: 'Exploitations viables (EBE/UTANS > 1,5 SMIC)',
sources_intl: ['FAO food security France', 'OCDE Agricultural Outlook 2024 France', 'Commission UE PAC France mise en oeuvre', 'Eurostat agri-statistiques France', 'IFPRI souveraineté alimentaire'],
sources_fr: ['Agreste statistiques 2024', 'INRAE publications', 'Chambres agriculture rapport', 'Cour des comptes PAC 2024', 'Syndicats FNSEA JA'],
sources_opinion: ['Eurobaromètre agriculture alimentation France', 'IFOP image agriculteurs 2024', 'CREDOC alimentation durable comportements', 'Ipsos souveraineté alimentaire'],
indicateurs_cibles: ['SAU millions ha', 'exploitations viables %', 'revenus agricoles moyens', 'part bio % SAU', 'pesticides usage kg/ha', 'balance agroalimentaire export', 'part auto-approvisionnement produits clés'],
angles_specifiques: ['renouvellement générations 50% départ retraite 2030', 'souveraineté alimentaire mesure produits critiques', 'PAC réforme 2023-2027 impact France', 'agri-écologie transition rendements comparés'],
think_tanks: ['INRAE', 'IDDRI agri', 'Fondation de France', 'Terra Nova agri', 'iFRAP agriculture'],
partis: ['LFI', 'PS', 'EELV', 'Renaissance', 'LR', 'RN'],
timeline_periodes: ['PAC réforme Mac Sharry 1992', 'Agenda 2000 PAC', 'Loi d\'orientation agricole 2006', 'PAC 2014-2020', 'Loi Alimentation EGAlim 2018', 'PAC 2021-2027', 'Crise agricole 2024 blocages routes', 'Plan souveraineté 2024'],
},
'numerique': {
ordre: 11, priorite: 'haute', budget_milliards: 9, effectifs: 0,
kpi_label: 'Score DESI (rang UE)',
sources_intl: ['OCDE Digital Economy Outlook 2024 France', 'Eurostat DESI 2024 France', 'Commission UE Digital Decade France', 'ITU IDI France', 'IMD World Digital Competitiveness'],
sources_fr: ['ARCEP état internet France 2024', 'DGE numérique', 'ANSSI cyber état', 'France Stratégie numérique', 'Institut Montaigne IA France'],
sources_opinion: ['Eurobaromètre confiance numérique France', 'IFOP usages numériques 2024', 'CREDOC fracture numérique', 'Ipsos intelligence artificielle perception'],
indicateurs_cibles: ['score DESI rang UE', 'couverture fibre % logements', 'couverture 5G % population', 'compétences numériques % adultes', 'startups licornes nombre', 'R&D IA investissement', 'démarches admin en ligne %', 'incidents cyber signalés'],
angles_specifiques: ['souveraineté numérique cloud français comparaison', 'IA France position vs US Chine UE stratégie', 'régulation vs innovation équilibre IA Act impact', 'fracture numérique géographique et générationnelle solutions'],
think_tanks: ['Institut Montaigne IA', 'Terra Nova numérique', 'Renaissance Numérique', 'Fondapol tech', 'Conseil National du Numérique'],
partis: ['LFI', 'PS', 'EELV', 'Renaissance', 'LR', 'RN'],
timeline_periodes: ['Plan numérique Jospin 1997', 'Loi LCEN 2004', 'France Très Haut Débit 2013', 'Loi République numérique 2016', 'Plan IA 1 Villani 2018', 'France Relance numérique 2020', 'Plan IA 2 2021', 'IA Act UE 2024', 'Plan IA 2030 Macron 2024'],
},
'cohesion-sociale': {
ordre: 12, priorite: 'haute', budget_milliards: 0, effectifs: 0,
kpi_label: 'Indice Gini (inégalités)',
sources_intl: ['OCDE Society at a Glance 2024 France', 'Commission UE Social Scoreboard France', 'Eurostat inégalités SILC', 'PNUD Rapport développement humain France', 'World Inequality Report France'],
sources_fr: ['INSEE pauvreté niveaux de vie 2024', 'ONPES rapport pauvreté', 'Observatoire des inégalités rapport 2024', 'Fondation Jean Jaurès mobilité sociale', 'Cour des comptes politique ville'],
sources_opinion: ['Eurobaromètre inégalités perçues France', 'IFOP ascenseur social 2024', 'CREDOC pauvreté ressentie', 'CEVIPOF confiance sociale'],
indicateurs_cibles: ['coefficient Gini', 'taux pauvreté % seuil 60%', 'taux pauvreté enfants %', 'mobilité sociale intergénérationnelle', 'inégalités territoriales revenus', 'discriminations emploi % signalées', 'mixité scolaire indice'],
angles_specifiques: ['immobilité sociale France comparaison OCDE EGO', 'quartiers prioritaires résultats politiques ville', 'comparaison pays nordiques mécanismes redistribution', 'discriminations systémiques mesure et solutions'],
think_tanks: ['OFCE', 'Terra Nova social', 'Institut Montaigne', 'Fondation Jean Jaurès', 'Observatoire des inégalités'],
partis: ['LFI', 'PS', 'EELV', 'Renaissance', 'LR', 'RN'],
timeline_periodes: ['Loi RMI 1988', 'CMU 1999', 'RSA Bachelot 2009', 'Quinquennat Hollande inégalités', 'Plan pauvreté Macron 2018', 'Revenu universel débat 2020', 'Inflation et pouvoir d\'achat 2022-2024', 'Plan France ruralités 2023'],
},
'democratie': {
ordre: 13, priorite: 'haute', budget_milliards: 0, effectifs: 0,
kpi_label: 'Score V-Dem démocratie libérale',
sources_intl: ['V-Dem France rapport 2024', 'Freedom House France 2024', 'GRECO France 5e cycle rapport', 'OCDE gouvernance publique France', 'Commission UE État de droit France 2024'],
sources_fr: ['CEVIPOF Baromètre confiance politique 2025', 'Transparency International France 2024', 'Fondapol démocratie', 'Terra Nova institutions', 'Sciences Po ENEF'],
sources_opinion: ['Eurobaromètre démocratie France', 'IFOP confiance institutions 2024', 'CEVIPOF abstention motivations', 'Ipsos défiance politique'],
indicateurs_cibles: ['score V-Dem', 'score liberté presse RSF', 'corruption perçue IPC', 'taux participation élections', 'taux abstention présidentielle', 'confiance Parlement %', 'confiance gouvernement %', 'représentation femmes Assemblée %'],
angles_specifiques: ['crise représentative France diagnostic comparé', 'proportionnelle vs majoritaire simulations', 'démocratie participative bilan conventions citoyennes', 'financement partis et conflits intérêts réforme'],
think_tanks: ['CEVIPOF', 'Fondapol', 'Terra Nova', 'Institut Montaigne', 'Transparency International'],
partis: ['LFI', 'PS', 'EELV', 'Renaissance', 'LR', 'RN'],
timeline_periodes: ['Cohabitation 1986-1988', 'Quinquennat référendum 2000', 'Le Pen au second tour 2002 choc', 'Traité de Lisbonne 2007', 'Mouvement Nuit Debout 2016', 'Gilets Jaunes 2018-2019', 'Grand Débat National 2019', 'Convention citoyenne climat 2020', 'Dissolution choc 2024'],
},
'europe': {
ordre: 14, priorite: 'haute', budget_milliards: 0, effectifs: 0,
kpi_label: 'Solde net contribution UE (Md€)',
sources_intl: ['Commission UE France bilan 2024', 'Eurobaromètre France attitude UE 2024', 'Bruegel France Europe analyse', 'ECFR France Europe scorecard', 'Institut Jacques Delors'],
sources_fr: ['SGAE bilan transposition', 'Institut Montaigne Europe', 'Notre Europe Jacques Delors Institut', 'IFRI Europe', 'Terra Nova Europe'],
sources_opinion: ['Eurobaromètre standard France attitude UE', 'IFOP soutien euro 2024', 'CEVIPOF vote européen motivations', 'Ipsos Europe perçue'],
indicateurs_cibles: ['solde net contribution UE milliards', 'soutien UE % opinion publique', 'transposition directives % délai', 'Français institutions EU %', 'participation élections européennes', 'infra-représentation Français Commission/PE', 'fonds UE absorbés %'],
angles_specifiques: ['influence France dans UE post-Brexit mesure', 'axe Paris-Berlin état 2024-2025', 'élargissement Balkans Ukraine impact France', 'autonomie stratégique défense PSDC réalité'],
think_tanks: ['Institut Montaigne', 'Institut Jacques Delors', 'IFRI', 'ECFR', 'Bruegel', 'Notre Europe'],
partis: ['LFI', 'PS', 'EELV', 'Renaissance', 'LR', 'RN'],
timeline_periodes: ['Maastricht 1992 référendum', 'Euro 2002', 'Référendum TCE Non 2005', 'Traité Lisbonne 2007', 'Crise zone euro 2010-2012', 'Brexit 2016-2020', 'Plan de relance NextGenerationEU 2021', 'Présidence française UE 2022', 'Élections européennes 2024'],
},
};
// ─── SCHÉMAS ─────────────────────────────────────────────────────────────────
const COLLECT_SCHEMA = {
type: 'object',
properties: {
source: { type: 'string' },
type: { type: 'string', enum: ['statistiques', 'rapport', 'recommandation', 'benchmark', 'etude'] },
donnees: {
type: 'array',
items: {
type: 'object',
properties: {
indicateur: { type: 'string' },
valeur: { type: 'string' },
annee: { type: 'string' },
tendance: { type: 'string', enum: ['hausse', 'baisse', 'stable', 'nd'] },
rang_comparatif: { type: 'string' },
url_source: { type: 'string' },
},
required: ['indicateur', 'valeur', 'annee'],
},
},
recommandations_france: { type: 'array', items: { type: 'string' } },
benchmarks: {
type: 'array',
items: {
type: 'object',
properties: {
pays: { type: 'string' },
mesure: { type: 'string' },
resultat_mesure: { type: 'string' },
source: { type: 'string' },
},
required: ['pays', 'mesure'],
},
},
url_principale: { type: 'string' },
date_publication: { type: 'string' },
},
required: ['source', 'type', 'donnees'],
};
const OPINION_SCHEMA = {
type: 'object',
properties: {
source: { type: 'string' },
sondages: {
type: 'array',
items: {
type: 'object',
properties: {
question: { type: 'string' },
pct: { type: 'number' },
reponse: { type: 'string' },
annee: { type: 'number' },
note: { type: 'string' },
comparaison: { type: 'string' },
},
required: ['question', 'pct', 'annee'],
},
},
evolution: { type: 'string' },
clivages: { type: 'string' },
},
required: ['source', 'sondages'],
};
// ─── WORKFLOW ─────────────────────────────────────────────────────────────────
const themeSlug = args?.slug || 'economie-finances';
const themeLabel = args?.label || 'Économie & Finances publiques';
const config = THEME_CONFIG[themeSlug] || THEME_CONFIG['economie-finances'];
log(`Démarrage fiche ultra-approfondie : ${themeLabel} (${config.sources_intl.length + config.sources_fr.length + config.sources_opinion.length} sources)`);
// ── PHASE 1 : Collecte internationale ─────────────────────────────────────────
phase('Collecte internationale');
const intlData = await parallel(
config.sources_intl.map(source => () =>
agent(
`Tu es un analyste expert des institutions internationales spécialisé sur la France.
SOURCE : ${source}
THÈME : ${themeLabel}
INDICATEURS CIBLÉS : ${config.indicateurs_cibles.join(' · ')}
Collecte EXHAUSTIVE pour cette source :
1. Toutes les données statistiques disponibles sur la France pour ce thème
(valeur exacte + unité, année, tendance 5 ans, position parmi pays OCDE/UE)
2. Toutes les recommandations explicites faites à la France sur 24 mois
3. Benchmarks : 3-5 pays qui font mieux que la France, avec le mécanisme précis et les résultats chiffrés
4. Points de désaccord ou de divergence avec d'autres institutions
5. Données en cours de collecte (prochaines publications)
Sois exhaustif, précis, sourcé. Cite les numéros de rapport et pages si possible.`,
{
label: `intl:${source.slice(0, 28)}`,
phase: 'Collecte internationale',
schema: COLLECT_SCHEMA,
model: 'sonnet',
}
).then(r => r ? { ...r, source } : null)
)
);
// ── PHASE 2 : Collecte nationale ─────────────────────────────────────────────
phase('Collecte nationale');
const frData = await parallel(
config.sources_fr.map(source => () =>
agent(
`Tu es un expert des politiques publiques françaises et de l'administration d'État.
SOURCE FRANÇAISE : ${source}
THÈME : ${themeLabel}
INDICATEURS : ${config.indicateurs_cibles.join(' · ')}
Pour cette source française :
1. Chiffres-clés les plus récents (valeur, année, tendance)
2. Principales conclusions du dernier rapport ou publication
3. Recommandations formulées, avec statut de mise en oeuvre connu
4. Débats internes ou divergences avec d'autres institutions françaises
5. Prochaines publications ou travaux annoncés
6. Données disponibles en open data (URL si possible)`,
{
label: `fr:${source.slice(0, 28)}`,
phase: 'Collecte nationale',
schema: COLLECT_SCHEMA,
model: 'sonnet',
}
).then(r => r ? { ...r, source } : null)
)
);
// ── PHASE 3 : Opinion & acteurs ───────────────────────────────────────────────
phase('Opinion & acteurs');
const [opinionData, acteursData, historiqueData] = await parallel([
// Opinion publique
() => parallel(
config.sources_opinion.map(source => () =>
agent(
`Tu es un expert de l'opinion publique française et des sondages politiques.
SOURCE SONDAGE : ${source}
THÈME : ${themeLabel}
Recherche les données d'opinion sur ce thème :
1. Questions précises posées aux Français (formulation exacte)
2. Pourcentages de réponses (favorable, satisfait, confiance, etc.)
3. Évolution sur 5-10 ans si disponible
4. Clivages sociodémographiques significatifs (âge, revenus, territoire, CSP)
5. Comparaison France vs UE27 si disponible (Eurobaromètre)
6. Confiance dans les institutions spécifiques du secteur`,
{
label: `opinion:${source.slice(0, 25)}`,
phase: 'Opinion & acteurs',
schema: OPINION_SCHEMA,
model: 'sonnet',
}
).then(r => r ? { ...r, source } : null)
)
),
// Cartographie des acteurs
() => agent(
`Tu es un politologue expert des politiques publiques françaises.
THÈME : ${themeLabel}
THINK TANKS PRINCIPAUX : ${config.think_tanks.join(', ')}
Cartographie complète des acteurs qui influencent la politique sur ce thème :
1. INSTITUTIONS DÉCISIONNAIRES
- Ministère(s) compétent(s) : rôle exact, budget, ministre actuel
- Agences / établissements publics : mission, tutelle, budget, effectifs
- Corps d'inspection : IGF, IGA, IGAS, etc. — rôle sur ce thème
- Instances consultatives : Conseil, Haut Comité, Comission nationale...
2. THINK TANKS — pour chacun : orientation politique, publications récentes sur ce thème, positions clés
Couvrir : ${config.think_tanks.join(', ')} + France Stratégie + OFCE + CAE
3. SYNDICATS ET FÉDÉRATIONS professionnelles actives sur ce thème
4. ACTEURS EUROPÉENS / INTERNATIONAUX influençant la politique française
Sois factuel et précis.`,
{
label: `acteurs:${themeSlug}`,
phase: 'Opinion & acteurs',
model: 'sonnet',
}
),
// Historique
() => agent(
`Tu es un historien des politiques publiques françaises depuis 1990.
THÈME : ${themeLabel}
PÉRIODES CLÉS IDENTIFIÉES : ${config.timeline_periodes.join(' | ')}
Produis une chronologie des réformes majeures sur ce thème depuis 1990.
Pour chaque événement / réforme :
- Année précise
- Titre court (max 8 mots)
- Description (2-3 phrases : contexte, contenu, impact mesuré)
- Impact : positif | negatif | neutre | majeur
Inclure :
- Les réformes législatives majeures
- Les crises et ruptures
- Les tournants décisifs
- Les réformes avortées significatives
Format de sortie : liste JSON d'objets {annee, titre, description, impact}`,
{
label: `historique:${themeSlug}`,
phase: 'Opinion & acteurs',
schema: {
type: 'object',
properties: {
items: {
type: 'array',
items: {
type: 'object',
properties: {
annee: { type: 'string' },
titre: { type: 'string' },
description: { type: 'string' },
impact: { type: 'string', enum: ['positif', 'negatif', 'neutre', 'majeur'] },
},
required: ['annee', 'titre', 'description'],
},
},
analyse: { type: 'string' },
},
required: ['items'],
},
model: 'sonnet',
}
),
]);
// ── PHASE 4 : Deep research sur angles spécifiques ───────────────────────────
phase('Historique & enjeux');
const deepResearch = await parallel(
config.angles_specifiques.map(angle => () =>
agent(
`Deep research expert sur les politiques publiques françaises.
ANGLE PRÉCIS : ${angle}
THÈME GÉNÉRAL : ${themeLabel}
Recherche exhaustive et sourcée sur cet angle :
- Données quantitatives récentes (avec sources précises)
- Études académiques ou institutionnelles de référence (titres, dates)
- Consensus et divergences institutionnelles
- Expériences internationales comparatives réussies (avec résultats mesurés)
- État du débat politique français
- Propositions concrètes documentées dans la littérature
- Points de controverse scientifique ou méthodologique`,
{
label: `deep:${angle.slice(0, 35)}`,
phase: 'Historique & enjeux',
model: 'sonnet',
}
)
)
);
const allData = [...intlData, ...frData].filter(Boolean);
const allStats = allData.flatMap(d => d.donnees || []);
const allReco = allData.flatMap(d => d.recommandations_france || []);
const allBenchmarks = allData.flatMap(d => d.benchmarks || []);
const allOpinion = (opinionData || []).filter(Boolean);
log(`Collecte terminée : ${allData.length} sources · ${allStats.length} indicateurs · ${allBenchmarks.length} benchmarks · ${allOpinion.length} sondages`);
// ── PHASE 5 : Synthèse Opus ───────────────────────────────────────────────────
phase('Synthèse Opus');
const synthesis = await agent(
`Tu es un expert senior des politiques publiques françaises — équivalent rapporteur Cour des comptes / économiste OCDE.
THÈME : ${themeLabel}
MATÉRIAU DISPONIBLE :
- ${allStats.length} indicateurs de ${allData.length} sources institutionnelles
- ${allReco.length} recommandations explicites à la France
- ${allBenchmarks.length} benchmarks de pays comparables
- ${deepResearch.filter(Boolean).length} analyses approfondies sur les angles spécifiques
DONNÉES STATISTIQUES :
${JSON.stringify(allStats.slice(0, 70), null, 2)}
RECOMMANDATIONS INSTITUTIONNELLES :
${allReco.slice(0, 50).join('\n')}
BENCHMARKS PAYS :
${JSON.stringify(allBenchmarks.slice(0, 30), null, 2)}
DEEP RESEARCH :
${deepResearch.filter(Boolean).slice(0, 4).join('\n\n---\n\n')}
PRODUIRE — SOIS EXHAUSTIF ET CHIFFRÉ :
1. DIAGNOSTIC (1 200-1 500 mots)
Le paradoxe ou la tension centrale de la France sur ce thème.
État des lieux complet, sourcé, avec positions internationale et nationale.
Chaque chiffre cite sa source (Institution, année).
Comparer systématiquement : Allemagne, Suède/Finlande, Royaume-Uni, Espagne, moyenne OCDE/UE.
2. INDICATEURS CLÉS (10-15 indicateurs)
Les plus significatifs : valeur France + source + année + tendance + comparaison OCDE.
3. ENJEUX STRUCTURELS (6-8 enjeux hiérarchisés)
Classification : immédiat / court-terme / moyen-terme / long-terme.
Pour chaque enjeu : description précise + sources + ampleur.
4. ENJEUX POLITIQUES (3-5 points de débat partisan)
Ce qui divise vraiment, avec les positions de chaque camp.
5. ENJEUX CONJONCTURELS (actualité 6 mois)
Décisions récentes, textes en cours, crises émergentes.
6. CONSENSUS INTERNATIONAL
Sur quoi TOUTES les institutions convergent.
7. DIVERGENCES ET INCERTITUDES
Points de désaccord entre institutions, controverses méthodologiques.
8. KPI PRINCIPAL À RETENIR (le plus parlant, avec valeur et tendance)`,
{
label: `synth:${themeSlug}`,
phase: 'Synthèse Opus',
schema: {
type: 'object',
properties: {
diagnostic: { type: 'string' },
indicateurs_cles: {
type: 'array',
items: {
type: 'object',
properties: {
label: { type: 'string' },
valeur: { type: 'string' },
source: { type: 'string' },
annee: { type: 'string' },
tendance: { type: 'string', enum: ['hausse', 'baisse', 'stable', 'nd'] },
comparaison_ocde: { type: 'string' },
},
required: ['label', 'valeur', 'source', 'tendance'],
},
},
enjeux_structurels: {
type: 'array',
items: {
type: 'object',
properties: {
titre: { type: 'string' },
description: { type: 'string' },
urgence: { type: 'string', enum: ['immediate', 'court-terme', 'moyen-terme', 'long-terme'] },
sources: { type: 'array', items: { type: 'string' } },
},
required: ['titre', 'description', 'urgence'],
},
},
enjeux_politiques: { type: 'array', items: { type: 'object', properties: { question: { type: 'string' }, camps: { type: 'string' } }, required: ['question'] } },
enjeux_conjoncturels: { type: 'string' },
consensus_international: { type: 'string' },
divergences: { type: 'string' },
kpi_principal: { type: 'object', properties: { valeur: { type: 'string' }, label: { type: 'string' }, tendance: { type: 'string' }, contexte: { type: 'string' } }, required: ['valeur', 'label'] },
sources_citees: { type: 'array', items: { type: 'string' } },
},
required: ['diagnostic', 'indicateurs_cles', 'enjeux_structurels', 'kpi_principal'],
},
model: 'opus',
}
);
// ── PHASE 6 : Propositions Opus ───────────────────────────────────────────────
phase('Propositions Opus');
const propositionsResult = await agent(
`Tu es un conseiller politique senior, expert du droit comparé et des politiques publiques françaises.
THÈME : ${themeLabel}
DIAGNOSTIC :
${synthesis?.diagnostic?.slice(0, 2000) || ''}
ENJEUX STRUCTURELS :
${JSON.stringify(synthesis?.enjeux_structurels || [], null, 2)}
RECOMMANDATIONS INSTITUTIONNELLES :
${allReco.slice(0, 40).join('\n')}
BENCHMARKS PAYS :
${JSON.stringify(allBenchmarks.slice(0, 25), null, 2)}
GÉNÈRE 7-9 propositions IRPF 2027-2032 :
CATÉGORIES :
- rupture (1-2) : réforme structurelle majeure, fort impact, nécessite consensus politique
- reformiste (3-4) : ajustement significatif, faisable 1-2 ans
- consolidation (1-2) : amplifier ce qui fonctionne, faible résistance
- experimentation (1) : pilote innovant dans 2-3 territoires/secteurs
POUR CHAQUE PROPOSITION, produire :
• Titre court et clair (mécanisme en sous-titre)
• Description complète (qui fait quoi, comment, calendrier)
• Fondement : quelle(s) institution(s) internationale(s) recommandent cette approche ?
• Pays référence : quel pays a mis ça en place, résultats chiffrés sur 5 ans
• Impact budgétaire : coût net première année, coût récurrent, gains attendus, horizon
• Obstacles politiques principaux et comment les contourner
• Quick win sans texte législatif ? (oui/non + quoi)
• Niveau de preuve (fort/modéré/émergent/expérimental)
Sois concret et chiffré. Évite le vague.`,
{
label: `prop:${themeSlug}`,
phase: 'Propositions Opus',
schema: {
type: 'object',
properties: {
propositions: {
type: 'array',
items: {
type: 'object',
properties: {
titre: { type: 'string' },
sous_titre: { type: 'string' },
categorie: { type: 'string', enum: ['rupture', 'reformiste', 'consolidation', 'experimentation'] },
description: { type: 'string' },
mecanisme: { type: 'string' },
fondement_international: { type: 'string' },
pays_reference: { type: 'array', items: { type: 'string' } },
impact_budgetaire: { type: 'string' },
obstacles: { type: 'array', items: { type: 'string' } },
quick_win: { type: 'boolean' },
niveau_preuve: { type: 'string', enum: ['fort', 'modere', 'emergent', 'experimental'] },
},
required: ['titre', 'categorie', 'description', 'fondement_international', 'niveau_preuve'],
},
},
synthese_irpf: { type: 'string' },
},
required: ['propositions'],
},
model: 'opus',
}
);
// ── PHASE 7 : Lecture politique ───────────────────────────────────────────────
phase('Lecture politique');
const politique = await agent(
`Tu es un politologue spécialisé dans la vie politique française 2024-2027.
THÈME : ${themeLabel}
PARTIS À ANALYSER : ${config.partis.join(', ')}
Analyse politique 2025-2027 :
1. Position et actions du gouvernement Bayrou sur ce thème (textes, discours, budget)
2. Position de chaque parti majeur : résumé 2 phrases + argument central + texte récent
Pour : ${config.partis.join(', ')}
3. Votes parlementaires significatifs récents sur ce thème
4. Fenêtres politiques dans les 24 mois (élections, présidences, crises, momentum)
5. Acteurs clés non-partisans : ministres, hauts fonctionnaires, syndicats, lobbys
— qui accélère, qui bloque, quel est leur levier
6. Blocages structurels : corporatismes, contraintes constitutionnelles, traités UE
7. Coalitions possibles pour faire avancer des réformes
8. Séquence optimale de mise en oeuvre (quick wins d'abord, réformes lourdes ensuite)`,
{
label: `pol:${themeSlug}`,
phase: 'Lecture politique',
schema: {
type: 'object',
properties: {
position_gouvernement: { type: 'string' },
positions_partis: {
type: 'array',
items: {
type: 'object',
properties: {
parti: { type: 'string' },
position: { type: 'string' },
argument: { type: 'string' },
texte_recent: { type: 'string' },
},
required: ['parti', 'position'],
},
},
votes_parlementaires: { type: 'array', items: { type: 'string' } },
fenetres_politiques: { type: 'array', items: { type: 'string' } },
acteurs_cles: {
type: 'array',
items: {
type: 'object',
properties: {
nom: { type: 'string' },
role: { type: 'string' },
influence: { type: 'string', enum: ['accelerateur', 'bloquant', 'neutre'] },
levier: { type: 'string' },
},
required: ['nom', 'role', 'influence'],
},
},
blocages: { type: 'array', items: { type: 'string' } },
coalitions: { type: 'array', items: { type: 'string' } },
sequence_optimale: { type: 'string' },
},
required: ['position_gouvernement', 'positions_partis', 'blocages'],
},
model: 'sonnet',
}
);
// ── PHASE 8 : Production MDX ─────────────────────────────────────────────────
phase('Production MDX');
const kpi = synthesis?.kpi_principal || { valeur: '—', label: config.kpi_label, tendance: 'stable' };
const mainOpinionSondage = allOpinion.flatMap(o => o?.sondages || []).find(s => s?.pct > 0);
const timelineItems = historiqueData?.items || [];
const frontmatter = `---
title: "${themeLabel}"
slug: "${themeSlug}"
description: "${synthesis?.diagnostic?.split('.')[0] || 'Diagnostic complet de la situation française.'}."
ordre: ${config.ordre}
priorite: "${config.priorite}"
${config.budget_milliards ? `budget_etat_milliards: ${config.budget_milliards}` : ''}
${config.effectifs ? `effectifs_publics: ${config.effectifs}` : ''}
kpi_valeur: "${kpi.valeur}"
kpi_label: "${kpi.label || config.kpi_label}"
kpi_tendance: "${['hausse','baisse','stable','critique','alerte'].includes(kpi.tendance) ? kpi.tendance : 'stable'}"
${kpi.contexte ? `kpi_contexte: "${kpi.contexte}"` : ''}
${mainOpinionSondage ? `opinion_pct: ${mainOpinionSondage.pct}
opinion_question: "${mainOpinionSondage.question?.replace(/"/g, "'")}"
opinion_source: "${mainOpinionSondage.annee > 0 ? (allOpinion[0]?.source || 'Sondage') : 'Sondage'}"
opinion_annee: ${mainOpinionSondage.annee}` : ''}
sections:
- diagnostic
- historique
- enjeux
- international
- opinion
- acteurs
- propositions
- scenarios
- sources
score_sources: ${allData.length}
nb_propositions: ${propositionsResult?.propositions?.length || 0}
tags: [${config.indicateurs_cibles.slice(0, 6).map(i => `"${i.replace(/[^a-zA-ZÀ-ÿ0-9 ]/g, '').trim().toLowerCase().replace(/ /g, '-')}"`).join(', ')}]
sources_data: [${[...new Set([...config.sources_intl.slice(0, 4).map(s => s.split(' ')[0]), ...config.sources_fr.slice(0, 3).map(s => s.split(' ')[0])])].map(s => `"${s}"`).join(', ')}]
derniere_maj: "2026-06"
---`;
const mdxContent = await agent(
`Tu es un rédacteur expert en politiques publiques. Génère le fichier MDX COMPLET de la fiche IRPF.
FRONTMATTER (inclure tel quel en premier) :
${frontmatter}
APRÈS LE FRONTMATTER, ajouter les imports :
import Structurel from '../../components/Structurel.astro';
import Politique from '../../components/Politique.astro';
import Conjoncturel from '../../components/Conjoncturel.astro';
import Kpi from '../../components/Kpi.astro';
import Sondage from '../../components/Sondage.astro';
import Timeline from '../../components/Timeline.astro';
MATÉRIAUX DISPONIBLES :
- Diagnostic : ${synthesis?.diagnostic?.slice(0, 3000) || '(non disponible)'}
- Indicateurs clés : ${JSON.stringify(synthesis?.indicateurs_cles || [], null, 2)}
- Enjeux structurels : ${JSON.stringify(synthesis?.enjeux_structurels || [], null, 2)}
- Enjeux politiques : ${JSON.stringify(synthesis?.enjeux_politiques || [], null, 2)}
- Enjeux conjoncturels : ${synthesis?.enjeux_conjoncturels || ''}
- Consensus international : ${synthesis?.consensus_international || ''}
- Propositions IRPF : ${JSON.stringify(propositionsResult?.propositions || [], null, 2)}
- Synthèse IRPF : ${propositionsResult?.synthese_irpf || ''}
- Positions partis : ${JSON.stringify(politique?.positions_partis || [], null, 2)}
- Fenêtres politiques : ${JSON.stringify(politique?.fenetres_politiques || [], null, 2)}
- Blocages : ${JSON.stringify(politique?.blocages || [], null, 2)}
- Acteurs clés : ${acteursData || ''}
- Sondages : ${JSON.stringify(allOpinion.flatMap(o => o?.sondages || []).slice(0, 8), null, 2)}
- Timeline items : ${JSON.stringify(timelineItems.slice(0, 15), null, 2)}
- Benchmarks pays : ${JSON.stringify(allBenchmarks.slice(0, 15), null, 2)}
- Sources citées : ${(synthesis?.sources_citees || []).join(', ')}
STRUCTURE MDX OBLIGATOIRE (respecter exactement l'ordre et les IDs d'ancres) :
## Diagnostic {#diagnostic}
[Texte complet du diagnostic : 800-1000 mots, sourcé, comparatif. Chaque chiffre cité entre parenthèses avec la source.]
### Indicateurs clés
[Composants pour les 8-12 indicateurs les plus significatifs]
### Tableau comparatif
[Tableau markdown France + 4-5 pays comparables, avec les indicateurs clés]
## Historique {#historique}
[Intro 1-2 phrases]
[Composant avec tous les items disponibles]
### Les tournants décisifs
[Analyse des 2-3 moments clés qui expliquent la situation actuelle]
## Enjeux {#enjeux}
[Intro : les trois couches de lecture]
### Contraintes de fond
[Enjeux structurels : les invariants, les contraintes profondes. LISTE à puces avec sources. 400-600 mots]
### Ce qui fait débat
[Tableau partis avec positions + arguments + textes récents. 300-400 mots]
### Actualité 2025-2026
[Décisions récentes, textes en cours, polémiques, état du débat. 200-300 mots]
## International {#international}
### Comparaison UE & OCDE
[Tableau : France + Allemagne + Suède + 2-3 autres pays + Moyenne UE — sur les 3-4 indicateurs principaux]
### Ce que recommandent les institutions
[OCDE · Commission UE · FMI · Cour des comptes · France Stratégie — une recommandation principale chacun]
### Bonnes pratiques — ce qui fonctionne ailleurs
[2-3 exemples concrets de pays avec résultats mesurés]
## Opinion {#opinion}
### Ce qu'en pensent les Français
[Composants pour les 3-5 sondages les plus significatifs]
### Évolution et clivages
[Tableau si données dispo + analyse des fractures sociodémographiques]
## Acteurs {#acteurs}
### Institutions décisionnaires
[Tableau : institution + rôle + budget + responsable actuel]
### Think tanks et experts
[Tableau : think tank + orientation + dernière publication sur le thème]
### Corps intermédiaires
[Syndicats, fédérations, organisations professionnelles — leur poids sur ce sujet]
## Propositions {#propositions}
> [Paragraphe de cadrage IRPF : philosophie et priorités]
[Pour chaque proposition : **Titre en gras** — catégorie en badge — description complète — pays référence — impact budgétaire]
### Cartographie des positions partisanes
[Tableau : parti + position + coût estimé]
## Scénarios 2027–2032 {#scenarios}
[3 scénarios : continuité (prob. XX%) · réforme graduelle (prob. XX%) · rupture (prob. XX%)]
[Pour chaque scénario : hypothèse + impact + conditions + risques]
## Sources {#sources}
[Bibliographie complète : institutions internationales + françaises + académiques. URL quand dispo.]
RÈGLES DE STYLE :
- Chaque chiffre = source entre parenthèses italiques
- Tables Markdown pour toutes comparaisons
- Composants MDX utilisés exactement comme dans les imports
- Ton : OCDE × Sciences Po × Le Monde — rigoureux, lisible, non partisan
- Longueur totale : 4000-6000 mots (sans le frontmatter)
Retourne le fichier MDX COMPLET, frontmatter inclus, prêt à sauvegarder.`,
{
label: `mdx:${themeSlug}`,
phase: 'Production MDX',
model: 'sonnet',
}
);
log(`Fiche ${themeLabel} produite — ${allData.length} sources · ${propositionsResult?.propositions?.length || 0} propositions · ${timelineItems.length} événements timeline`);
return {
slug: themeSlug,
label: themeLabel,
frontmatter,
stats: {
sources_internationales: intlData.filter(Boolean).length,
sources_nationales: frData.filter(Boolean).length,
sources_opinion: allOpinion.length,
indicateurs: synthesis?.indicateurs_cles?.length || 0,
enjeux_structurels: synthesis?.enjeux_structurels?.length || 0,
propositions: propositionsResult?.propositions?.length || 0,
timeline_events: timelineItems.length,
benchmarks: allBenchmarks.length,
},
kpi,
synthesis,
propositions: propositionsResult,
politique,
mdx: mdxContent,
};