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 Enginegenere les JSON publics pour au moins une plateforme pilote. - Les JSON sont publies en runs immuables avec un
manifest.jsonactif. - Le systeme supporte les produits, collections, programmations,
today,latest, recherche/index et programmations futures jusqu'a J+10. - Le
Media Pipelinealimente une tablemedia_assetsavec l'etat JWP. - Le contrat
publication_jobspermet de republier un produit, une collection, un horaire ou une plateforme. - Les corrections d'urgence passent par une
Publication Consoleinterne 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.jsonvers 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 PipelineAdonisJS/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_assetsetpublication_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 |