Files
SecondBrain/20 Work/Ideas/Mogador/Charte de projet - Content Publication Engine.md
T

11 KiB

Responsable

A confirmer.

Responsables pressentis:

  • Sponsor: Amadou Ndiaye
  • Responsable produit/metier: Julie Bessière
  • Responsable execution: Joel Ymele
  • Equipe contributrice: SN, infra, edimestres, PCI, fournisseurs sites

Resultat attendu

Quand ce projet reussit, la publication des donnees issues de Louise/Mogador vers les sites TFO, IDELLO, ONFR et lineaire devient plus fiable, plus observable et plus rapide.

Concretement:

  • on ne depend plus de trois serveurs separes qui executent chacun une copie de la meme synchro;
  • les sites consomment des fichiers JSON publics, versionnes et atomiques;
  • les erreurs sont detectees avant les plaintes de production;
  • les corrections d'urgence sont possibles via une interface interne controlee;
  • l'etat des videos JWP est integre proprement sans demander a PCI de connaitre JWP;
  • Directus peut etre retire ou reduit si son role n'est plus necessaire;
  • l'architecture reste compatible avec une future API Louise/Mogador v2 fournie par PCI.

Valeur d'affaires

Le systeme actuel fonctionne, mais il est fragile, lent a operer et difficile a expliquer. Il cree un risque direct sur la mise en ligne des emissions, particulierement quand une programmation doit apparaitre a une heure precise.

Ce projet vise a reduire:

  • les incidents de publication;
  • les retards de mise en ligne;
  • les interventions manuelles non tracees;
  • la dependance operationnelle a Directus pour des usages qu'il ne sert pas bien;
  • la complexite des relations collection/saison/episode;
  • la duplication entre TFO, IDELLO, ONFR et lineaire;
  • la dependance a une API Mogador legacy lente ou limitee.

La valeur principale est operationnelle: publier de facon previsible, auditable et recuperable.

La valeur secondaire est strategique: preparer une transition future vers une API Louise/Mogador v2 ou des evenements PCI sans devoir recommencer l'architecture.

Definition de termine

  • Le Content Publication Engine genere les JSON publics pour au moins une plateforme pilote.
  • Les JSON sont publies en runs immuables avec un manifest.json actif.
  • Le systeme supporte les produits, collections, programmations, today, latest, recherche/index et programmations futures jusqu'a J+10.
  • Le Media Pipeline alimente une table media_assets avec l'etat JWP.
  • Le contrat publication_jobs permet de republier un produit, une collection, un horaire ou une plateforme.
  • Les corrections d'urgence passent par une Publication Console interne avec authentification, roles et audit.
  • Un rapport compare ce qui est attendu selon Louise/Mogador et ce qui a ete publie.
  • Des alertes sont envoyees en cas d'anomalie critique.
  • Un rollback peut etre fait en repointant le manifest.json vers un run precedent.
  • Une documentation existe pour les JSON, les schemas, les operations, les alertes et le rollback.
  • Un pilote est valide avec production, edition, infra et au moins un fournisseur/site consommateur.

Portee

Inclus

  • Analyse et formalisation des regles de publication actuelles.
  • Creation du Content Publication Engine.
  • Generation des JSON publics versionnes.
  • Gestion des runs et retention.
  • Generation du manifest.json.
  • Support des programmations futures jusqu'a J+10.
  • Creation du contrat media_assets.
  • Creation du contrat publication_jobs.
  • Integration avec le Media Pipeline AdonisJS/JWP.
  • Mini CMS interne, ou Publication Console, pour les corrections d'urgence.
  • Authentification et roles pour edimestres/admins internes.
  • Rapports de validation attendu vs publie.
  • Alertes operationnelles.
  • Documentation technique et operationnelle.
  • Pilote sur une plateforme.
  • Strategie de migration progressive depuis Directus.

Exclu

  • Refonte complete de Louise.
  • Suppression immediate de Mogador Toolkit.
  • Livraison d'une API Louise/Mogador v2 par PCI.
  • Publication directe depuis Louise vers les sites.
  • Gestion JWP par PCI.
  • Remplacement complet de JWP.
  • Refonte des sites web consommateurs.
  • Migration big bang de toutes les plateformes sans pilote.
  • Exposition publique de l'application interne si Infra ne l'autorise pas.

Jalons

Jalon Cible Statut
Charte validee A definir Brouillon
Contrats media_assets et publication_jobs valides Semaine 1 A faire
Prototype JSON local valide Semaines 2-3 A faire
Integration Media Pipeline minimale Semaines 3-4 A faire
Generation pilote ONFR ou sous-ensemble TFO Semaines 5-6 A faire
Rapports et alertes pilote Semaines 6-7 A faire
Publication bucket/CDN de test Semaines 7-8 A faire
Publication Console minimale Semaines 8-10 A faire
Validation production/edition/infra Semaines 10-11 A faire
Decision de generalisation Semaine 12 A faire

Dependances

Dependance Responsable Requis pour Statut
Acces export Louise/Mogador actuel Interne / Infra Snapshot source Existant
Mogador Toolkit actuel Interne / PCI Lecture officielle initiale Existant, fragile
App AdonisJS/JWP Tech lead / equipe web Etat media JWP A integrer
Acces JWP Equipe web / Infra Media Pipeline A confirmer
Bucket/CDN Infra Publication JSON A definir
Auth interne Infra / equipe web Publication Console A definir
Better Stack / alerting Infra / equipe web Alertes En cours / a confirmer
Validation production Production Definition des anomalies critiques A planifier
Validation edimestres Edition numerique Corrections d'urgence A planifier
Decision sur Directus CTO / equipe web Strategie migration A prendre
Discussion PCI API v2 CTO / PCI Evolution long terme Separe

Risques

Risque Probabilite Impact Reponse Responsable
Le projet devient trop large et tente de remplacer Directus, Mogador, JWP et les sites en meme temps Elevee Eleve Decouper en pilote, garder API PCI comme chantier separe, livrer par increments Sponsor / Tech lead
L'equipe manque de disponibilite pour un projet d'architecture Elevee Eleve Limiter le MVP, choisir une plateforme pilote, documenter les arbitrages Manager / Tech lead
Les regles metier actuelles sont implicites dans le vieux code Elevee Eleve Extraire les regles, valider avec production, ajouter rapports de comparaison Equipe web
Les sites consommateurs ont des besoins differents ou non documentes Moyenne Eleve Publier JSON schemas, faire valider les formats avec chaque fournisseur/site Manager / fournisseurs sites
La Publication Console recree un mini Directus trop complexe Moyenne Eleve Limiter aux overrides d'urgence, audit, preview et publication; ne pas refaire un CMS complet Product / Tech lead
Les corrections d'urgence entrent en conflit avec Louise au prochain export Elevee Eleve Definir precedence, expiration d'override, audit et rapport d'ecart Equipe web / edition
Le manifest.json est cache trop longtemps Moyenne Eleve TTL court sur manifest, runs immuables caches longuement, procedure de purge CDN Infra / equipe web
La publication atomique est mal implementee Moyenne Eleve Publier d'abord un run complet, valider, puis seulement changer le manifest Equipe web
La gestion des programmations futures J+10 augmente le volume et la complexite Moyenne Moyen Limiter explicitement a J+10, mesurer performance, eviter requetes par episode Equipe web
Le Media Pipeline et le Sync Engine se couplent trop fortement Moyenne Eleve Passer uniquement par media_assets et publication_jobs, eviter les appels directs obligatoires Tech lead
JWP est lent ou indisponible pendant une publication Moyenne Eleve Publier statut media explicite, alerter, retry, ne pas bloquer tout le run si un media est en erreur Equipe web
Le systeme publie un JSON incomplet mais valide techniquement Moyenne Eleve Ajouter validations metier, rapports attendu vs publie et seuils bloquants Equipe web / production
L'absence d'API PCI v2 maintient certaines lenteurs Elevee Moyen Concevoir le Source Reader remplacable et optimiser avec snapshots/diffs internes Equipe web
PCI ne livre pas d'events/webhooks a court terme Elevee Moyen Ne pas en faire une dependance du MVP; garder le polling 3h et overrides internes Sponsor
Infra refuse l'exposition de l'app interne Moyenne Moyen Exposer seulement les JSON via bucket/CDN; garder la console sur reseau interne Infra
Les permissions edimestres sont sous-estimees Moyenne Moyen Definir roles simples, audit obligatoire, environnement interne seulement Edition / equipe web
Migration depuis Directus cause une interruption Moyenne Eleve Double-run, comparaison, pilote, rollback, aucun big bang Tech lead / Infra
Les couts operationnels du bucket/CDN/logs augmentent Faible Moyen Retention limitee, monitoring taille, lifecycle policies Infra
Le choix Laravel vs AdonisJS devient un debat bloquant Moyenne Moyen Decider selon maintenabilite, separer contrat et implementation, timeboxer la decision CTO / Tech lead

Sante actuelle

Jaune.

Le besoin est clair et la direction technique est raisonnable, mais le projet touche plusieurs systemes critiques: Louise/Mogador, Directus, JWP, sites consommateurs, infra, edition et production. Le principal risque n'est pas technique pur; c'est la portee.

Statut actuel

Une proposition d'architecture Sync v2 existe. Une suite precise maintenant la separation entre:

  • le chantier interne de publication;
  • le chantier PCI pour moderniser Louise/Mogador;
  • le role du Media Pipeline AdonisJS/JWP;
  • les contrats media_assets et publication_jobs;
  • les noms recommandes pour clarifier l'architecture.

Prochain jalon recommande: valider les contrats media_assets, publication_jobs et la structure JSON v1 avec le tech lead avant de choisir definitivement Laravel, AdonisJS ou une autre stack pour le moteur interne.

Decisions / aide requise

  • Choisir la plateforme pilote: ONFR, TFO reduit ou autre.
  • Decider si Directus est retire, reduit ou garde temporairement en double-run.
  • Confirmer que les JSON publics via bucket/CDN sont acceptables pour Infra.
  • Confirmer les roles de la Publication Console: edimestres, admins, read-only.
  • Valider la strategie de cache du manifest.json.
  • Valider la retention des runs: recommandation initiale de 10 jours minimum.
  • Valider si le Sync Engine principal est Laravel, AdonisJS ou autre.
  • Confirmer qui porte la discussion avec PCI pour l'API v2 et les events futurs.

Changements de portee

Date Changement Impact Decision
A definir Ajout de l'integration JWP via Media Pipeline Augmente la portee, mais evite une architecture incomplete Propose
A definir Separation du chantier PCI et du chantier interne Reduit le risque de blocage fournisseur Propose
A definir Ajout Publication Console pour corrections d'urgence Ajoute auth/audit, mais remplace un besoin fort de Directus Propose
A definir Support des programmations futures J+10 Augmente le volume JSON, mais repond a une demande recurrente Propose