Modules métier
Le backend est organisé en tranches métier verticales. Chaque tranche a un module Nest, un contrôleur, un service, un repository, un fichier DTO et généralement une tranche e2e.ts sur base réelle.
Core / Client / Abonnement
Section intitulée « Core / Client / Abonnement »Core (src/core)
Section intitulée « Core (src/core) »Paramètres globaux clé/valeur dans core.parametre.
| Route | Permission |
|---|---|
GET /api/v1/core/parametres |
CORE.VOIR |
POST /api/v1/core/parametres |
CORE.CREER |
PUT /api/v1/core/parametres/:cle |
CORE.MODIFIER |
Client (src/client)
Section intitulée « Client (src/client) »Référentiel client unique. Les DTO gèrent les pièces d’identité (piece_identite) et les contacts d’urgence (contact_urgence).
| Route | Permission |
|---|---|
GET /api/v1/client/clients |
CLIENT.VOIR |
POST /api/v1/client/clients |
CLIENT.CREER |
PATCH /api/v1/client/clients/:id |
CLIENT.MODIFIER |
POST /api/v1/client/clients/:id/pieces-identite |
CLIENT.MODIFIER |
ClientRepository.nextClientCode produit GSG-CL-NNN en castant le suffixe numérique, évitant le basculement lexicographique au-delà de 999.
Abonnement (src/abonnement)
Section intitulée « Abonnement (src/abonnement) »Catégories d’abonnement uniquement (abonnement.categorie_abonnement).
| Route | Permission |
|---|---|
GET /api/v1/abonnement/categories |
ABONNEMENT.VOIR |
POST /api/v1/abonnement/categories |
ABONNEMENT.CREER |
PATCH /api/v1/abonnement/categories/:id |
ABONNEMENT.MODIFIER |
DELETE /api/v1/abonnement/categories/:id |
ABONNEMENT.SUPPRIMER |
Residence
Section intitulée « Residence »Le ResidenceModule (src/residence/) est l’implémentation de référence de l’architecture du projet : bâtiments, logements, contrats de bail, échéances de loyer, charges refacturées, courts séjours, abonnements, photos d’inventaire et portail résident.
Sous-modules
Section intitulée « Sous-modules »| Sous-module | Fichiers | Périmètre |
|---|---|---|
| Bâtiments | batiments.* |
Référentiel multi-bâtiments |
| Logements | logements.* |
Inventaire locatif, numérotation |
| Contrats / loyers | residence.* |
Contrats de bail, échéances, dépôts, PDF |
| Charges | charges.* |
Charges refacturées |
| Courts séjours | sejours.* |
Nuitées/siestes |
| Abonnements | abonnements.* |
Services récurrents |
| Portail | portail.* |
Espace résident en lecture seule |
| Inventaire | etat-lieux.* |
Photos d’entrée/sortie |
Routes clés
Section intitulée « Routes clés »| Route | Permission | Rôle |
|---|---|---|
POST /api/v1/residence/contrats |
RESIDENCE.CREER |
Créer un contrat |
POST /api/v1/residence/contrats/:id/activer |
RESIDENCE.MODIFIER |
EN_ATTENTE → ACTIF |
POST /api/v1/residence/contrats/:id/resilier |
RESIDENCE.MODIFIER |
ACTIF → RESILIE |
POST /api/v1/residence/echeances/:id/encaisser |
FINANCES.CREER |
Encaissement d’une échéance |
POST /api/v1/residence/contrats/:id/encaisser-loyer-lot |
FINANCES.CREER |
Encaissement en lot |
GET /api/v1/residence/suivi |
RESIDENCE.VOIR |
Vue de suivi des loyers |
GET /api/v1/residence/impayes |
RESIDENCE.VOIR |
Vue des retards/partiels |
GET /api/v1/residence/occupation |
RESIDENCE.VOIR |
Occupation par bâtiment |
Machines à états
Section intitulée « Machines à états »| Entité | États |
|---|---|
contrat_location |
EN_ATTENTE, ACTIF, RESILIE, TERMINE |
logement |
DISPONIBLE, RESERVE, OCCUPE, EN_NETTOYAGE, EN_MAINTENANCE, INDISPONIBLE |
charge_facturee |
IMPAYEE, PARTIELLE, PAYEE |
sejour_court |
EN_COURS, TERMINE, ANNULE |
abonnement |
ACTIF, SUSPENDU, RESILIE, EXPIRE |
Portail résident
Section intitulée « Portail résident »GET /api/v1/residence/portail/* est protégé par RESIDENT.VOIR. Toutes les requêtes sont limitées à AuthUser.idClient. Les routes incluent :
resumeecheancesetecheances/:id/recu/pdfetat-des-lieuxetetat-des-lieux/:id/photopaiementsetpaiements/:id/recu/pdfcaution
Modules commerciaux
Section intitulée « Modules commerciaux »Tous les modules commerciaux utilisent SettlementService de FacturationModule pour créer ou solder des lignes facturation.facture.
Market (src/market)
Section intitulée « Market (src/market) »Affiché « Super-Marché » dans le frontend (routes
/supermarche/*, featuresrc/features/supermarche) ; permissionsMARCHANDISE.*.
| Domaine | Tables |
|---|---|
| Catalogue | categorie_produit, fournisseur, produit |
| Stock | mouvement_stock (le trigger possède quantite_stock) |
| Ventes | vente, ligne_vente |
quantite_stock n’est jamais écrit directement ; il est calculé par trg_mouvement_stock_solde. Les mouvements manuels sont ENTREE, SORTIE, AJUSTEMENT.
Pressing (src/pressing)
Section intitulée « Pressing (src/pressing) »Cycle de vie des commandes : DEPOSE → EN_TRAITEMENT → PRET → RETIRE / ANNULEE.
- Le dépôt peut inclure une avance (
acompte) qui crée une factureCOMMANDE_PRESSINGPARTIELLE. - Le retrait (
retirer) solde le reste sur la même facture. - L’annulation n’est possible qu’avant toute facture.
Restaurant (src/restaurant)
Section intitulée « Restaurant (src/restaurant) »Cycle de vie des commandes :
EN_COURS → EN_PREPARATION → SERVIE → PAYEE / ANNULEELes commandes sont entièrement payées à la création. Les transitions de statut sont garanties par TRANSITIONS_COMMANDE_STATUT.
Salle de fête (src/salle_fete)
Section intitulée « Salle de fête (src/salle_fete) »Cycle de vie des réservations : RESERVEE → CONFIRMEE → REALISEE / ANNULEE.
confirmerencaisse une avance et crée une factureRESERVATION_FETEPARTIELLE.realiserencaisse le solde sur la même facture.disponibilitesretourne les créneaux occupés pour une date donnée.
Facturation et Finances
Section intitulée « Facturation et Finances »Facturation (src/facturation)
Section intitulée « Facturation (src/facturation) »- Prestations (
prestations) - Factures (
factures,factures/:id/pdf,factures/:id/ticket) SettlementServiceexporté pour tous les modules commerciauxFacturationRepository.prochainNumeroFactureproduitGSG-FAC-YYYY-NNN
SettlementService.settle résout une activité, crée/lit une facture, applique un paiement et retourne montant_total, montant_paye, reste, statut recalculés par le trigger.
Finances (src/finances)
Section intitulée « Finances (src/finances) »| Domaine | Tables principales |
|---|---|
| Paiements | paiement, application_paiement |
| Dépenses | depense, categorie_depense |
| Tiroirs-caisses | caisse, periode_caisse, tirage |
| Moyens de paiement | moyen_paiement |
| Consolidation | vues ca_par_activite, tableau_de_bord |
Règles des tiroirs-caisses :
creerPaiement/creerDepenseexigent uneperiode_caisseouverte pour la caisse choisie.creerTiragecalculemontant_attendudepuisencaissements − décaissements − dépenseset émet une notification HIGH siecart !== 0.
RH et Dashboard
Section intitulée « RH et Dashboard »RH (src/rh)
Section intitulée « RH (src/rh) »| Entité | Routes |
|---|---|
| Services | services |
| Employés | employes |
| Présences | pointages, pointages/:id/depart |
| Paie | paies, paies/:id/elements, paies/:id/recalculer, paies/:id/valider, paies/:id/payer |
heure_arriveeetduree_travailleesont possédées par les triggers.- Les totaux de paie sont recalculés par
trg_element_salaire_paie. BulletinPdfServicegénère les bulletins de paie en PDF.
Dashboard (src/dashboard)
Section intitulée « Dashboard (src/dashboard) »Tuiles agrégées pour le tableau de bord dirigeant et les tableaux par activité. Réutilise RapportsModule et DashboardRepository. Formats de sortie : json, pdf, xlsx.
Audit, Rapports, Uploads, Jobs
Section intitulée « Audit, Rapports, Uploads, Jobs »Audit (src/audit)
Section intitulée « Audit (src/audit) »Accès en lecture seule à audit.journal_audit. Gère les rapports JSON, PDF et XLSX. POST /api/v1/audit/masquer masque les champs sensibles comme mot_de_passe avant affichage.
Rapports (src/rapports)
Section intitulée « Rapports (src/rapports) »Endpoints d’agrégation en lecture seule :
/api/v1/rapports/synthese-globale/api/v1/rapports/financier/api/v1/rapports/activites/:code/api/v1/rapports/rh/api/v1/rapports/series
La sérialisation CSV / Excel utilise le délimiteur ; et aplatit récursivement le JSON imbriqué.
Uploads (src/uploads)
Section intitulée « Uploads (src/uploads) »POST /api/v1/uploads— upload multipart defile+categorieGET /api/v1/uploads?key=...— télécharge les octets de l’objet
Catégories : client-photo, piece-identite, plat-photo, etat-lieux, produit-photo.
Jobs (src/jobs)
Section intitulée « Jobs (src/jobs) »Jointure cron / BullMQ. Exemples de planifications cron :
| Job | Cron | Rôle |
|---|---|---|
generer-echeances |
12 2 * * * |
Générer les échéances de loyer |
recalculer-paie |
41 4 1 * * |
Recalculer la paie |
reesolde-stock |
23 3 * * * |
Recalculer le stock market |
transition-contrats-expires |
30 2 * * * |
Expirer les contrats terminés |
sauvegarde-auto |
* * * * * |
Déclencher les sauvegardes planifiées |
Les routes de déclenchement manuel sont sous POST /api/v1/jobs/*.
