Référentiel & publication
La base métier devient aussi la source du site web.
Au départ…
Les opérations doivent maintenir programmes, campus et sessions dans un modèle cohérent que d’autres produits peuvent réutiliser. La première responsabilité est la qualité et le sens des données sources.
Ce que nous avons construit
Un référentiel Airtable partagé, avec des entités liées et des mappings explicites pour les usages en aval. Cet exemple porte sur la préservation des relations quand le catalogue évolue ; l’exemple web lié traite la publication.
- Airtable
Maintenir
Modèle métier et relations
- Supabase
Préparer la diffusion
Champs choisis, statuts et médias
- Vercel
Servir le site
Next.js lit le catalogue publiable
Le flux documenté utilise une synchronisation dédiée. Zapier peut coordonner d’autres événements, mais ne remplace pas ce moteur dans ce cas.
Entrez dans l’outil
Écran 1 sur 61. Maintenir l’offre
Le catalogue interne s’appuie sur les formations et campus liés.
Ce que nous voulons changer
Donner aux opérations un référentiel maintenable dont les relations restent fiables lorsqu’il est lu par d’autres systèmes.
Comment c’est construitModèle de données, code, contrôles et autonomie des équipes
Parcours utilisateur
- 01
Maintenir les programmes et les campus liés.
- 02
Lire les champs sources sélectionnés et distinguer une absence de donnée d’une erreur de lecture.
- 03
Préserver les relations valides pour les systèmes en aval.
Structure de la base
| Entité / table | Champs clés | Relations |
|---|---|---|
| Formations | Titre · filière · description | Campus et promotions liés |
| Promotions | Période · formation · campus | Relient l’offre et les lieux |
Implémentation technique
- Les entités sources et leurs relations ont des identifiants stables.
- Les mappings rendent explicites les champs partagés avec les produits en aval.
- Un échec de lecture des relations ne doit pas devenir une consigne d’effacement des liens existants.
Décision d’ingénierie
Une lecture en échec ne doit pas effacer les relations du catalogue
Adapté du garde-fou de synchronisation des liens formation/filière. Une lecture échouée omet la colonne ; un lien vide issu d’une lecture fiable peut l’effacer. Si tous les liens disparaissent alors que la base web en conserve, ils sont préservés et une alerte remonte. Entités renommées et vérification de base injectée pour ne révéler aucun identifiant privé.
type LinkRead = | { ok: false; reason: "unconfigured" | "read-error" } | { ok: true; links: Map<string, string | null> };export async function catalogueLinkPolicy( source: LinkRead, destinationIds: Map<string, string>, hasPublishedRelationships: () => Promise<boolean>,) { let trusted = source.ok; if (source.ok && destinationIds.size > 0 && ![...source.links.values()].some(Boolean)) { try { trusted = !(await hasPublishedRelationships()); } catch { trusted = false; // unable to verify: preserve the previous links } } return { warning: trusted ? null : "Relationships preserved; inspect source mapping", fieldsFor(sourceId: string): { category_id?: string | null } { if (!trusted || !source.ok) return {}; // omit, do not write null const linkedId = source.links.get(sourceId) ?? null; return { category_id: linkedId ? destinationIds.get(linkedId) ?? null : null, }; }, };}// Merge fieldsFor(id) into an allowlisted upsert row keyed by airtable_id.// Source reading and category synchronisation must complete beforehand.Extrait adapté de l’implémentation
Contrôles et limites
- Le navigateur ne reçoit pas de jeton Airtable ni de clé Supabase privilégiée.
- Les champs internes et données de personnel ne font pas partie du catalogue public.
- Une synchronisation n’est pas une publication : les droits, statuts et filtres de diffusion ont leur propre rôle.
Qui peut contribuer
- Métier : maintenir les formations, campus et liens Airtable.
- Communication : enrichir et valider la publication dans le back-office web.
- Développeurs : faire évoluer les mappings, contrôles et composants versionnés.
Ce qui documente ce cas
Modèle source et contrôle de synchronisation examinés. Cette capture montre le catalogue interne ; le parcours web est présenté dans l’implémentation Vercel / Supabase liée.