vault backup: 2026-08-01 17:07:09
This commit is contained in:
@@ -1,86 +1,85 @@
|
||||
|
||||
|
||||
## 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
|
||||
- Sponsor: CTO / Direction technique
|
||||
- Responsable produit/métier: Direction production / édition numerique
|
||||
- Responsable execution: Manager équipe web / Tech lead
|
||||
- Équipe contributrice: developpeurs web, infra, édimestres, 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.
|
||||
Quand ce projet réussit, la publication des données issues de Louise/Mogador vers les sites TFO, IDELLO, ONFR et linéaire 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;
|
||||
- on ne depend plus de trois serveurs séparés qui executent chacun une copie de la même synchro;
|
||||
- les sites consomment des fichiers JSON publics, versionnés et atomiques;
|
||||
- les erreurs sont détectées avant les plaintes de production;
|
||||
- les corrections d'urgence sont possibles via une interface interne contrôlee;
|
||||
- l'état des vidéos JWP est intégré proprement sans demander à PCI de connaitre JWP;
|
||||
- Directus peut être retiré ou reduit si son rôle n'est plus nécessaire;
|
||||
- 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.
|
||||
Le système actuel fonctionne, mais il est fragile, lent a operer et difficile a expliquer. Il crée un risque direct sur la mise en ligne des emissions, particulierement quand une programmation doit apparaitre a une heure précise.
|
||||
|
||||
Ce projet vise a reduire:
|
||||
Ce projet vise a réduire:
|
||||
|
||||
- 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 dépendance opérationnelle à Directus pour des usages qu'il ne sert pas bien;
|
||||
- la complexite des relations collection/saison/épisode;
|
||||
- la duplication entre TFO, IDELLO, ONFR et linéaire;
|
||||
- la dépendance à une API Mogador legacy lente ou limitée.
|
||||
|
||||
La valeur principale est operationnelle: publier de facon previsible, auditable et recuperable.
|
||||
La valeur principale est opérationnelle: publier de façon previsible, auditable et reçuperable.
|
||||
|
||||
La valeur secondaire est strategique: preparer une transition future vers une API Louise/Mogador v2 ou des evenements PCI sans devoir recommencer l'architecture.
|
||||
La valeur secondaire est strategique: preparer une transition future vers une API Louise/Mogador v2 ou des événements 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 `Content Publication Engine` génère les JSON publics pour au moins une plateforme pilote.
|
||||
- [ ] Les JSON sont publiés en runs immuables avec un `manifest.json` actif.
|
||||
- [ ] Le système supporte les produits, collections, programmations, `today`, `latest`, recherche/index et programmations futures jusqu'à J+10.
|
||||
- [ ] Le `Media Pipeline` alimente une table `media_assets` avec l'état 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.
|
||||
- [ ] Les corrections d'urgence passent par une `Publication Console` interne avec authentification, rôles et audit.
|
||||
- [ ] Un rapport compare ce qui est attendu selon Louise/Mogador et ce qui a été publié.
|
||||
- [ ] 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.
|
||||
- [ ] Un rollback peut être fait en repointant le `manifest.json` vers un run précédent.
|
||||
- [ ] Une documentation existe pour les JSON, les schemas, les opérations, les alertes et le rollback.
|
||||
- [ ] Un pilote est valide avec production, édition, infra et au moins un fournisseur/site consommateur.
|
||||
|
||||
## Portee
|
||||
|
||||
### Inclus
|
||||
|
||||
- Analyse et formalisation des regles de publication actuelles.
|
||||
- Analyse et formalisation des règles de publication actuelles.
|
||||
- Creation du `Content Publication Engine`.
|
||||
- Generation des JSON publics versionnes.
|
||||
- Generation des JSON publics versionnés.
|
||||
- Gestion des runs et retention.
|
||||
- Generation du `manifest.json`.
|
||||
- Support des programmations futures jusqu'a J+10.
|
||||
- Support des programmations futures jusqu'à 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.
|
||||
- Authentification et rôles pour édimestres/admins internes.
|
||||
- Rapports de validation attendu vs publie.
|
||||
- Alertes operationnelles.
|
||||
- Documentation technique et operationnelle.
|
||||
- Alertes opérationnelles.
|
||||
- Documentation technique et opérationnelle.
|
||||
- Pilote sur une plateforme.
|
||||
- Strategie de migration progressive depuis Directus.
|
||||
|
||||
### Exclu
|
||||
|
||||
- Refonte complete de Louise.
|
||||
- Refonte complète de Louise.
|
||||
- Suppression immediate de Mogador Toolkit.
|
||||
- Livraison d'une API Louise/Mogador v2 par PCI.
|
||||
- Publication directe depuis Louise vers les sites.
|
||||
@@ -94,7 +93,7 @@ La valeur secondaire est strategique: preparer une transition future vers une AP
|
||||
|
||||
|Jalon|Cible|Statut|
|
||||
|---|---|---|
|
||||
|Charte validee|A definir|Brouillon|
|
||||
|Charte validée|À définir|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|
|
||||
@@ -102,62 +101,62 @@ La valeur secondaire est strategique: preparer une transition future vers une AP
|
||||
|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|
|
||||
|Validation production/édition/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|
|
||||
|Accès 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|
|
||||
|App AdonisJS/JWP|Tech lead / équipe web|Etat media JWP|A intégrer|
|
||||
|Accès JWP|Équipe web / Infra|Media Pipeline|A confirmer|
|
||||
|Bucket/CDN|Infra|Publication JSON|À définir|
|
||||
|Auth interne|Infra / équipe web|Publication Console|À définir|
|
||||
|Better Stack / alerting|Infra / équipe 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|
|
||||
|Validation édimestres|Edition numerique|Corrections d'urgence|A planifier|
|
||||
|Decision sur Directus|CTO / équipe 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|
|
||||
|Le projet devient trop large et tente de remplacer Directus, Mogador, JWP et les sites en même temps|Élevée|Eleve|Decouper en pilote, garder API PCI comme chantier séparé, livrer par increments|Sponsor / Tech lead|
|
||||
|L'équipe manque de disponibilite pour un projet d'architecture|Élevée|Eleve|Limiter le MVP, choisir une plateforme pilote, documenter les arbitrages|Manager / Tech lead|
|
||||
|Les règles métier actuelles sont implicites dans le vieux code|Élevée|Eleve|Extraire les règles, valider avec production, ajoutér rapports de comparaison|Équipe 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|
|
||||
|La Publication Console recrée 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|Élevée|Eleve|Definir precedence, expiration d'override, audit et rapport d'ecart|Équipe web / édition|
|
||||
|Le `manifest.json` est cache trop longtemps|Moyenne|Eleve|TTL court sur manifest, runs immuables cachés longuement, procedure de purge CDN|Infra / équipe web|
|
||||
|La publication atomique est mal implementee|Moyenne|Eleve|Publier d'abord un run complet, valider, puis seulement changer le manifest|Équipe web|
|
||||
|La gestion des programmations futures J+10 augmente le volume et la complexite|Moyenne|Moyen|Limiter explicitement a J+10, mesurer performance, éviter requetes par épisode|Équipe web|
|
||||
|Le Media Pipeline et le Sync Engine se couplent trop fortement|Moyenne|Eleve|Passer uniquement par `media_assets` et `publication_jobs`, éviter 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|Équipe web|
|
||||
|Le système publie un JSON incomplet mais valide techniquement|Moyenne|Eleve|Ajouter validations métier, rapports attendu vs publie et seuils bloquants|Équipe web / production|
|
||||
|L'absence d'API PCI v2 maintient certaines lenteurs|Élevée|Moyen|Concevoir le `Source Reader` remplacable et optimiser avec snapshots/diffs internes|Équipe web|
|
||||
|PCI ne livre pas d'events/webhooks à court terme|Élevée|Moyen|Ne pas en faire une dépendance 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 réseau interne|Infra|
|
||||
|Les permissions édimestres sont sous-estimees|Moyenne|Moyen|Definir rôles simples, audit obligatoire, environnement interne seulement|Edition / équipe 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|
|
||||
|Les couts opérationnels du bucket/CDN/logs augmentent|Faible|Moyen|Retention limitée, monitoring taille, lifecycle policies|Infra|
|
||||
|Le choix Laravel vs AdonisJS devient un debat bloquant|Moyenne|Moyen|Decider selon maintenabilite, séparer contrat et implementation, timeboxer la décision|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.
|
||||
Le besoin est clair et la direction technique est raisonnable, mais le projet touche plusieurs systèmes critiques: Louise/Mogador, Directus, JWP, sites consommateurs, infra, édition et production. Le principal risque n'est pas technique pur; c'est la portée.
|
||||
|
||||
## Statut actuel
|
||||
|
||||
Une proposition d'architecture Sync v2 existe. Une suite precise maintenant la separation entre:
|
||||
Une proposition d'architecture Sync v2 existe. Une suite précise maintenant la séparation entre:
|
||||
|
||||
- le chantier interne de publication;
|
||||
- le chantier PCI pour moderniser Louise/Mogador;
|
||||
- le role du Media Pipeline AdonisJS/JWP;
|
||||
- le rôle du Media Pipeline AdonisJS/JWP;
|
||||
- les contrats `media_assets` et `publication_jobs`;
|
||||
- les noms recommandes pour clarifier l'architecture.
|
||||
|
||||
@@ -166,19 +165,19 @@ Prochain jalon recommande: valider les contrats `media_assets`, `publication_job
|
||||
## Decisions / aide requise
|
||||
|
||||
- Choisir la plateforme pilote: ONFR, TFO reduit ou autre.
|
||||
- Decider si Directus est retire, reduit ou garde temporairement en double-run.
|
||||
- Decider si Directus est retiré, 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`.
|
||||
- Confirmer les rôles de la Publication Console: édimestres, admins, read-only.
|
||||
- Valider la stratégie 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
|
||||
## Changements de portée
|
||||
|
||||
|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|
|
||||
|À définir|Ajout de l'integration JWP via Media Pipeline|Augmente la portée, mais evite une architecture incomplète|Proposé|
|
||||
|À définir|Separation du chantier PCI et du chantier interne|Reduit le risque de blocage fournisseur|Proposé|
|
||||
|À définir|Ajout Publication Console pour corrections d'urgence|Ajoute auth/audit, mais remplace un besoin fort de Directus|Proposé|
|
||||
|À définir|Support des programmations futures J+10|Augmente le volume JSON, mais répond à une demande reçurrente|Proposé|
|
||||
Reference in New Issue
Block a user