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
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
├── 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