groupe-meditation/docs/ARCHITECTURE.md
2026-05-25 17:39:38 -04:00

2 KiB

Architecture technique

Sources de vérité

  • propositions porte les propositions, résolutions, nominations et contributions.
  • Une décision de groupe est une proposition adoptée avec date_adoption, numero_resolution, etant_donne_que et groupe_a_decide_de.
  • transactions_comptables est la source des soldes financiers.
  • mouvements_reserves est la source des soldes de réserves.
  • reserves.montant est 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, notamment finance.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: banque ou encaisse;
  • sens: debit augmente le compte, credit le diminue;
  • source_table et source_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édit encaisse.
  • Retrait bancaire: crédit banque, débit encaisse.
  • 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.