docs: workflows multiagents + cartographie sources institutionnelles
- workflows/build-theme.js : production complète d'une fiche thème (collecte intl + FR + deep research + synthèse Opus + propositions + politique + MDX) - workflows/build-all-themes.js : orchestration 14 thèmes en parallèle - docs/institutions-sources.md : cartographie exhaustive des sources mondiales pour la France (ONU, FMI, BM, OCDE, UE, Conseil Europe, G7/G20, think tanks, APIs) - docs/workflow-guide.md : guide d'utilisation et coûts estimés Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
07ccb222ae
commit
60a1523fe0
4 changed files with 955 additions and 0 deletions
195
docs/institutions-sources.md
Normal file
195
docs/institutions-sources.md
Normal file
|
|
@ -0,0 +1,195 @@
|
||||||
|
# Sources institutionnelles mondiales — IRPF
|
||||||
|
|
||||||
|
> Ces institutions sont des **sources de données, rapports et recommandations sur la France**.
|
||||||
|
> Elles alimentent le contenu du site, elles ne sont pas le sujet.
|
||||||
|
> Toutes produisent des analyses, indicateurs ou recommandations directement exploitables pour les 14 thèmes IRPF.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Système ONU
|
||||||
|
|
||||||
|
| Institution | Pertinence France | Type de production | URL données |
|
||||||
|
|------------|------------------|-------------------|-------------|
|
||||||
|
| PNUD | IDH France, rapport développement humain | Statistiques annuelles | hdr.undp.org |
|
||||||
|
| UNICEF | Pauvreté enfants France, éducation | Rapports pays | data.unicef.org |
|
||||||
|
| OMS | Santé France, comparaisons mondiales | WHO Global Health Observatory | who.int/data |
|
||||||
|
| OIT | Emploi, droit du travail, retraites France | ILOSTAT, rapports supervisory | ilostat.ilo.org |
|
||||||
|
| UNESCO | Éducation France, PISA, culture | UIS Statistics | uis.unesco.org |
|
||||||
|
| FAO | Agriculture France, sécurité alimentaire | FAOSTAT | fao.org/faostat |
|
||||||
|
| ONUDC | Justice, criminalité, drogues France | Rapports annuels | unodc.org/unodc/data |
|
||||||
|
| ONU Femmes | Égalité genre France | Indices, rapports | data.unwomen.org |
|
||||||
|
| UNEP | Environnement France, émissions | Stats environnementales | unep.org |
|
||||||
|
| CNUCED | Commerce France, investissements | UNCTADstat | unctadstat.unctad.org |
|
||||||
|
| HCR | Asile, réfugiés France | Stats réfugiés | unhcr.org/refugee-statistics |
|
||||||
|
|
||||||
|
## FMI & Banque mondiale
|
||||||
|
|
||||||
|
| Institution | Document clé pour la France | Fréquence | URL |
|
||||||
|
|------------|---------------------------|-----------|-----|
|
||||||
|
| **FMI** | Article IV France (diagnostic macro annuel) | Annuel | imf.org/fr/Publications |
|
||||||
|
| FMI | World Economic Outlook (données France) | Biannuel | imf.org/external/datamapper |
|
||||||
|
| FMI | Global Financial Stability Report | Biannuel | imf.org |
|
||||||
|
| **Banque mondiale** | World Development Indicators France | Annuel | data.worldbank.org |
|
||||||
|
| BM | Doing Business / Business Ready | Annuel | businessreadiness.worldbank.org |
|
||||||
|
| BM | Worldwide Governance Indicators | Annuel | info.worldbank.org/governance |
|
||||||
|
| **BRI** | Stats bancaires France | Trimestriel | bis.org/statistics |
|
||||||
|
|
||||||
|
## OCDE (source principale)
|
||||||
|
|
||||||
|
| Publication | Thèmes couverts | URL |
|
||||||
|
|------------|----------------|-----|
|
||||||
|
| **Études économiques France** | Macro, réformes structurelles | oecd.org/economy/france |
|
||||||
|
| **PISA** | Éducation 15 ans, comparatif | pisadataexplorer.oecd.org |
|
||||||
|
| TALIS | Enseignants, conditions travail | oecd.org/talis |
|
||||||
|
| Education at a Glance | Système éducatif complet | oecd.org/education/eag |
|
||||||
|
| **Health at a Glance** | Santé, dépenses, résultats | oecd.org/health |
|
||||||
|
| **Going for Growth** | Réformes prioritaires | oecd.org/economy/growth |
|
||||||
|
| Better Life Index | Bien-être, qualité de vie | oecdbetterlifeindex.org |
|
||||||
|
| **Revenue Statistics** | Fiscalité France | oecd.org/tax |
|
||||||
|
| Society at a Glance | Social, inégalités | oecd.org/social |
|
||||||
|
| Employment Outlook | Emploi, marché travail | oecd.org/employment |
|
||||||
|
| **OECD.Stat** | Toutes données OCDE France | stats.oecd.org |
|
||||||
|
| IEA (sous OCDE) | Énergie France, émissions CO2 | iea.org/countries/france |
|
||||||
|
|
||||||
|
## Institutions européennes
|
||||||
|
|
||||||
|
| Institution | Production pertinente | Fréquence |
|
||||||
|
|------------|----------------------|-----------|
|
||||||
|
| **Commission européenne** | Country Report France (Semestre européen) | Annuel |
|
||||||
|
| Commission | Recommandations spécifiques pays France | Annuel |
|
||||||
|
| Commission | Procédure de déficit excessif France | En cours |
|
||||||
|
| **Eurostat** | Toutes statistiques UE comparatives France | Continu |
|
||||||
|
| **BCE** | Politique monétaire, inflation zone euro | Continu |
|
||||||
|
| **BEI** | Investissements France, prêts sectoriels | Annuel |
|
||||||
|
| Cour des comptes européenne | Audits sectoriels (dont France) | Variable |
|
||||||
|
| Parlement européen | Rapports sectoriels, résolutions | Variable |
|
||||||
|
| **ECOFIN** | Positions budgétaires, recommandations | Variable |
|
||||||
|
|
||||||
|
## Conseil de l'Europe
|
||||||
|
|
||||||
|
| Institution | Document France | Importance |
|
||||||
|
|------------|----------------|-----------|
|
||||||
|
| **CEDH** | Arrêts contre la France | ★★★ — engagements juridiques |
|
||||||
|
| **GRECO** | Rapport anti-corruption France | ★★★ — niveau 4 |
|
||||||
|
| ECRI | Rapport racisme/discrimination France | ★★ |
|
||||||
|
| Commission de Venise | Avis sur lois françaises | ★★ |
|
||||||
|
| MONEYVAL | Évaluation LCB-FT France | ★★ |
|
||||||
|
| GRETA | Lutte traite êtres humains France | ★ |
|
||||||
|
|
||||||
|
## G7 / G20 / Groupes internationaux
|
||||||
|
|
||||||
|
| Instance | Pertinence | Type |
|
||||||
|
|---------|-----------|------|
|
||||||
|
| **G7** | France membre — engagements, déclarations | Engagements politiques |
|
||||||
|
| **G20** | Positions françaises, working groups | Engagements politiques |
|
||||||
|
| FSB | Stabilité financière France | Recommandations |
|
||||||
|
| **GAFI/FATF** | Évaluation mutuelle France LCB-FT | Évaluation contraignante |
|
||||||
|
| OCDE/G20 Pilier 2 | Impôt minimum mondial (France) | Normes fiscales |
|
||||||
|
| Club de Paris | Créancier France, dettes souveraines | Positions |
|
||||||
|
|
||||||
|
## Sécurité & Défense
|
||||||
|
|
||||||
|
| Institution | Production | URL |
|
||||||
|
|------------|-----------|-----|
|
||||||
|
| **OTAN** | Dépenses défense France (2% PIB) | nato.int/cps/statistics |
|
||||||
|
| **SIPRI** | Military Expenditure Database France | sipri.org/databases/milex |
|
||||||
|
| IISS | Military Balance France | iiss.org |
|
||||||
|
| OSCE | Conformité France | osce.org |
|
||||||
|
|
||||||
|
## Climat & Énergie
|
||||||
|
|
||||||
|
| Institution | Document France | URL |
|
||||||
|
|------------|----------------|-----|
|
||||||
|
| **CCNUCC/UNFCCC** | NDC France, bilan carbone | unfccc.int |
|
||||||
|
| **GIEC/IPCC** | AR6 impacts France | ipcc.ch |
|
||||||
|
| **AIE/IEA** | France Energy Policy Review | iea.org |
|
||||||
|
| IRENA | Énergies renouvelables France | irena.org |
|
||||||
|
| Copernicus (UE) | Données climatiques France | climate.copernicus.eu |
|
||||||
|
| **Cour des comptes** | Rapport politique climatique France | ccomptes.fr |
|
||||||
|
|
||||||
|
## Think tanks — Production sur la France
|
||||||
|
|
||||||
|
### Internationaux
|
||||||
|
| Think tank | Spécialité France | URL |
|
||||||
|
|-----------|------------------|-----|
|
||||||
|
| **Bruegel** | Économie UE, zone euro, France | bruegel.org |
|
||||||
|
| CEPS | Politiques européennes | ceps.eu |
|
||||||
|
| **ECFR** | Politique étrangère France | ecfr.eu |
|
||||||
|
| Chatham House | France géopolitique, diplomatie | chathamhouse.org |
|
||||||
|
| IISS | Défense France | iiss.org |
|
||||||
|
| Brookings | France économie, gouvernance | brookings.edu |
|
||||||
|
| Peterson Institute | Commerce France, macro | piie.com |
|
||||||
|
| Jacques Delors Institut | Europe, France | institutdelors.eu |
|
||||||
|
| Notre Europe | Intégration européenne | notre-europe.eu |
|
||||||
|
|
||||||
|
### Français (source primaire)
|
||||||
|
| Think tank | Spécialité | URL |
|
||||||
|
|-----------|-----------|-----|
|
||||||
|
| **Institut Montaigne** | Économie, éducation, santé, défense | institutmontaigne.org |
|
||||||
|
| **Terra Nova** | Social, environnement, démocratie | tnova.fr |
|
||||||
|
| **iFRAP** | Dépenses publiques, fonction publique | ifrap.org |
|
||||||
|
| **Fondapol** | Société, numérique, valeurs | fondapol.org |
|
||||||
|
| **Jean Jaurès** | Social, démocratie, travail | jean-jaures.org |
|
||||||
|
| **IFRI** | Relations internationales, défense | ifri.org |
|
||||||
|
| **IRIS** | Géopolitique, défense | iris-france.org |
|
||||||
|
| **FRS** | Stratégie, défense, nucléaire | frstrategie.org |
|
||||||
|
| **CAE** | Économie (Conseil d'Analyse Économique) | cae-eco.fr |
|
||||||
|
| **France Stratégie** | Prospective, politiques publiques | strategie.gouv.fr |
|
||||||
|
|
||||||
|
## Bases de données statistiques — accès direct
|
||||||
|
|
||||||
|
### API gratuites
|
||||||
|
```
|
||||||
|
INSEE API : api.insee.fr (SDMX)
|
||||||
|
Eurostat API : ec.europa.eu/eurostat/api/dissemination
|
||||||
|
OCDE.Stat : stats.oecd.org (SDMX)
|
||||||
|
World Bank API : api.worldbank.org/v2
|
||||||
|
FMI DataMapper : imf.org/external/datamapper/api
|
||||||
|
BRI SDMX : stats.bis.org
|
||||||
|
ILOSTAT : ilostat.ilo.org/resources/ilostat-api
|
||||||
|
WHO GHO API : ghoapi.azureedge.net
|
||||||
|
FAOSTAT API : fenix.fao.org/faostat/api
|
||||||
|
data.gouv.fr : www.data.gouv.fr/api
|
||||||
|
|
||||||
|
Banque de France : webstat.banque-france.fr (SDMX)
|
||||||
|
DREES : data.drees.sante.gouv.fr
|
||||||
|
DARES : dares.travail.gouv.fr/donnees
|
||||||
|
SDES : stats.developpement-durable.gouv.fr
|
||||||
|
Agreste (SSP) : agreste.agriculture.gouv.fr
|
||||||
|
DEPP : data.education.gouv.fr
|
||||||
|
ARCEP : data.arcep.fr
|
||||||
|
HCFP : hcfp.fr (PDF)
|
||||||
|
Cour des comptes : ccomptes.fr (PDF + données)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Bases thématiques
|
||||||
|
```
|
||||||
|
V-Dem : v-dem.net (démocratie)
|
||||||
|
Freedom House : freedomhouse.org/countries (libertés)
|
||||||
|
Transparency Intl : transparency.org/cpi (corruption)
|
||||||
|
SIPRI MILEX : sipri.org/databases/milex (défense)
|
||||||
|
UNDP HDI : hdr.undp.org/data-center (développement)
|
||||||
|
EIU : eiu.com (payant mais références)
|
||||||
|
WEF GCI : weforum.org/reports (compétitivité)
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Mapping thèmes → institutions prioritaires
|
||||||
|
|
||||||
|
| Thème IRPF | Institutions clés |
|
||||||
|
|-----------|------------------|
|
||||||
|
| Économie & Finances | FMI Art.IV, OCDE Études Éco, Commission UE Semestre, HCFP, Cour des comptes, CAE |
|
||||||
|
| Santé | OCDE Health at a Glance, OMS GHO, DREES, Haut Conseil Santé Publique |
|
||||||
|
| Éducation | OCDE PISA/TALIS/EAG, UNESCO UIS, DEPP, Cour des comptes |
|
||||||
|
| Environnement | GIEC, CCNUCC NDC, AIE, ADEME, SDES, Commission UE |
|
||||||
|
| Défense | OTAN, SIPRI, IISS, FRS, IRIS, LPM |
|
||||||
|
| Justice | CEDH (arrêts), GRECO, Commission UE État de droit, Min. Justice stats |
|
||||||
|
| Affaires étrangères | IFRI, ECFR, Chatham House, OCDE DAC (aide), MAE |
|
||||||
|
| Travail & Emploi | OIT, OCDE Employment Outlook, DARES, COR (retraites) |
|
||||||
|
| Logement | OCDE Housing, SDES, Banque des Territoires, UN-Habitat |
|
||||||
|
| Agriculture | FAO, Eurostat Agri, Agreste, OCDE Agricultural Outlook |
|
||||||
|
| Numérique | OCDE Digital, Eurostat DESI, ARCEP, DGE |
|
||||||
|
| Cohésion sociale | PNUD HDI, OCDE Society at a Glance, ONPES, INSEE ERF |
|
||||||
|
| Démocratie | V-Dem, Freedom House, GRECO, CEVIPOF, Baromètre confiance |
|
||||||
|
| Europe | Commission UE, Bruegel, ECFR, Jacques Delors, BCE |
|
||||||
119
docs/workflow-guide.md
Normal file
119
docs/workflow-guide.md
Normal file
|
|
@ -0,0 +1,119 @@
|
||||||
|
# Guide — Workflows de production IRPF
|
||||||
|
|
||||||
|
## Principe
|
||||||
|
|
||||||
|
Les workflows collectent automatiquement les sources internationales et françaises,
|
||||||
|
synthétisent avec Claude Opus, et produisent les fichiers MDX prêts à déployer.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Lancer la production d'UN thème (test/pilote)
|
||||||
|
|
||||||
|
Dans Claude Code, utiliser le Workflow tool :
|
||||||
|
|
||||||
|
```
|
||||||
|
Workflow({
|
||||||
|
scriptPath: '/Users/base/Code/30-projects/IRPF/workflows/build-theme.js',
|
||||||
|
args: { slug: 'sante', label: 'Santé & Système de soins' }
|
||||||
|
})
|
||||||
|
```
|
||||||
|
|
||||||
|
**Slugs disponibles :**
|
||||||
|
- `economie-finances`
|
||||||
|
- `sante`
|
||||||
|
- `education`
|
||||||
|
- `environnement`
|
||||||
|
- `defense`
|
||||||
|
- `justice`
|
||||||
|
- `affaires-etrangeres`
|
||||||
|
- `travail-emploi`
|
||||||
|
- `logement`
|
||||||
|
- `agriculture`
|
||||||
|
- `numerique`
|
||||||
|
- `cohesion-sociale`
|
||||||
|
- `democratie`
|
||||||
|
- `europe`
|
||||||
|
|
||||||
|
**Durée estimée par thème :** 8-15 min
|
||||||
|
**Coût estimé par thème :** 60-100k tokens
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Lancer la production complète (14 thèmes)
|
||||||
|
|
||||||
|
```
|
||||||
|
Workflow({
|
||||||
|
scriptPath: '/Users/base/Code/30-projects/IRPF/workflows/build-all-themes.js'
|
||||||
|
})
|
||||||
|
```
|
||||||
|
|
||||||
|
**Durée estimée :** 45-90 min (parallèle)
|
||||||
|
**Coût estimé :** 800k-1,5M tokens
|
||||||
|
|
||||||
|
### Lancer un sous-ensemble
|
||||||
|
|
||||||
|
```
|
||||||
|
Workflow({
|
||||||
|
scriptPath: '/Users/base/Code/30-projects/IRPF/workflows/build-all-themes.js',
|
||||||
|
args: { themes: ['sante', 'education', 'economie-finances'] }
|
||||||
|
})
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Ce que produit le workflow par thème
|
||||||
|
|
||||||
|
1. **Collecte internationale** — ~10 sources (FMI, OCDE, UE, ONU, think tanks intl)
|
||||||
|
2. **Collecte française** — ~8 sources (INSEE, Cour des comptes, think tanks FR)
|
||||||
|
3. **Deep research** — 3-4 angles spécifiques approfondis
|
||||||
|
4. **Synthèse Opus** — diagnostic 900-1200 mots + 10 indicateurs + 6 enjeux
|
||||||
|
5. **Propositions Opus** — 6-8 mesures détaillées avec mécanisme + budget + pays référence
|
||||||
|
6. **Lecture politique** — dynamiques 2025-2027, partis, blocages, fenêtres
|
||||||
|
7. **Fichier MDX** — prêt pour `src/content/themes/[slug].mdx`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Après le workflow : intégration dans le site
|
||||||
|
|
||||||
|
Le workflow retourne les fichiers MDX dans `result.mdx_files`.
|
||||||
|
Il faut ensuite :
|
||||||
|
|
||||||
|
1. Sauvegarder les fichiers MDX dans `src/content/themes/`
|
||||||
|
2. Commiter et pusher sur Forgejo
|
||||||
|
3. Déclencher le rebuild : `curl -X POST https://france.reverdin.eu/_rebuild?token=TOKEN`
|
||||||
|
|
||||||
|
### Script de déploiement post-workflow
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Depuis ~/Code/30-projects/IRPF/
|
||||||
|
git add src/content/themes/
|
||||||
|
git commit -m "content: mise à jour fiches thèmes via workflow IRPF"
|
||||||
|
git push origin main
|
||||||
|
curl -X POST "https://france.reverdin.eu/_rebuild?token=f76831324704eab2be6e4ef26daf2099539741f1648ec844"
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Sources prioritaires par thème
|
||||||
|
|
||||||
|
Voir `docs/institutions-sources.md` pour la liste complète.
|
||||||
|
|
||||||
|
### Top 5 sources transversales (toujours pertinentes)
|
||||||
|
1. **OCDE** — études économiques + comparaisons 38 pays (stats.oecd.org)
|
||||||
|
2. **FMI Article IV France** — diagnostic macro annuel (imf.org)
|
||||||
|
3. **Commission européenne Country Report** — Semestre européen (ec.europa.eu)
|
||||||
|
4. **Cour des comptes** — audits sectoriels français (ccomptes.fr)
|
||||||
|
5. **INSEE** — toutes données socio-économiques françaises (api.insee.fr)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Coûts et budgets tokens
|
||||||
|
|
||||||
|
| Action | Tokens estimés | Durée |
|
||||||
|
|--------|---------------|-------|
|
||||||
|
| 1 thème pilote | 60-100k | 8-15 min |
|
||||||
|
| 3 thèmes test | 200-300k | 15-25 min |
|
||||||
|
| 14 thèmes complet | 800k-1,5M | 45-90 min |
|
||||||
|
|
||||||
|
Utiliser `/model` pour vérifier le modèle actif avant de lancer.
|
||||||
|
Recommandé : lancer d'abord 1 thème pilote, valider la qualité, puis lancer le reste.
|
||||||
82
workflows/build-all-themes.js
Normal file
82
workflows/build-all-themes.js
Normal file
|
|
@ -0,0 +1,82 @@
|
||||||
|
/**
|
||||||
|
* IRPF — Workflow de production complète des 14 thèmes
|
||||||
|
*
|
||||||
|
* Lance build-theme.js en parallèle pour tous les thèmes.
|
||||||
|
* Résultat : 14 fichiers MDX prêts + résumé global.
|
||||||
|
*
|
||||||
|
* Usage : Workflow({ scriptPath: 'workflows/build-all-themes.js' })
|
||||||
|
* Durée estimée : 45-90 min (parallèle)
|
||||||
|
* Coût estimé : 800k-1,5M tokens (Haiku collecte, Sonnet analyse, Opus synthèse/propositions)
|
||||||
|
*/
|
||||||
|
|
||||||
|
export const meta = {
|
||||||
|
name: 'irpf-build-all',
|
||||||
|
description: 'Production complète IRPF : 14 thèmes × (collecte intl + FR + deep research + synthèse Opus + propositions + politique + MDX)',
|
||||||
|
phases: [
|
||||||
|
{ title: 'Collecte', detail: 'Sources internationales + françaises pour les 14 thèmes en parallèle' },
|
||||||
|
{ title: 'Synthèse', detail: 'Opus par thème — diagnostic + indicateurs + enjeux' },
|
||||||
|
{ title: 'Propositions', detail: 'Programme 2027-2032 par thème' },
|
||||||
|
{ title: 'Lecture politique', detail: 'Dynamiques françaises par thème' },
|
||||||
|
{ title: 'MDX', detail: '14 fichiers prêts pour le site' },
|
||||||
|
{ title: 'Commit', detail: 'Push vers Forgejo + rebuild VPS' },
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
const THEMES = [
|
||||||
|
{ slug: 'economie-finances', label: 'Économie & Finances publiques' },
|
||||||
|
{ slug: 'sante', label: 'Santé & Système de soins' },
|
||||||
|
{ slug: 'education', label: 'Éducation & Formation' },
|
||||||
|
{ slug: 'environnement', label: 'Environnement & Transitions' },
|
||||||
|
{ slug: 'defense', label: 'Défense & Sécurité nationale' },
|
||||||
|
{ slug: 'justice', label: 'Justice & État de droit' },
|
||||||
|
{ slug: 'affaires-etrangeres', label: 'Affaires étrangères & Diplomatie' },
|
||||||
|
{ slug: 'travail-emploi', label: 'Travail, Emploi & Retraites' },
|
||||||
|
{ slug: 'logement', label: 'Logement & Urbanisme' },
|
||||||
|
{ slug: 'agriculture', label: 'Agriculture & Alimentation' },
|
||||||
|
{ slug: 'numerique', label: 'Numérique & Innovation' },
|
||||||
|
{ slug: 'cohesion-sociale', label: 'Cohésion sociale & Inégalités' },
|
||||||
|
{ slug: 'democratie', label: 'Démocratie & Institutions' },
|
||||||
|
{ slug: 'europe', label: 'Europe & Géopolitique' },
|
||||||
|
];
|
||||||
|
|
||||||
|
// Sélection partielle possible via args
|
||||||
|
const themesToBuild = args?.themes
|
||||||
|
? THEMES.filter(t => args.themes.includes(t.slug))
|
||||||
|
: THEMES;
|
||||||
|
|
||||||
|
log(`Lancement production de ${themesToBuild.length} thèmes en parallèle...`);
|
||||||
|
|
||||||
|
// Lancer build-theme pour chaque thème (workflow enfant)
|
||||||
|
const results = await parallel(
|
||||||
|
themesToBuild.map(theme => () =>
|
||||||
|
workflow('irpf-build-theme', { slug: theme.slug, label: theme.label })
|
||||||
|
.then(r => {
|
||||||
|
log(`✓ ${theme.label} — ${r?.stats?.propositions || 0} propositions, ${r?.stats?.sources_collectees || 0} sources`);
|
||||||
|
return r;
|
||||||
|
})
|
||||||
|
.catch(err => {
|
||||||
|
log(`✗ ${theme.label} — erreur: ${err.message}`);
|
||||||
|
return null;
|
||||||
|
})
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
const successful = results.filter(Boolean);
|
||||||
|
log(`${successful.length}/${themesToBuild.length} thèmes produits avec succès`);
|
||||||
|
|
||||||
|
// Résumé global
|
||||||
|
return {
|
||||||
|
total_themes: themesToBuild.length,
|
||||||
|
success: successful.length,
|
||||||
|
echecs: themesToBuild.length - successful.length,
|
||||||
|
themes: successful.map(r => ({
|
||||||
|
slug: r.slug,
|
||||||
|
label: r.label,
|
||||||
|
sources: r.stats?.sources_collectees,
|
||||||
|
indicateurs: r.stats?.indicateurs,
|
||||||
|
propositions: r.stats?.propositions,
|
||||||
|
})),
|
||||||
|
total_propositions: successful.reduce((s, r) => s + (r.stats?.propositions || 0), 0),
|
||||||
|
total_sources: successful.reduce((s, r) => s + (r.stats?.sources_collectees || 0), 0),
|
||||||
|
mdx_files: successful.map(r => ({ slug: r.slug, content: r.mdx })),
|
||||||
|
};
|
||||||
559
workflows/build-theme.js
Normal file
559
workflows/build-theme.js
Normal file
|
|
@ -0,0 +1,559 @@
|
||||||
|
/**
|
||||||
|
* IRPF — Workflow de production d'une fiche thème complète
|
||||||
|
*
|
||||||
|
* Usage : lancer via le Workflow tool avec args = { slug, label }
|
||||||
|
* Exemple : args = { slug: "sante", label: "Santé & Système de soins" }
|
||||||
|
*
|
||||||
|
* Ce workflow produit pour UN thème :
|
||||||
|
* 1. Collecte internationale (sources mondiales sur la France)
|
||||||
|
* 2. Collecte nationale (sources françaises)
|
||||||
|
* 3. Deep research sur les angles manquants
|
||||||
|
* 4. Synthèse Opus (diagnostic + indicateurs + enjeux)
|
||||||
|
* 5. Propositions ultra-détaillées (Opus)
|
||||||
|
* 6. Lecture politique dynamique
|
||||||
|
* 7. Fichier MDX prêt à déployer dans src/content/themes/
|
||||||
|
*/
|
||||||
|
|
||||||
|
export const meta = {
|
||||||
|
name: 'irpf-build-theme',
|
||||||
|
description: 'Produit une fiche thème IRPF complète : collecte internationale + nationale + synthèse + propositions + MDX',
|
||||||
|
phases: [
|
||||||
|
{ title: 'Collecte internationale', detail: 'Sources ONU, OCDE, UE, FMI, BM, Conseil de l\'Europe + think tanks' },
|
||||||
|
{ title: 'Collecte nationale', detail: 'Sources françaises : INSEE, Cour des comptes, HCFP, think tanks FR' },
|
||||||
|
{ title: 'Deep research ciblé', detail: 'Angles manquants, benchmarks pays, données statistiques spécifiques' },
|
||||||
|
{ title: 'Synthèse Opus', detail: 'Diagnostic sourcé + indicateurs clés + enjeux structurels' },
|
||||||
|
{ title: 'Propositions', detail: 'Recommandations détaillées fondées sur l\'international' },
|
||||||
|
{ title: 'Lecture politique', detail: 'Dynamiques politiques françaises 2025-2027' },
|
||||||
|
{ title: 'Production MDX', detail: 'Fichier prêt pour src/content/themes/' },
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
// ─── CONFIGURATION PAR THÈME ─────────────────────────────────────────────────
|
||||||
|
|
||||||
|
const THEME_CONFIG = {
|
||||||
|
'economie-finances': {
|
||||||
|
ordre: 1, priorite: 'critique', budget_milliards: 492,
|
||||||
|
sources_intl: ['FMI Article IV France', 'OCDE Études économiques France', 'Commission européenne Country Report France', 'Eurostat finances publiques', 'BRI statistiques bancaires France', 'GAFI évaluation France', 'HCFP'],
|
||||||
|
sources_fr: ['INSEE comptes nationaux', 'Banque de France', 'Cour des comptes', 'CAE', 'iFRAP', 'Institut Montaigne', 'France Stratégie'],
|
||||||
|
indicateurs_cibles: ['déficit public %PIB', 'dette publique %PIB', 'dépenses publiques %PIB', 'prélèvements obligatoires %PIB', 'croissance PIB', 'charge de la dette', 'rang compétitivité'],
|
||||||
|
angles_specifiques: ['trajectoire dette 2030', 'espace budgétaire réel', 'comparaison Zone Euro', 'réforme fiscale OCDE Pilier 2'],
|
||||||
|
},
|
||||||
|
'sante': {
|
||||||
|
ordre: 2, priorite: 'critique', budget_milliards: 260,
|
||||||
|
sources_intl: ['OCDE Health at a Glance', 'OMS Global Health Observatory France', 'Commission UE state of health', 'Eurostat santé'],
|
||||||
|
sources_fr: ['DREES', 'Haut Conseil de la Santé Publique', 'Cour des comptes', 'Institut Montaigne santé', 'Terra Nova santé'],
|
||||||
|
indicateurs_cibles: ['espérance de vie', 'dépenses santé %PIB', 'médecins pour 1000 hab', 'lits hôpital pour 1000', 'délais attente', 'satisfaction système', 'déserts médicaux'],
|
||||||
|
angles_specifiques: ['démographie médicale 2030', 'comparaison systèmes UE', 'performance hospitalière', 'prévention vs curatif'],
|
||||||
|
},
|
||||||
|
'education': {
|
||||||
|
ordre: 3, priorite: 'haute', budget_milliards: 168,
|
||||||
|
sources_intl: ['OCDE PISA 2022 France', 'OCDE TALIS France', 'OCDE Education at a Glance France', 'UNESCO UIS France', 'Commission UE Education Monitor'],
|
||||||
|
sources_fr: ['DEPP', 'Cour des comptes', 'Conseil d\'évaluation de l\'école', 'Institut Montaigne éducation', 'Terra Nova éducation'],
|
||||||
|
indicateurs_cibles: ['score PISA mathématiques', 'score PISA lecture', 'rang PISA sciences', 'décrochage scolaire', 'inégalités scolaires', 'dépenses par élève', 'formation enseignants'],
|
||||||
|
angles_specifiques: ['reproduction sociale', 'comparaison Finlande/Estonie/Canada', 'réforme du lycée', 'numérique éducatif'],
|
||||||
|
},
|
||||||
|
'environnement': {
|
||||||
|
ordre: 4, priorite: 'critique', budget_milliards: 40,
|
||||||
|
sources_intl: ['GIEC AR6 impacts France', 'CCNUCC NDC France', 'AIE France Energy Policy', 'IRENA France', 'Eurostat environnement', 'Commission UE Fit for 55 France'],
|
||||||
|
sources_fr: ['ADEME', 'SDES', 'Haut Conseil pour le Climat', 'Cour des comptes', 'I4CE', 'Institut Rousseau'],
|
||||||
|
indicateurs_cibles: ['émissions CO2 France', 'part renouvelables', 'objectif 2030 vs trajectoire', 'écart financement vert', 'biodiversité', 'artificialisation sols'],
|
||||||
|
angles_specifiques: ['coût inaction climatique', 'financement transition 2030', 'justice climatique', 'comparaison Allemagne/Suède'],
|
||||||
|
},
|
||||||
|
'defense': {
|
||||||
|
ordre: 5, priorite: 'haute', budget_milliards: 47,
|
||||||
|
sources_intl: ['OTAN dépenses France', 'SIPRI Military Expenditure France', 'IISS Military Balance France', 'ECFR France défense', 'Chatham House France'],
|
||||||
|
sources_fr: ['FRS', 'IRIS', 'IFRI', 'LPM 2024-2030', 'Cour des comptes défense'],
|
||||||
|
indicateurs_cibles: ['% PIB défense', 'effectifs armées', 'budget R&D défense', 'opérations extérieures', 'dissuasion nucléaire budget', 'industrie défense exports'],
|
||||||
|
angles_specifiques: ['2% PIB OTAN trajectoire', 'autonomie stratégique européenne', 'compétition technologique', 'base industrielle défense'],
|
||||||
|
},
|
||||||
|
'justice': {
|
||||||
|
ordre: 6, priorite: 'haute', budget_milliards: 11,
|
||||||
|
sources_intl: ['CEDH arrêts France', 'GRECO rapport France', 'CEPEJ évaluation justice européenne France', 'Commission UE État de droit France'],
|
||||||
|
sources_fr: ['Ministère Justice statistiques', 'Cour des comptes', 'Syndicats magistrats', 'Institut Montaigne justice'],
|
||||||
|
indicateurs_cibles: ['condamnations CEDH', 'durée procédures', 'budget justice %PIB', 'taux population carcérale', 'délais instruction', 'accès aide juridictionnelle'],
|
||||||
|
angles_specifiques: ['indépendance judiciaire', 'numérique judiciaire', 'réforme pénitentiaire', 'comparaison UE'],
|
||||||
|
},
|
||||||
|
'affaires-etrangeres': {
|
||||||
|
ordre: 7, priorite: 'normale', budget_milliards: 3.2,
|
||||||
|
sources_intl: ['OCDE DAC aide France', 'ECFR France foreign policy scorecard', 'IFRI', 'Chatham House', 'Brookings France'],
|
||||||
|
sources_fr: ['MAE rapports', 'France Stratégie international', 'IRIS', 'Sénat Commission AE'],
|
||||||
|
indicateurs_cibles: ['APD %RNB', 'rang soft power', 'réseau diplomatique taille', 'contribution ONU', 'exports défense', 'influence culturelle'],
|
||||||
|
angles_specifiques: ['APD 0,7% RNB écart', 'influence France Afrique', 'diplomatie climatique', 'francophonie'],
|
||||||
|
},
|
||||||
|
'travail-emploi': {
|
||||||
|
ordre: 8, priorite: 'critique', budget_milliards: 0,
|
||||||
|
sources_intl: ['OCDE Employment Outlook France', 'OIT France conventions', 'Commission UE Semestre emploi France', 'COR retraites'],
|
||||||
|
sources_fr: ['DARES', 'INSEE emploi', 'Cour des comptes', 'CAE travail', 'France Stratégie emploi'],
|
||||||
|
indicateurs_cibles: ['taux chômage', 'taux emploi 15-64', 'taux emploi seniors', 'coût travail comparatif', 'taux syndicalisation', 'accidents travail', 'âge départ retraite effectif'],
|
||||||
|
angles_specifiques: ['plein emploi scenario', 'retraites soutenabilité', 'flexisécurité danoise', 'emploi seniors'],
|
||||||
|
},
|
||||||
|
'logement': {
|
||||||
|
ordre: 9, priorite: 'critique', budget_milliards: 38,
|
||||||
|
sources_intl: ['OCDE Affordable Housing France', 'Commission UE logement abordable France', 'UN-Habitat France', 'Eurostat logement'],
|
||||||
|
sources_fr: ['SDES', 'Banque des Territoires', 'ANCOLS', 'Fondation Abbé Pierre', 'Institut Montaigne logement'],
|
||||||
|
indicateurs_cibles: ['prix immobilier/revenus', 'taux propriétaires', 'stock HLM', 'mal logement France', 'sans-abri', 'construction neuve', 'coût logement %revenu'],
|
||||||
|
angles_specifiques: ['choc offre vs demande', 'comparaison Allemagne/Pays-Bas', 'ZAN artificialisation', 'rénovation thermique'],
|
||||||
|
},
|
||||||
|
'agriculture': {
|
||||||
|
ordre: 10, priorite: 'haute', budget_milliards: 22,
|
||||||
|
sources_intl: ['FAO France', 'OCDE Agricultural Outlook France', 'Commission UE PAC France', 'Eurostat agri'],
|
||||||
|
sources_fr: ['Agreste', 'INRAE', 'Chambres agriculture', 'Cour des comptes PAC'],
|
||||||
|
indicateurs_cibles: ['surface agricole utile', 'exploitations viables', 'revenus agricoles', 'part bio', 'pesticides usage', 'souveraineté alimentaire', 'exportations agroalimentaires'],
|
||||||
|
angles_specifiques: ['renouvellement générations', 'souveraineté alimentaire', 'PAC réforme', 'agri-écologie'],
|
||||||
|
},
|
||||||
|
'numerique': {
|
||||||
|
ordre: 11, priorite: 'haute', budget_milliards: 9,
|
||||||
|
sources_intl: ['OCDE Digital Economy Outlook France', 'Eurostat DESI France', 'Commission UE Digital Decade France', 'ITU France'],
|
||||||
|
sources_fr: ['ARCEP', 'DGE', 'ANSSi', 'France Stratégie numérique', 'Institut Montaigne IA'],
|
||||||
|
indicateurs_cibles: ['score DESI', 'couverture fibre/5G', 'compétences numériques', 'startups licornes', 'R&D IA', 'administration numérique', 'cybersécurité'],
|
||||||
|
angles_specifiques: ['souveraineté numérique', 'IA France vs US/Chine', 'régulation vs innovation', 'fracture numérique'],
|
||||||
|
},
|
||||||
|
'cohesion-sociale': {
|
||||||
|
ordre: 12, priorite: 'haute', budget_milliards: 0,
|
||||||
|
sources_intl: ['PNUD IDH France', 'OCDE Society at a Glance France', 'Commission UE Social Scoreboard France', 'Eurostat inégalités'],
|
||||||
|
sources_fr: ['INSEE pauvreté', 'ONPES', 'Observatoire inégalités', 'Fondation Jean Jaurès', 'Terra Nova social'],
|
||||||
|
indicateurs_cibles: ['coefficient Gini', 'taux pauvreté', 'mobilité sociale', 'inégalités territoriales', 'discriminations emploi', 'mixité scolaire', 'ascenseur social'],
|
||||||
|
angles_specifiques: ['immobilité sociale France', 'quartiers prioritaires', 'comparaison nordique', 'discriminations systémiques'],
|
||||||
|
},
|
||||||
|
'democratie': {
|
||||||
|
ordre: 13, priorite: 'haute', budget_milliards: 0,
|
||||||
|
sources_intl: ['V-Dem France', 'Freedom House France', 'GRECO France', 'OCDE gouvernance France', 'Commission UE État de droit'],
|
||||||
|
sources_fr: ['CEVIPOF', 'Baromètre confiance Sciences Po', 'Transparency International France', 'Fondapol démocratie'],
|
||||||
|
indicateurs_cibles: ['score V-Dem', 'confiance institutions', 'taux abstention', 'score liberté presse', 'corruption perçue', 'participation politique', 'représentation femmes'],
|
||||||
|
angles_specifiques: ['crise représentative', 'proportionnelle vs majoritaire', 'démocratie participative', 'financement partis'],
|
||||||
|
},
|
||||||
|
'europe': {
|
||||||
|
ordre: 14, priorite: 'haute', budget_milliards: 0,
|
||||||
|
sources_intl: ['Commission UE France', 'Eurobaromètre France', 'Bruegel France Europe', 'ECFR France Europe', 'Jacques Delors Institut'],
|
||||||
|
sources_fr: ['Institut Montaigne Europe', 'Notre Europe', 'IFRI Europe', 'Terra Nova Europe', 'France Stratégie UE'],
|
||||||
|
indicateurs_cibles: ['solde France UE contribution', 'soutien UE opinion publique', 'transposition directives', 'poids France BCE/Commission', 'coopération défense UE'],
|
||||||
|
angles_specifiques: ['influence France UE post-Brexit', 'axe Paris-Berlin', 'élargissement', 'autonomie stratégique'],
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
// ─── 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' },
|
||||||
|
},
|
||||||
|
required: ['pays', 'mesure'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
url_principale: { type: 'string' },
|
||||||
|
date_publication: { type: 'string' },
|
||||||
|
},
|
||||||
|
required: ['source', 'type', 'donnees'],
|
||||||
|
};
|
||||||
|
|
||||||
|
// ─── 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 production fiche : ${themeLabel}`);
|
||||||
|
|
||||||
|
// PHASE 1 : Collecte internationale
|
||||||
|
phase('Collecte internationale');
|
||||||
|
log(`${config.sources_intl.length} sources internationales à interroger...`);
|
||||||
|
|
||||||
|
const intlData = await parallel(
|
||||||
|
config.sources_intl.map(source => () =>
|
||||||
|
agent(
|
||||||
|
`Tu es un analyste expert des institutions internationales et de la France.
|
||||||
|
|
||||||
|
SOURCE : ${source}
|
||||||
|
THÈME : ${themeLabel}
|
||||||
|
INDICATEURS RECHERCHÉS : ${config.indicateurs_cibles.join(', ')}
|
||||||
|
ANGLES SPÉCIFIQUES : ${config.angles_specifiques.join(', ')}
|
||||||
|
|
||||||
|
Collecte pour cette source :
|
||||||
|
1. Les données statistiques les plus récentes sur la France pour ce thème
|
||||||
|
(valeur exacte, année, tendance, rang parmi pays OCDE/UE)
|
||||||
|
2. Les recommandations explicites faites à la France dans les 24 derniers mois
|
||||||
|
3. Les benchmarks : quels pays font mieux que la France et pourquoi ?
|
||||||
|
4. L'URL du document source principal
|
||||||
|
|
||||||
|
Sois précis et sourcé. Uniquement des faits vérifiables.`,
|
||||||
|
{
|
||||||
|
label: `intl:${source.substring(0, 30)}`,
|
||||||
|
phase: 'Collecte internationale',
|
||||||
|
schema: { ...COLLECT_SCHEMA, properties: { ...COLLECT_SCHEMA.properties, source: { type: 'string', default: source } } },
|
||||||
|
model: 'sonnet',
|
||||||
|
}
|
||||||
|
).then(r => r ? { ...r, source } : null)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
// PHASE 2 : Collecte nationale
|
||||||
|
phase('Collecte nationale');
|
||||||
|
log(`${config.sources_fr.length} sources françaises à interroger...`);
|
||||||
|
|
||||||
|
const frData = await parallel(
|
||||||
|
config.sources_fr.map(source => () =>
|
||||||
|
agent(
|
||||||
|
`Tu es un expert des politiques publiques françaises.
|
||||||
|
|
||||||
|
SOURCE FRANÇAISE : ${source}
|
||||||
|
THÈME : ${themeLabel}
|
||||||
|
INDICATEURS : ${config.indicateurs_cibles.join(', ')}
|
||||||
|
|
||||||
|
Pour cette source institutionnelle française :
|
||||||
|
1. Les chiffres-clés les plus récents sur ce thème
|
||||||
|
2. Les principales conclusions/diagnostics du dernier rapport
|
||||||
|
3. Les recommandations formulées
|
||||||
|
4. Les évolutions récentes (12 derniers mois)
|
||||||
|
5. Les données disponibles en open data (URL API si possible)`,
|
||||||
|
{
|
||||||
|
label: `fr:${source.substring(0, 30)}`,
|
||||||
|
phase: 'Collecte nationale',
|
||||||
|
schema: { ...COLLECT_SCHEMA, properties: { ...COLLECT_SCHEMA.properties, source: { type: 'string', default: source } } },
|
||||||
|
model: 'sonnet',
|
||||||
|
}
|
||||||
|
).then(r => r ? { ...r, source } : null)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
const allData = [...intlData, ...frData].filter(Boolean);
|
||||||
|
log(`${allData.length} sources collectées`);
|
||||||
|
|
||||||
|
// PHASE 3 : Deep research sur les angles spécifiques manquants
|
||||||
|
phase('Deep research ciblé');
|
||||||
|
|
||||||
|
const deepResearch = await parallel(
|
||||||
|
config.angles_specifiques.map(angle => () =>
|
||||||
|
agent(
|
||||||
|
`Deep research expert sur les politiques publiques françaises.
|
||||||
|
|
||||||
|
ANGLE SPÉCIFIQUE À CREUSER : ${angle}
|
||||||
|
THÈME GÉNÉRAL : ${themeLabel}
|
||||||
|
|
||||||
|
Recherche approfondie sur cet angle précis :
|
||||||
|
- Données quantitatives récentes (sourcer avec précision)
|
||||||
|
- Études académiques ou institutionnelles de référence
|
||||||
|
- Positions des principales institutions (OCDE, UE, think tanks)
|
||||||
|
- Expériences comparatives internationales réussies
|
||||||
|
- État du débat politique français sur ce point
|
||||||
|
- Propositions concrètes qui existent déjà dans la littérature
|
||||||
|
|
||||||
|
Sois exhaustif sur cet angle précis. Cite tes sources.`,
|
||||||
|
{
|
||||||
|
label: `deep:${angle.substring(0, 40)}`,
|
||||||
|
phase: 'Deep research ciblé',
|
||||||
|
model: 'sonnet',
|
||||||
|
}
|
||||||
|
)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
// PHASE 4 : Synthèse Opus
|
||||||
|
phase('Synthèse Opus');
|
||||||
|
log('Synthèse de niveau Cour des comptes × OCDE...');
|
||||||
|
|
||||||
|
const allStats = allData.flatMap(d => d.donnees || []);
|
||||||
|
const allReco = allData.flatMap(d => d.recommandations_france || []);
|
||||||
|
const allBenchmarks = allData.flatMap(d => d.benchmarks || []);
|
||||||
|
|
||||||
|
const synthesis = await agent(
|
||||||
|
`Tu es un expert de haut niveau des politiques publiques françaises, équivalent à un rapporteur de la Cour des comptes ou un économiste senior de l'OCDE.
|
||||||
|
|
||||||
|
THÈME : ${themeLabel}
|
||||||
|
|
||||||
|
Tu disposes de :
|
||||||
|
- ${allStats.length} indicateurs statistiques collectés auprès de ${allData.length} sources
|
||||||
|
- ${allReco.length} recommandations institutionnelles explicites pour la France
|
||||||
|
- ${allBenchmarks.length} benchmarks de pays comparables
|
||||||
|
- ${deepResearch.filter(Boolean).length} deep research sur des angles spécifiques
|
||||||
|
|
||||||
|
STATISTIQUES DISPONIBLES :
|
||||||
|
${JSON.stringify(allStats.slice(0, 60), null, 2)}
|
||||||
|
|
||||||
|
RECOMMANDATIONS INSTITUTIONNELLES :
|
||||||
|
${allReco.slice(0, 40).join('\n')}
|
||||||
|
|
||||||
|
BENCHMARKS INTERNATIONAUX :
|
||||||
|
${JSON.stringify(allBenchmarks.slice(0, 25), null, 2)}
|
||||||
|
|
||||||
|
DEEP RESEARCH SPÉCIFIQUES :
|
||||||
|
${deepResearch.filter(Boolean).slice(0, 4).join('\n\n---\n\n')}
|
||||||
|
|
||||||
|
PRODUCTION ATTENDUE :
|
||||||
|
|
||||||
|
1. DIAGNOSTIC (900-1200 mots)
|
||||||
|
Rédige un diagnostic complet, rigoureux, comparatif de la situation française.
|
||||||
|
Structure : état des lieux chiffré → position internationale → tendances → facteurs explicatifs → défis structurels.
|
||||||
|
Chaque affirmation doit être sourcée. Comparer systématiquement à l'Allemagne, le Royaume-Uni, les pays nordiques, la moyenne OCDE.
|
||||||
|
|
||||||
|
2. INDICATEURS CLÉS (8-12 indicateurs)
|
||||||
|
Sélectionne les plus significatifs : valeur France, source, année, tendance, comparaison OCDE.
|
||||||
|
|
||||||
|
3. ENJEUX STRUCTURELS (5-7 enjeux)
|
||||||
|
Hiérarchisés par urgence, avec les sources internationales qui les documentent.
|
||||||
|
|
||||||
|
4. CONSENSUS INTERNATIONAL
|
||||||
|
Ce sur quoi TOUTES les institutions convergent concernant la France.
|
||||||
|
|
||||||
|
5. DIVERGENCES
|
||||||
|
Points de désaccord entre institutions ou approches contradictoires.`,
|
||||||
|
{
|
||||||
|
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_structures: {
|
||||||
|
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'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
consensus_international: { type: 'string' },
|
||||||
|
divergences: { type: 'string' },
|
||||||
|
sources_citees: { type: 'array', items: { type: 'string' } },
|
||||||
|
},
|
||||||
|
required: ['diagnostic', 'indicateurs_cles', 'enjeux_structures', 'consensus_international'],
|
||||||
|
},
|
||||||
|
model: 'opus',
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
// PHASE 5 : Propositions
|
||||||
|
phase('Propositions');
|
||||||
|
|
||||||
|
const propositions = await agent(
|
||||||
|
`Tu es un conseiller politique senior, expert des politiques publiques françaises et du droit comparé international.
|
||||||
|
|
||||||
|
THÈME : ${themeLabel}
|
||||||
|
|
||||||
|
DIAGNOSTIC ÉTABLI :
|
||||||
|
${synthesis?.diagnostic || ''}
|
||||||
|
|
||||||
|
ENJEUX IDENTIFIÉS :
|
||||||
|
${JSON.stringify(synthesis?.enjeux_structures || [])}
|
||||||
|
|
||||||
|
RECOMMANDATIONS DES INSTITUTIONS INTERNATIONALES :
|
||||||
|
${allReco.slice(0, 30).join('\n')}
|
||||||
|
|
||||||
|
BENCHMARKS PAYS :
|
||||||
|
${JSON.stringify(allBenchmarks.slice(0, 20), null, 2)}
|
||||||
|
|
||||||
|
GÉNÈRE un programme d'action pour la France 2027-2032 :
|
||||||
|
|
||||||
|
6-8 propositions réparties en :
|
||||||
|
- 1-2 RUPTURE : réforme structurelle majeure, fort impact, irréversible
|
||||||
|
- 2-3 RÉFORMISTE : ajustements significatifs du modèle existant
|
||||||
|
- 1-2 CONSOLIDATION : amplifier ce qui fonctionne déjà
|
||||||
|
- 1 EXPÉRIMENTATION : pilote innovant inspiré d'un pays-modèle
|
||||||
|
|
||||||
|
Pour chaque proposition :
|
||||||
|
• Titre clair et mécanisme précis (qui, quoi, comment, calendrier)
|
||||||
|
• Fondement dans les recommandations institutionnelles internationales (citer la source)
|
||||||
|
• Pays ayant mis en oeuvre + résultats mesurés
|
||||||
|
• Impact budgétaire : coût net, horizon, gains attendus
|
||||||
|
• Obstacles identifiés et comment les contourner
|
||||||
|
• Quick win possible sans texte législatif ? (oui/non)
|
||||||
|
• Niveau de preuve : fort / modéré / émergent / expérimental
|
||||||
|
|
||||||
|
Sois concret, chiffré, actionnable. Pas de vague "il faudrait".`,
|
||||||
|
{
|
||||||
|
label: `prop:${themeSlug}`,
|
||||||
|
phase: 'Propositions',
|
||||||
|
schema: {
|
||||||
|
type: 'object',
|
||||||
|
properties: {
|
||||||
|
propositions: {
|
||||||
|
type: 'array',
|
||||||
|
items: {
|
||||||
|
type: 'object',
|
||||||
|
properties: {
|
||||||
|
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'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
required: ['propositions'],
|
||||||
|
},
|
||||||
|
model: 'opus',
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
// PHASE 6 : Lecture politique
|
||||||
|
phase('Lecture politique');
|
||||||
|
|
||||||
|
const politique = await agent(
|
||||||
|
`Tu es un politologue spécialisé dans la vie politique française et les dynamiques de réforme.
|
||||||
|
|
||||||
|
THÈME : ${themeLabel}
|
||||||
|
PROPOSITIONS IRPF : ${JSON.stringify(propositions?.propositions?.slice(0, 3) || [])}
|
||||||
|
|
||||||
|
Analyse politique 2025-2027 :
|
||||||
|
|
||||||
|
1. Position actuelle du gouvernement Bayrou sur ce thème
|
||||||
|
2. Positions des partis majeurs (RN, LFI, PS, EELV, Renaissance/Horizons, LR)
|
||||||
|
3. Fenêtres politiques dans les 18 mois (élections, présidences, crises, momentum)
|
||||||
|
4. Acteurs clés (ministres, hauts fonctionnaires, syndicats, lobbys) — qui accélère, qui bloque
|
||||||
|
5. Blocages structurels : corporatismes, contraintes constitutionnelles, résistances
|
||||||
|
6. Coalitions possibles pour faire avancer des réformes sur ce thème
|
||||||
|
7. Séquence optimale de mise en oeuvre`,
|
||||||
|
{
|
||||||
|
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' } }, required: ['parti', 'position'] } },
|
||||||
|
fenetres_politiques: { type: 'array', items: { type: 'string' } },
|
||||||
|
acteurs_cles: { type: 'array', items: { type: 'object', properties: { nom: { type: 'string' }, role: { type: 'string' }, influence: { type: 'string' } }, required: ['nom', 'role'] } },
|
||||||
|
blocages: { type: 'array', items: { type: 'string' } },
|
||||||
|
coalitions: { type: 'array', items: { type: 'string' } },
|
||||||
|
sequence_optimale: { type: 'string' },
|
||||||
|
},
|
||||||
|
required: ['position_gouvernement', 'positions_partis', 'fenetres_politiques', 'blocages'],
|
||||||
|
},
|
||||||
|
model: 'sonnet',
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
// PHASE 7 : Production MDX
|
||||||
|
phase('Production MDX');
|
||||||
|
|
||||||
|
const frontmatter = `---
|
||||||
|
title: "${themeLabel}"
|
||||||
|
slug: "${themeSlug}"
|
||||||
|
description: "Diagnostic complet, données internationales et propositions IRPF sur le thème ${themeLabel}."
|
||||||
|
ordre: ${config.ordre}
|
||||||
|
priorite: "${config.priorite}"
|
||||||
|
${config.budget_milliards ? `budget_etat_milliards: ${config.budget_milliards}` : ''}
|
||||||
|
tags: [${config.indicateurs_cibles.slice(0, 5).map(i => `"${i.replace(/[^a-zA-ZÀ-ÿ0-9 ]/g, '').trim().toLowerCase().replace(/ /g, '-')}"`).join(', ')}]
|
||||||
|
sources_data: [${config.sources_intl.slice(0, 5).map(s => `"${s.split(' ')[0]}"`).join(', ')}]
|
||||||
|
derniere_maj: "2026-06"
|
||||||
|
nb_propositions: ${propositions?.propositions?.length || 0}
|
||||||
|
score_sources: ${allData.length}
|
||||||
|
---`;
|
||||||
|
|
||||||
|
const mdxContent = await agent(
|
||||||
|
`Tu es un rédacteur web expert. Génère le contenu MDX complet pour la fiche thème IRPF.
|
||||||
|
|
||||||
|
FRONTMATTER (déjà prêt, ne pas modifier) :
|
||||||
|
${frontmatter}
|
||||||
|
|
||||||
|
MATÉRIAU :
|
||||||
|
Diagnostic : ${synthesis?.diagnostic || ''}
|
||||||
|
Indicateurs : ${JSON.stringify(synthesis?.indicateurs_cles || [])}
|
||||||
|
Enjeux : ${JSON.stringify(synthesis?.enjeux_structures || [])}
|
||||||
|
Consensus international : ${synthesis?.consensus_international || ''}
|
||||||
|
Propositions : ${JSON.stringify(propositions?.propositions || [])}
|
||||||
|
Lecture politique : ${JSON.stringify(politique || {})}
|
||||||
|
Sources : ${(synthesis?.sources_citees || []).join(', ')}
|
||||||
|
|
||||||
|
STRUCTURE DU FICHIER MDX :
|
||||||
|
|
||||||
|
## Diagnostic
|
||||||
|
[Le diagnostic complet sourcé — reprendre texte intégral du diagnostic]
|
||||||
|
|
||||||
|
## Indicateurs clés
|
||||||
|
[Tableau markdown des 8-12 indicateurs avec source et tendance]
|
||||||
|
|
||||||
|
## Ce que disent les institutions internationales
|
||||||
|
[Pour chaque institution clé : recommandation principale + statut de mise en oeuvre]
|
||||||
|
|
||||||
|
## Enjeux structurels
|
||||||
|
[Les 5-7 enjeux avec leur niveau d'urgence, description et sources]
|
||||||
|
|
||||||
|
## Comparaisons internationales
|
||||||
|
[Tableau pays-mesure-résultat + analyse]
|
||||||
|
|
||||||
|
## Propositions IRPF 2027-2032
|
||||||
|
[Les propositions complètes : titre, catégorie, description, mécanisme, pays référence, impact budgétaire]
|
||||||
|
|
||||||
|
## Lecture politique
|
||||||
|
[Dynamiques françaises : gouvernement, partis, blocages, fenêtres d'opportunité]
|
||||||
|
|
||||||
|
## Sources & références
|
||||||
|
[Bibliographie complète avec URLs]
|
||||||
|
|
||||||
|
Retourne le fichier MDX COMPLET, prêt à sauvegarder.`,
|
||||||
|
{
|
||||||
|
label: `mdx:${themeSlug}`,
|
||||||
|
phase: 'Production MDX',
|
||||||
|
model: 'sonnet',
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
log(`Fiche ${themeLabel} complète — ${allData.length} sources, ${propositions?.propositions?.length || 0} propositions`);
|
||||||
|
|
||||||
|
return {
|
||||||
|
slug: themeSlug,
|
||||||
|
label: themeLabel,
|
||||||
|
stats: {
|
||||||
|
sources_collectees: allData.length,
|
||||||
|
indicateurs: synthesis?.indicateurs_cles?.length || 0,
|
||||||
|
enjeux: synthesis?.enjeux_structures?.length || 0,
|
||||||
|
propositions: propositions?.propositions?.length || 0,
|
||||||
|
},
|
||||||
|
synthesis,
|
||||||
|
propositions,
|
||||||
|
politique,
|
||||||
|
mdx: `${frontmatter}\n\n${mdxContent}`,
|
||||||
|
};
|
||||||
Loading…
Add table
Reference in a new issue