Aller au contenu principal

Migrations

Statut

Document de cadrage data — version initiale.

Objectif

Les migrations doivent permettre de faire évoluer la base de manière contrôlée, traçable et réversible autant que possible.

Elles sont un élément central de la gouvernance data DMV.

État actuel visible

Le workspace contient deux familles de migrations :

  • migrations Laravel dans api/database/migrations ;
  • migrations Supabase historiques dans dmv_backoffice/supabase/migrations et dmv-public/supabase/migrations.

La source canonique exacte entre ces familles doit être clarifiée progressivement.

Migrations Laravel

Les migrations Laravel couvrent les domaines principaux :

  • identité ;
  • territoire ;
  • acteurs ;
  • publications ;
  • communauté ;
  • monétisation ;
  • settings ;
  • PlayLoop ;
  • AssoSuite ;
  • chat ;
  • mairie ;
  • cache ;
  • jobs ;
  • tokens.

Migrations Supabase historiques

Les migrations Supabase couvrent notamment :

  • documents et storage ;
  • tags acteurs ;
  • feature tabs ;
  • groupes ;
  • publications personnelles ;
  • modération ;
  • favoris ;
  • commune infos ;
  • stats events ;
  • astuces ;
  • RPC diverses.

Principes de migration

  • Une migration doit être lisible et limitée à un changement cohérent.
  • Les changements destructifs doivent être évités sans plan.
  • Les données sensibles doivent être préservées.
  • Les migrations doivent être testées avant production.
  • Les changements de schéma doivent être alignés avec l'API.
  • Les migrations historiques ne doivent pas être modifiées sans raison forte.

Stratégie cible

La cible est de définir :

  • source canonique des migrations ;
  • convention de nommage ;
  • processus de revue ;
  • compatibilité avec les frontends ;
  • stratégie de rollback ;
  • documentation des changements de données ;
  • synchronisation éventuelle Supabase / Laravel.

Points à clarifier

  • Laravel devient-il la source unique des migrations ?
  • Quelles migrations Supabase restent actives ?
  • Comment migrer les RPC vers Laravel ou les conserver ?
  • Comment gérer les environnements locaux, staging et production ?
  • Comment documenter les migrations de données et pas seulement de schéma ?