groupe-meditation/docs/REGLES_METIER.md
Daniel Allaire 393f9243cb Renforcer isolation multi-tenant
- scoper les postes et permissions par groupe

- retirer les lectures district du calendrier, des evenements et anniversaires

- documenter les regles d isolation multi-groupe
2026-05-31 18:12:26 -04:00

375 lines
32 KiB
Markdown

# Registre des regles metier
Ce document inventorie les regles metier connues de l'application en les
alignant sur le comportement reel du code. Il sert de reference pour les
developpements, les tests, les validations apres deploiement et les discussions
fonctionnelles.
Le registre ne liste pas les erreurs techniques generiques comme `objet introuvable` quand elles ne portent pas une intention metier particuliere. Il
liste toutefois les droits d'acces, les contraintes de saisie, les transitions
d'etat, les invariants financiers et les protections de donnees.
Quand le comportement actuel ne correspond pas clairement a l'intention metier,
la regle est formulee selon le code et l'ecart est liste dans la section
`Ecarts connus et decisions requises`.
## Acces et identite
- RM-ACC-001 - Le compte `Sysadmin` est cree au deploiement initial avec le PIN `0000`.
- RM-ACC-002 - Le compte `Sysadmin` a acces a tous les modules.
- RM-ACC-003 - Le compte `Sysadmin` ne peut pas etre desactive ni supprime.
- RM-ACC-004 - Seul `Sysadmin` peut impersonifier un autre membre.
- RM-ACC-005 - Une session impersonifiee conserve l'identite du sysadmin dans le jeton.
- RM-ACC-006 - Un membre inactif ne peut pas ouvrir de session.
- RM-ACC-007 - Un token invalide, expire ou associe a un autre groupe est refuse.
- RM-ACC-008 - Un PIN doit etre compose de quatre chiffres.
- RM-ACC-009 - L'identifiant de connexion, stocke dans la colonne `courriel`, est unique dans un groupe.
- RM-ACC-010 - La connexion cherche l'identifiant sans tenir compte de la casse.
- RM-ACC-011 - Un jeton de session dure 30 jours par defaut.
- RM-ACC-012 - Un jeton de session dure 90 jours lorsque `se souvenir de moi` est choisi.
- RM-ACC-013 - Les operations d'administration courante sont reservees aux membres occupant un poste executif, sauf exception explicite.
- RM-ACC-014 - `Sysadmin` satisfait toutes les verifications de role.
## Invitations et inscriptions
- RM-INV-001 - Seul un executif peut generer une invitation.
- RM-INV-002 - Un code d'invitation est unique et comporte 12 caracteres hexadecimaux.
- RM-INV-003 - Un code d'invitation expire selon la configuration serveur.
- RM-INV-004 - Un code d'invitation ne peut etre utilise qu'une seule fois.
- RM-INV-005 - Une inscription cree le membre dans le groupe lie a l'invitation.
- RM-INV-006 - Le prenom et le nom saisis a l'inscription sont normalises en casse titre.
- RM-INV-007 - Le courriel saisi a l'inscription est normalise en minuscules.
- RM-INV-008 - Une inscription ouvre immediatement une session pour le nouveau membre.
## Membres et postes
- RM-MEM-001 - Le prenom et le telephone d'un membre sont obligatoires.
- RM-MEM-002 - Un membre ne peut pas supprimer son propre compte par le droit a l'oubli.
- RM-MEM-003 - Un membre peut modifier son profil personnel.
- RM-MEM-004 - Un changement de courriel doit conserver l'unicite dans le groupe.
- RM-MEM-005 - Un changement de PIN exige l'ancien PIN.
- RM-MEM-006 - Un executif peut consulter les membres actifs du groupe.
- RM-MEM-007 - La desactivation d'un membre conserve son historique.
- RM-MEM-008 - Le droit a l'oubli anonymise le membre au lieu d'effacer les donnees relationnelles.
- RM-MEM-009 - Le droit a l'oubli conserve l'identifiant technique et le prenom du membre pour preserver l'historique.
- RM-MEM-010 - Le droit a l'oubli retire le nom, neutralise le telephone, la date d'abstinence, le courriel de connexion, le PIN, les preferences de notification et les abonnements push.
- RM-MEM-011 - La desactivation ou la reactivation d'un membre agit seulement sur son droit de connexion.
- RM-POS-001 - Les postes appartiennent a une categorie valide: `executif`, `service` ou `physique`.
- RM-POS-002 - Une affectation active lie un membre, un poste et une date de debut.
- RM-POS-003 - Une affectation directe creee par le module d'affectation produit une decision adoptee de type `Nomination`.
- RM-POS-004 - Une nomination exige un proposeur et un secondeur actifs et distincts.
- RM-POS-005 - Un poste deja affecte ne peut pas etre affecte une seconde fois tant que l'affectation active existe.
- RM-POS-006 - Un poste doit etre aboli avant d'etre supprime definitivement.
- RM-POS-007 - Les permissions de modules sont associees aux postes.
- RM-POS-008 - Seul un executif peut creer, modifier, abolir, reactiver ou supprimer un poste.
- RM-POS-009 - Un poste aboli n'apparait pas dans les listes ordinaires, sauf si l'affichage des postes abolis est demande.
- RM-POS-010 - Le nom d'un poste est obligatoire.
- RM-POS-011 - Un membre peut postuler lui-meme sur un poste disponible.
- RM-POS-012 - Un membre ne peut pas postuler deux fois pour le meme poste.
- RM-POS-013 - Un executif peut proposer un autre membre pour un poste.
- RM-POS-014 - La proposition d'un autre membre ne peut pas viser le membre qui fait la proposition; il doit alors utiliser sa propre candidature.
- RM-POS-015 - Une candidature ou nomination deja traitee ne peut plus etre traitee de nouveau.
- RM-POS-016 - Le traitement direct d'une candidature acceptee cree une affectation active.
- RM-POS-017 - Une candidature refusee conserve son statut `refusee`.
- RM-POS-018 - Une nomination refusee marque la candidature comme refusee.
- RM-POS-019 - Terminer un mandat met l'affectation au statut `termine` et conserve la date de fin, la raison et le membre qui l'a terminee.
- RM-POS-020 - Les modules consultables par un membre dependent des permissions associees a ses postes, avec acces complet pour `Sysadmin`.
- RM-POS-021 - Les permissions de modules accordees aux postes sont reconnues par les verifications API des responsabilites specialisees.
- RM-POS-022 - Les postes et leurs permissions appartiennent a un seul groupe.
- RM-POS-023 - Un poste d'un groupe ne peut jamais accorder un acces, une affectation ou une candidature dans un autre groupe.
## Reunions et dates
- RM-REU-001 - Les dates de reunion doivent correspondre au jour configure dans les parametres du groupe.
- RM-REU-002 - Une reunion reguliere ne peut pas etre creee deux fois pour la meme semaine ISO.
- RM-REU-003 - L'assemblee d'affaires mensuelle doit correspondre a l'ordre configure: premiere, deuxieme, troisieme, quatrieme ou derniere reunion du mois.
- RM-REU-004 - Les rapports de rencontre et d'assemblee sont consultables par tous les membres.
- RM-REU-005 - La creation et la saisie des rapports de rencontre et d'assemblee sont reservees aux executifs.
- RM-REU-006 - `Sysadmin` peut saisir des informations a posteriori en specifiant la date.
- RM-REU-007 - Le jour de reunion configure dans le groupe pilote les dates permises pour les collectes, rencontres et assemblees.
- RM-REU-008 - L'heure de reunion configuree bloque la saisie de collecte le jour meme avant l'heure prevue, sauf pour `Sysadmin`.
- RM-REU-009 - Une rencontre hebdomadaire est de type `reguliere`.
- RM-REU-010 - Une assemblee d'affaires est de type `affaires`.
- RM-REU-011 - Une seule assemblee d'affaires peut exister pour un mois donne.
- RM-REU-012 - Les presences d'une assemblee peuvent etre resaisies; la nouvelle saisie remplace les presences precedentes.
- RM-REU-013 - La saisie des presences d'assemblee est reservee au secretaire ou a l'executif.
- RM-REU-014 - Le proces-verbal d'une assemblee est rattache a une reunion du groupe.
- RM-REU-015 - La creation et la modification d'un proces-verbal sont reservees au secretaire ou a l'executif.
- RM-REU-016 - L'adoption d'un proces-verbal exige un proposeur et un secondeur.
- RM-REU-017 - L'adoption d'un proces-verbal ajoute une decision d'adoption au proces-verbal.
- RM-REU-018 - Un rapport RSG est reserve au RSG, au RSG substitut, a l'executif ou a `Sysadmin`.
- RM-REU-019 - Les rotations futures et leur historique sont consultables par les membres.
- RM-REU-020 - La planification ou la suppression d'une rotation est reservee aux executifs.
## Collectes
- RM-COL-001 - La saisie d'une collecte est reservee aux executifs.
- RM-COL-002 - Une collecte ne peut pas etre saisie dans le futur, sauf par `Sysadmin`.
- RM-COL-003 - La date d'une collecte doit etre une date de reunion, sauf par `Sysadmin`.
- RM-COL-004 - La date de saisie proposee doit faire partie des 52 dernieres rencontres sans collecte deja enregistree.
- RM-COL-005 - Il ne peut y avoir qu'une collecte par date.
- RM-COL-006 - Une collecte en attente peut etre modifiee; une collecte confirmee ou recue ne le peut plus.
- RM-COL-007 - Le membre qui saisit une collecte ne peut pas confirmer son propre montant.
- RM-COL-008 - Si le tresorier saisit ou confirme une collecte, la reception est automatique.
- RM-COL-009 - Quand le tresorier recoit une collecte, la transaction comptable utilise la date de la collecte.
- RM-COL-010 - Une collecte recue debite l'encaisse.
- RM-COL-011 - Une collecte saisie puis confirmee par un non-tresorier reste au statut `confirmee` jusqu'a reception par le tresorier.
- RM-COL-012 - Le registre de tresorerie inclut les collectes recues.
- RM-COL-013 - Le module de collecte peut filtrer par mois, annee et statut.
- RM-COL-014 - Tous les montants de collecte participent aux soldes seulement lorsqu'ils atteignent l'etat comptable approprie.
## Tresorerie
- RM-TRE-001 - Les soldes de tresorerie sont calcules a partir du registre comptable.
- RM-TRE-002 - Le solde bancaire disponible est le solde en banque moins les reserves actives et les engagements non debites.
- RM-TRE-003 - L'encaisse est consideree comme disponible.
- RM-TRE-004 - Un depot peut provenir de l'encaisse ou d'un don direct au compte bancaire.
- RM-TRE-005 - Un depot depuis l'encaisse ne peut pas depasser l'encaisse disponible.
- RM-TRE-006 - Un retrait bancaire ne peut pas depasser le solde en banque.
- RM-TRE-007 - Un retrait bancaire ne peut pas faire depasser le total des reserves par rapport au solde en banque.
- RM-TRE-008 - Un releve bancaire ne peut pas etre inferieur au total des reserves.
- RM-TRE-009 - Les transactions du registre sont affichees de la plus recente a la plus ancienne.
- RM-TRE-010 - Le rapport PDF de tresorerie utilise l'etat des resultats du mois precedent.
- RM-TRE-011 - Les positions de tresorerie du rapport PDF sont celles du dernier jour du mois precedent.
- RM-TRE-012 - Les actions qui modifient la tresorerie sont reservees au tresorier ou a l'executif.
- RM-TRE-013 - Les membres peuvent voir les elements a traiter, mais seuls les executifs peuvent les confirmer.
- RM-TRE-014 - Une operation bancaire doit avoir un type parmi `depot`, `retrait` ou `releve`.
- RM-TRE-015 - Une operation bancaire doit avoir un montant positif.
- RM-TRE-016 - Un depot direct de don debite la banque sans crediter l'encaisse.
- RM-TRE-017 - Un depot depuis l'encaisse debite la banque et credite l'encaisse.
- RM-TRE-018 - Un retrait credite la banque et debite l'encaisse.
- RM-TRE-019 - Un releve bancaire cree une correction de banque egale a l'ecart entre le releve saisi et le solde bancaire courant.
- RM-TRE-020 - Le registre comptable conserve la source de chaque transaction quand elle provient d'une table applicative.
- RM-TRE-021 - Le filtre du registre permet de restreindre par mois et par type de transaction.
- RM-TRE-022 - Les ventes de litterature remises au tresorier debitent l'encaisse.
- RM-TRE-023 - Les depenses payees creditent le compte utilise: banque ou encaisse.
- RM-TRE-024 - Les contributions debitees creditent la banque.
## Reserves
- RM-RES-001 - Une reserve se cree avec un solde initial de zero.
- RM-RES-002 - Le montant d'une reserve ne se modifie pas directement.
- RM-RES-003 - Les variations de reserve passent par un virement de reserve.
- RM-RES-004 - Les virements de reserve sont historises.
- RM-RES-005 - Un virement ne peut pas avoir la meme source et la meme destination.
- RM-RES-006 - Le solde disponible peut etre utilise comme source ou destination de virement.
- RM-RES-007 - Un virement depuis le disponible ne peut pas depasser le disponible bancaire.
- RM-RES-008 - Un virement depuis une reserve ne peut pas depasser le solde de cette reserve.
- RM-RES-009 - Une reserve ne peut etre supprimee que si son solde est nul.
- RM-RES-010 - Une reserve supprimee est desactivee, pas effacee du registre.
- RM-RES-011 - La liste des reserves n'affiche que les reserves actives.
- RM-RES-012 - Le solde d'une reserve est calcule a partir des mouvements de reserve, pas a partir d'une saisie manuelle.
- RM-RES-013 - Les mouvements de reserve apparaissent au registre.
- RM-RES-014 - Les mouvements de reserve conservent source, destination, montant, type, note, createur et date de creation.
- RM-RES-015 - Le total des reserves actives ne doit jamais exceder le solde bancaire.
- RM-RES-016 - Le disponible n'est pas une reserve; il est calcule comme solde bancaire moins reserves et engagements.
## Depenses
- RM-DEP-001 - Un membre ordinaire ne peut soumettre une depense qu'en son nom.
- RM-DEP-002 - Un executif peut soumettre une depense au nom d'un autre membre actif.
- RM-DEP-003 - Seul `Sysadmin` peut saisir une date de depense a posteriori.
- RM-DEP-004 - Une depense soumise doit etre traitee par le tresorier ou un executif.
- RM-DEP-005 - Une depense par encaisse est payee immediatement si l'encaisse le permet.
- RM-DEP-006 - Une depense par cheque ou virement devient un engagement en attente de debit.
- RM-DEP-007 - Une depense bancaire ne peut pas etre engagee si le disponible bancaire est insuffisant.
- RM-DEP-008 - Le debit final d'une depense bancaire ne peut pas faire depasser les reserves par rapport au solde en banque.
- RM-DEP-009 - Une depense soumise non traitee peut etre rejetee.
- RM-DEP-010 - Une depense deja traitee ne peut plus etre rejetee.
- RM-DEP-011 - Les modes valides de traitement d'une depense sont `COLLECTE`, `CHEQUE` et `VIREMENT`.
- RM-DEP-012 - Une depense deja traitee ne peut pas etre traitee de nouveau.
- RM-DEP-013 - Une depense deja payee ne peut pas faire l'objet d'une confirmation de debit.
- RM-DEP-014 - Seules les depenses par cheque ou virement necessitent une confirmation de debit bancaire.
- RM-DEP-015 - Une preuve de depense peut etre jointe et conservee dans le repertoire des preuves.
- RM-DEP-016 - Rejeter une depense supprime aussi son fichier de preuve s'il existe.
- RM-DEP-017 - La liste des depenses peut etre filtree selon payee/non payee et confirmee/non confirmee.
- RM-DEP-018 - Modifier une depense est reserve au tresorier ou a l'executif.
- RM-DEP-019 - Modifier la methode d'une depense exige une methode valide.
## Contributions
- RM-CON-001 - Une contribution est une decision de groupe de type `Contribution`.
- RM-CON-002 - Une contribution exige un proposeur et un secondeur actifs et distincts.
- RM-CON-003 - Le destinataire `District 87-16` existe au deploiement initial.
- RM-CON-004 - Le destinataire `District 87-16` est protege contre la modification et la suppression.
- RM-CON-005 - Une contribution devient un engagement tant que le debit bancaire n'est pas confirme.
- RM-CON-006 - Le debit final d'une contribution ne peut pas depasser le solde en banque.
- RM-CON-007 - Le debit final d'une contribution ne peut pas faire depasser les reserves par rapport au solde en banque.
- RM-CON-008 - Une contribution doit avoir un montant positif.
- RM-CON-009 - Les modes valides de contribution sont `DU`, `VIREMENT` et `CHEQUE`.
- RM-CON-010 - La destination d'une contribution doit etre un destinataire actif du groupe.
- RM-CON-011 - Un destinataire de contribution est unique par nom dans un groupe.
- RM-CON-012 - Un destinataire supprime est desactive, pas efface.
- RM-CON-013 - Le calcul de repartition utilise la configuration active du groupe ou la repartition par defaut.
- RM-CON-014 - Les destinations de repartition manquantes sont completees a zero.
- RM-CON-015 - La configuration de repartition est reservee aux executifs.
- RM-CON-016 - Le total d'une repartition doit etre exactement 100 %, avec une tolerance de 0,01.
- RM-CON-017 - Les destinations de repartition valides sont `district`, `region`, `bsg` et `intergroupe`.
- RM-CON-018 - Un pourcentage de repartition ne peut pas etre negatif.
- RM-CON-019 - Une contribution cree automatiquement une decision adoptee de type `Contribution`.
- RM-CON-020 - `Sysadmin` peut utiliser la date d'envoi comme date de decision; les autres membres utilisent la date du jour.
## Gouvernance
- RM-GOU-001 - Une proposition ne stocke pas de type metier dedie.
- RM-GOU-002 - Une proposition exige un objet.
- RM-GOU-003 - Une proposition peut etre secondee par un autre membre.
- RM-GOU-004 - Un membre ne peut pas seconder sa propre proposition.
- RM-GOU-005 - Un executif peut seconder une proposition au nom d'un autre membre actif.
- RM-GOU-006 - Seule une proposition secondee peut etre transformee en decision.
- RM-GOU-007 - Transformer une proposition en resolution exige les sections `ETANT DONNE QUE` et `LE GROUPE A DECIDE DE`.
- RM-GOU-008 - Une resolution adoptee recoit un numero avec le prefixe `RES`.
- RM-GOU-009 - Une nomination adoptee recoit le prefixe `NOM`.
- RM-GOU-010 - Une contribution adoptee recoit le prefixe `DON`.
- RM-GOU-011 - Une proposition rejetee est conservee.
- RM-GOU-012 - Rejeter une proposition exige la section `ETANT DONNE QUE`.
- RM-GOU-013 - Le rapport des resolutions affiche les decisions prises en groupe.
- RM-GOU-014 - Une proposition peut etre rattachee a une reunion existante du groupe.
- RM-GOU-015 - Une proposition a l'etat initial `proposee`.
- RM-GOU-016 - Seule une proposition a l'etat `proposee` peut etre secondee.
- RM-GOU-017 - Seules les propositions aux statuts `proposee` ou `secondee` peuvent etre rejetees.
- RM-GOU-018 - Une proposition adoptee conserve la date d'adoption.
- RM-GOU-019 - Le type d'une decision est derive du prefixe de son numero (`RES`, `NOM`, `DON`) ou de son lien metier.
- RM-GOU-020 - Une nomination adoptee peut accepter automatiquement la candidature liee.
- RM-GOU-021 - Une nomination rejetee peut refuser automatiquement la candidature liee.
- RM-GOU-022 - L'historique des resolutions peut etre filtre par annee et par type.
- RM-GOU-023 - Les decisions adoptees sont ordonnees par date de vote/adoption decroissante dans l'historique.
## Rapports PDF et rapports de consultation
- RM-RAP-001 - La generation PDF exige que le moteur PDF serveur soit installe.
- RM-RAP-002 - Le mois d'un rapport financier doit etre entre 1 et 12.
- RM-RAP-003 - Le rapport des resolutions n'affiche pas de colonne de resultat.
- RM-RAP-004 - La description du rapport des resolutions est `Decisions prises en Groupe`.
- RM-RAP-005 - Dans le rapport des resolutions, la colonne `Resolution` affiche `LE GROUPE A DECIDE DE` lorsque ce champ est renseigne.
- RM-RAP-006 - Le sommaire final du rapport des resolutions est retire.
- RM-RAP-007 - Le rapport de tresorerie presente un etat des resultats mensuel, les positions de tresorerie et les reserves.
- RM-RAP-008 - Les rapports de rencontre et d'assemblee sont concus pour etre imprimables en format lettre.
- RM-RAP-009 - Les rapports consultables ne doivent pas exiger un poste executif, sauf pour leur creation ou modification.
## Litterature et jetons
- RM-LIT-001 - La gestion du catalogue de litterature est reservee au responsable de la litterature ou a l'executif.
- RM-LIT-002 - Une vente de litterature exige une quantite positive.
- RM-LIT-003 - Une vente ne peut pas depasser le stock disponible.
- RM-LIT-004 - Le stock de litterature ne peut pas devenir negatif.
- RM-LIT-005 - L'inventaire initial de litterature est charge depuis `data/import/Liste-de-prix-rev.-Fevrier-2026.csv`.
- RM-LIT-006 - Les categories valides de litterature sont `livre`, `brochure`, `depliant` et `pamphlet`.
- RM-LIT-007 - Ajouter ou modifier un titre exige une categorie valide.
- RM-LIT-008 - L'inventaire est visible aux membres connectes.
- RM-LIT-009 - Une vente de litterature non remise reste a recevoir par le tresorier.
- RM-LIT-010 - Une vente de litterature deja remise ne peut pas etre recue une seconde fois.
- RM-JET-001 - La gestion des jetons est reservee au responsable des jetons ou a l'executif.
- RM-JET-002 - Un type de jeton doit faire partie des types permis.
- RM-JET-003 - Un jeton `multiple` exige un nombre d'annees d'au moins 2.
- RM-JET-004 - Un jeton peut etre rattache a un membre actif ou etre enregistre sans membre.
- RM-JET-005 - Le stock de jetons est estime a partir des remises des 30 derniers jours.
- RM-JET-006 - Une suggestion de commande est emise si au moins deux jetons d'un type ont ete remis dans les 30 derniers jours.
- RM-JET-007 - Le jeton de desir est a surveiller si au moins quatre ont ete remis dans les 30 derniers jours.
## Evenements et calendrier
- RM-EVE-001 - Les evenements affiches incluent les anniversaires de sobriete et les evenements ad hoc.
- RM-EVE-002 - Les anniversaires de sobriete sont calcules pour tous les membres actifs du district.
- RM-EVE-003 - Un anniversaire du 29 fevrier est ramene au 1er mars pour les annees non bissextiles.
- RM-EVE-004 - Les evenements passes et futurs peuvent etre retournes selon les bornes demandees.
- RM-EVE-005 - Les evenements ad hoc sont visibles par les membres du district.
- RM-EVE-006 - La creation et la suppression d'un evenement ad hoc sont reservees aux executifs.
- RM-EVE-007 - Les evenements sont tries par date croissante.
## Journal et notifications
- RM-JOU-001 - Les requetes authentifiees qui modifient des donnees sont journalisees.
- RM-JOU-002 - Lorsqu'un sysadmin impersonifie un membre, le journal conserve l'identite du membre agissant et de l'admin.
- RM-NOT-001 - Les notifications push sont optionnelles et dependent de la configuration VAPID.
- RM-NOT-002 - Un abonnement push invalide ou expire peut etre retire automatiquement.
- RM-NOT-003 - Un membre peut enregistrer, consulter et supprimer son propre abonnement push.
- RM-NOT-004 - Les notifications ne peuvent pas etre activees si le serveur n'a pas de configuration VAPID.
- RM-JOU-003 - Le journal est reserve aux executifs.
- RM-JOU-004 - Les requetes `GET`, `HEAD` et `OPTIONS` ne sont pas journalisees comme actions modificatrices.
- RM-JOU-005 - Le journal n'enregistre pas le corps des requetes; il conserve la methode, le chemin, le statut HTTP, l'adresse IP, le user-agent et les parametres de requete non sensibles.
## Parametres et donnees initiales
- RM-PAR-001 - La modification des parametres du groupe est reservee aux executifs.
- RM-PAR-002 - Les ordres valides d'assemblee d'affaires sont `premiere`, `deuxieme`, `troisieme`, `quatrieme` et `derniere`.
- RM-PAR-003 - Une heure de reunion invalide est ignoree et retire l'heure configuree.
- RM-PAR-004 - Le deploiement initial cree le groupe `Groupe Meditation` avec le district `87-16` et la region `87`.
- RM-PAR-005 - Le deploiement initial cree les postes de base du groupe.
- RM-PAR-006 - Le deploiement initial cree une invitation pour les prochains membres.
- RM-PAR-007 - Le deploiement initial cree le destinataire de contribution protege `District 87-16`.
- RM-PAR-008 - Le deploiement initial charge le catalogue de litterature depuis `data/import` quand le fichier normalise est present.
## Transitions d'etat
| Domaine | Etat initial | Transition | Etat final | Condition |
|--------------|-------------------------|-----------------------------|------------|--------------------------------------------|
| Proposition | `proposee` | Seconder | `secondee` | Secondeur distinct du proposeur |
| Proposition | `secondee` | Adopter | `adoptee` | Executif, sections decisionnelles remplies |
| Proposition | `proposee` ou `secondee` | Rejeter | `rejetee` | Executif, section `ETANT DONNE QUE` remplie |
| Collecte | `en_attente` | Confirmer | `confirmee` | Confirmateur distinct du saisisseur |
| Collecte | `en_attente` ou `confirmee` | Recevoir | `recu` | Tresorier ou executif |
| Depense | Soumise | Traiter en encaisse | Payee | Encaisse suffisante |
| Depense | Soumise | Traiter par cheque/virement | Engagee | Disponible bancaire suffisant |
| Depense | Engagee | Confirmer debit | Payee | Banque suffisante et reserves preservees |
| Depense | Soumise | Rejeter | Supprimee | Non traitee |
| Contribution | Creee | Enregistrer | Engagee | Decision `DON` creee |
| Contribution | Engagee | Confirmer debit | Debitee | Banque suffisante et reserves preservees |
| Candidature | `proposee` | Retirer | `retiree` | Par le membre candidat |
| Candidature | `proposee` | Refuser | `refusee` | Executif ou membre nomine |
| Candidature | `proposee` | Accepter | `acceptee` | Decision `NOM` et affectation creees |
| Affectation | `actif` | Terminer | `termine` | Executif |
## Matrice des permissions par module
| Module | Consultation | Creation / saisie | Modification / confirmation | Suppression |
|------------------------|----------------------------------|-------------------------------------|-----------------------------------------|-------------------------------------------------------|
| Accueil | Membre connecte | \- | \- | \- |
| Profil | Membre connecte | Membre connecte | Son propre profil | \- |
| Gestion des membres | Executif | Executif | Executif | Executif, sauf Sysadmin et soi-meme |
| Parametres groupe | Membre connecte | \- | Executif | \- |
| Journal | Executif | Automatique | \- | \- |
| Gouvernance | Membre connecte | Membre connecte | Executif pour adopter/rejeter | \- |
| Postes a pourvoir | Membre connecte | Membre connecte | Membre concerne / executif selon action | Retrait par candidat |
| Gestion des postes | Membre connecte pour lister | Executif | Executif | Executif |
| Gestion des mandats | Membre connecte pour ses mandats | Executif | Executif | \- |
| Rencontre hebdomadaire | Membre connecte | Executif | Executif | \- |
| Assemblee d'affaires | Membre connecte | Secretaire ou executif | Secretaire ou executif | \- |
| PV | Membre connecte | Secretaire ou executif | Secretaire ou executif | \- |
| Rapport RSG | Membre connecte | RSG, RSG substitut ou executif | RSG, RSG substitut ou executif | \- |
| Collecte 7e | Executif | Executif | Executif / tresorier selon etape | \- |
| Tresorerie | Membre connecte | Tresorier ou executif | Tresorier ou executif | Tresorier ou executif selon action |
| Depense | Membre connecte | Membre connecte | Tresorier ou executif | Tresorier ou executif si non traitee |
| Donner au suivant | Tresorier ou executif | Tresorier ou executif | Tresorier ou executif | Tresorier ou executif pour destinataires non proteges |
| Litterature | Membre connecte | Responsable litterature ou executif | Responsable litterature ou executif | \- |
| Vente litterature | Membre connecte | Responsable litterature ou executif | Tresorier ou executif pour reception | \- |
| Jetons | Membre connecte | Responsable jetons ou executif | Responsable jetons ou executif | \- |
| Evenements | Membre connecte | Executif | Executif | Executif |
| Rapports PDF | Membre connecte | Serveur | \- | \- |
`Sysadmin` a tous les acces.
## Glossaire financier
- Banque - Solde du compte bancaire selon le registre comptable.
- Encaisse - Argent liquide detenu par le groupe.
- Reserve - Portion du solde bancaire affectee a un usage precis.
- Engagement non debite - Montant approuve mais pas encore sorti du compte bancaire.
- Disponible bancaire - Banque moins reserves actives moins engagements non debites.
- Disponible total - Disponible bancaire plus encaisse.
- Transaction comptable - Ligne du registre qui modifie un compte financier.
- Mouvement de reserve - Virement virtuel entre le disponible et une reserve, ou entre deux reserves.
- Etat des resultats - Revenus moins charges pour un mois donne.
- Position de tresorerie - Situation banque, encaisse, reserves et engagements a une date donnee.
## Ecarts connus et decisions requises
Cette section liste les zones ou la regle metier souhaitee, la documentation et
le comportement reel ne sont pas encore parfaitement alignes. Ces points doivent
etre corriges dans le code ou clarifies comme decisions fonctionnelles.
- ECART-001 - La colonne `membres.courriel` sert maintenant aussi d'identifiant de connexion, notamment pour `sysadmin`. Le profil protege maintenant l'identifiant `sysadmin`, mais certains ecrans parlent toujours de courriel. Decision requise: conserver un vrai courriel ou renommer/modeliser un identifiant distinct.
- ECART-002 - L'adoption d'un proces-verbal exige actuellement un proposeur et un secondeur en texte libre, pas des `membre_id`. Decision
- requise: garder une mention textuelle historique ou exiger des membres actifs comme pour les decisions.
- ECART-003 - Certaines contraintes metier sont uniquement appliquees dans le code applicatif et pas par des contraintes SQL, par exemple les montants positifs, le stock non negatif et plusieurs transitions d'etat. C'est acceptable pour l'instant, mais les tests doivent couvrir ces invariants.
- ECART-004 - Les rapports PDF et certaines listes utilisent encore des logiques de date dispersees. Les regles mensuelles sont documentees, mais elles devraient etre couvertes par des tests pour eviter les divergences.