2 KiB
2 KiB
Architecture technique
Sources de vérité
propositionsporte les propositions, résolutions, nominations et contributions.- Une décision de groupe est une proposition adoptée avec
date_adoption,numero_resolution,etant_donne_queetgroupe_a_decide_de. transactions_comptablesest la source des soldes financiers.mouvements_reservesest la source des soldes de réserves.reserves.montantest un cache d'affichage; il ne doit pas devenir la source de vérité.
Backend
app/core: configuration, sécurité, rôles, règles communes.app/services: logique métier réutilisable, notammentfinance.py.app/models: tables SQLAlchemy.app/routers: endpoints FastAPI. Les routers doivent orchestrer, pas contenir les calculs centraux.app/schemas: contrats Pydantic d'entrée/sortie.
Règle de maintenance: un router ne doit pas importer un autre router pour obtenir une logique métier. Extraire dans app/services ou app/core.
Frontend
src/pages: écrans applicatifs.src/components: composants partagés.src/utils: calculs purs et helpers.src/stores: état global et client API.
Règle de maintenance: si un contrôle ou calcul apparaît dans plusieurs pages, l'extraire dans components ou utils.
Comptabilité
Les écritures comptables utilisent:
compte:banqueouencaisse;sens:debitaugmente le compte,creditle diminue;source_tableetsource_id: lien vers l'objet métier.
Exemples:
- Collecte reçue: débit
encaisse. - Vente de littérature reçue: débit
encaisse. - Dépôt bancaire: débit
banque, créditencaisse. - Retrait bancaire: crédit
banque, débitencaisse. - Dépense cash: crédit
encaisse. - Dépense par chèque/virement débitée: crédit
banque. - Contribution débitée: crédit
banque.
Déploiement
La voie normale est Ansible. Voir ANSIBLE.md.
Le déploiement installe PostgreSQL, le backend FastAPI, le frontend compilé, NGINX, systemd et les sauvegardes.