fix: corrige le sur-comptage des revenus par immeuble
Les agrégats par immeuble joignaient revenus et locataires à partir du
lot. Comme un lot accumule ses occupants successifs, chaque ligne de
revenu était comptée autant de fois qu'il y a eu de locataires : aucune
erreur levée, juste des montants faux qui dérivent avec l'ancienneté du
parc.
Sur la base réelle (40 lots, 46 locataires), /api/revenus/immeubles et
le bloc by_immeuble de /api/revenus/summary annonçaient :
total 348 111,95 € au lieu de 332 899,45 € (+4,6 %)
réglés 100 697,66 € au lieu de 85 545,16 € (+17,7 %)
taux 28,9 % au lieu de 25,7 %
Les montants sont désormais agrégés par immeuble AVANT la jointure des
locataires, qui ne sert plus qu'au dénombrement. Les deux endpoints
partagent ces sous-requêtes et la construction de la réponse.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -44,6 +44,27 @@ def db_session(tmp_path, monkeypatch):
|
||||
connection.reset_connection()
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def api_client(db_session):
|
||||
"""Client HTTP sur l'application FastAPI, branché sur la base de test.
|
||||
|
||||
La dépendance `get_session` est surchargée pour partager la session du test :
|
||||
les données créées dans le test sont visibles par les endpoints, sans passer
|
||||
par la base réelle de l'utilisateur.
|
||||
"""
|
||||
from fastapi.testclient import TestClient
|
||||
|
||||
from plesna_gerance.api.app import app
|
||||
from plesna_gerance.database import get_session
|
||||
|
||||
app.dependency_overrides[get_session] = lambda: db_session
|
||||
try:
|
||||
with TestClient(app) as client:
|
||||
yield client
|
||||
finally:
|
||||
app.dependency_overrides.clear()
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def sample_data():
|
||||
"""Données extraites minimales mais complètes pour save_document."""
|
||||
|
||||
Reference in New Issue
Block a user