Aller au contenu

Base de données — Vue d'ensemble

La SIM Database est le magasin PostgreSQL consolidé unique de GLOBAL SIM GROUP. Elle alimente toutes les lignes métier — Résidence, Market, Pressing, Restaurant, Salle de fête, Facturation, Finances et RH — via une seule base logique découpée en schémas PostgreSQL.

  • L’architecture PostgreSQL et la carte des schémas
  • L’outillage d’exploitation (Docker, Flyway, pgTAP, Make, GitHub Actions)
  • La sécurité, les rôles, les permissions et l’audit
  • Le modèle de données par domaine métier
  • La suite de tests pgTAP et les règles métier qu’elle garantit
Fenêtre de terminal
cd sim-database
make setup # crée .env depuis .env.example
make up # démarre PostgreSQL
make migrate # applique les migrations Flyway
make seed # charge les seeds de référence + dev
make test # lance les tests pgTAP
make db # ouvre psql
.
├── Makefile # wrapper de commandes multi-plateforme
├── docker-compose.yml # PostgreSQL + pgTAP en local
├── docker-compose.prod.yml # PostgreSQL dédié en production
├── config/flyway.conf # configuration Flyway
├── migrations/ # évolution du schéma, un dossier par schéma PostgreSQL
├── seeds/ # données de référence, dev et générées
├── tests/ # suite de régression SQL pgTAP
├── scripts/ # sauvegarde/restauration, bootstrap, hachage de mots de passe
└── .github/workflows/ # pipelines CI/CD
Principe Mise en œuvre
Un schéma par module Chaque module SIM possède un schéma PostgreSQL (ex. residence, market, finances).
Les migrations sont immuables Flyway validateOnMigrate=true ; ne jamais modifier une migration appliquée. En ajouter une nouvelle.
Référentiel client unique client.client est référencé par tous les modules (R1).
Chaque opération est auditée Des triggers DML génériques écrivent une ligne par opération dans audit.journal_audit.
Pas de données de dev en production prod-seed ne charge que seeds/reference/ plus un vrai compte admin.
Module Schéma PostgreSQL Rôle
Core core Paramètres transverses
Client client Référentiel client unique, pièces d’identité, contacts d’urgence
Résidence residence Bâtiments, chambres, contrats, loyers, dépôts, courts séjours
Market market Produits, catégories, fournisseurs, mouvements de stock, ventes
Pressing pressing Cycle de vie dépôt de vêtements → retrait
Restaurant restaurant Plats, catégories, commandes
Salle de fête salle_fete Réservations de salle d’événements
Facturation facturation Services, factures, lignes
Finances finances Paiements, dépenses, caisses, consolidation
RH rh Employés, présences, paie
Administration admin Utilisateurs, rôles, permissions, jetons, sauvegardes
Audit audit Journal en ajout seul
Abonnement abonnement Catégories d’abonnement