groupe-meditation/docs/RUNBOOK.md

165 lines
4.9 KiB
Markdown
Raw Normal View History

2026-03-04 14:01:00 -05:00
# Runbook opérationnel — Groupe Méditation
## Opérations courantes
### Inviter un nouveau membre
1. Un membre de l'exécutif ouvre le module **G1 — Inviter**
2. Un code à 12 caractères est généré (expire 48h)
3. Le code est partagé en personne ou par SMS
4. Le nouveau membre ouvre l'app → Inscription → entre le code + prénom + nom + PIN
### Affecter un poste
1. Exécutif ouvre **G3 — Affecter les postes**
2. Sélectionne le membre et le poste
3. Le membre voit immédiatement ses nouvelles tuiles sur l'accueil
### Terminer un mandat
1. Exécutif ouvre **G4 — Terminer un mandat**
2. Sélectionne l'affectation active
3. Saisit une note de transition
4. Les permissions sont retirées instantanément
5. **Rappel** : les mandats ne se terminent jamais automatiquement
### Saisie hebdomadaire typique (pendant/après la réunion)
1. **Trésorier** : S1 (collecte) + S5 (dépenses si applicable)
2. **Animateur** : S4 (thème + annonces)
3. **Resp. jetons** : S2 (si anniversaire ou nouveau)
4. **Resp. littérature** : S3 (si vente)
### Réunion d'affaires mensuelle
1. **Secrétaire** : M2 (présences) → M1 (PV avec décisions)
2. **RSG** : M3 (rapport du district)
3. **Trésorier** : présente le rapport financier (C1)
4. Si vote nécessaire : **G6** (créer sondage) → **C6** (voter)
### Envoi trimestriel des contributions
1. **Trésorier** ouvre **M4 — Envoi contributions**
2. Mode « Calculer » : entre le surplus disponible → répartition auto
3. Mode « Enregistrer » : enregistre chaque envoi individuel
4. La config des % se fait dans **G8** (défaut 30/30/30/10)
---
## Gestion des rapports PDF
Les rapports sont disponibles dans **C1 — Rapports PDF** :
| Rapport | URL API | Contenu |
|---------|---------|---------|
| Financier mensuel | `/api/rapports/finances/{annee}/{mois}` | Collectes + dépenses + solde |
| Réunions du mois | `/api/rapports/reunions/{annee}/{mois}` | Liste des réunions + thèmes |
| Financier complet | `/api/rapports/financier-complet/{annee}/{mois}` | Collectes + dépenses + contributions + impayés |
---
## Surveillance
### Vérifier que l'application tourne
```bash
# Service FastAPI
sudo systemctl status groupe-meditation
# Test santé API
curl -s https://groupe-meditation.chezlepro.ca/api/health
# Logs temps réel
sudo journalctl -u groupe-meditation -f --no-pager
# NGINX
sudo systemctl status nginx
sudo tail -f /var/log/nginx/error.log
```
### Vérifier les sauvegardes
```bash
# Dernière sauvegarde
ls -la /var/backups/groupe-meditation/ | tail -5
# Tester une restauration (sur une base test)
createdb -U grpmed groupe_meditation_test
pg_restore -U grpmed -d groupe_meditation_test /var/backups/groupe-meditation/grpmed_DERNIER.dump
dropdb -U grpmed groupe_meditation_test
```
### Statistiques base de données
```bash
sudo -u postgres psql -d groupe_meditation -c "
SELECT schemaname, tablename, n_live_tup AS lignes
FROM pg_stat_user_tables
ORDER BY n_live_tup DESC;
"
```
---
## Opérations d'urgence
### L'API ne répond plus
```bash
sudo systemctl restart groupe-meditation
sudo journalctl -u groupe-meditation --since "5 minutes ago"
```
### Un membre a oublié son PIN
Pas de récupération en libre-service (par design — sécurité). L'exécutif doit :
1. Utiliser **G2 — Gérer les membres** pour désactiver le membre
2. Recréer une invitation **G1**
3. Le membre se réinscrit avec un nouveau PIN
### Droit à l'oubli (RGPD/Loi 25)
1. Exécutif ouvre **G2 — Gérer les membres**
2. Sélectionne le membre → **Droit à l'oubli**
3. Le système supprime les données personnelles
4. Les données historiques (collectes, PV) sont anonymisées (prénom remplacé)
### Restaurer la base après incident
```bash
sudo systemctl stop groupe-meditation
# Restaurer la dernière sauvegarde
sudo -u postgres dropdb groupe_meditation
sudo -u postgres createdb -O grpmed groupe_meditation
pg_restore -U grpmed -d groupe_meditation /var/backups/groupe-meditation/grpmed_DERNIER.dump
sudo systemctl start groupe-meditation
```
---
## Matrice des 27 modules par rôle
| Module | Trésorier | Secrétaire | RSG | Animateur | Litt. | Jetons | Tous |
|--------|:---------:|:----------:|:---:|:---------:|:-----:|:------:|:----:|
| C1-C7 Consultation | | | | | | | ✓ |
| S1 Collecte | ✓ | | | | | | |
| S2 Remise jeton | | | | | | ✓ | |
| S3 Vente litt. | | | | | ✓ | | |
| S4 Rapport réunion | | | | ✓ | | | |
| S5 Dépense | ✓ | | | | | | |
| M1 PV | | ✓ | | | | | |
| M2 Présences | | ✓ | | | | | |
| M3 Rapport RSG | | | ✓ | | | | |
| M4 Contributions | ✓ | | | | | | |
| M5 Inventaire | | | | | ✓ | | |
| M6 Commander jetons | | | | | | ✓ | |
| G1-G9 Gestion | ✓ | ✓ | ✓ | | | | |
---
## Contacts et références
- **aa87.org** — Site de la Région 87
- **BSG** — Bureau des Services généraux (aa.org)
- Documentation API : `https://groupe-meditation.chezlepro.ca/api/docs`
---
*«Nos leaders sont des serviteurs de confiance ; ils ne gouvernent pas.» — 2e Tradition*