La fiche du lot 15 annonçait « dernier loyer connu, arrêté après févr. 26 »
alors qu'un locataire y est entré le 8 juillet — et la courbe juste dessous,
où la barre de juillet est bien là, la contredisait.
Le loyer en vigueur se lit sur les paliers, et un mois facturé au seul
prorata n'en ouvre pas : celui d'avant s'arrête donc à la dernière mensualité
pleine, quatre mois avant le nouveau bail. Ne rien lire après lui confond deux
états que le compte rendu sépare : un lot qui n'est plus loué, et un lot entre
deux locataires.
La distinction tient à la frontière qui sert déjà à séparer loyer plein et
prorata, la période portée par le compte rendu :
- un prorata qui finit le dernier jour du mois sans partir du premier facture
la fin du mois : quelqu'un est entré, le bail court encore après ;
- un prorata qui part du premier sans l'atteindre facture le début : le bail
s'arrête là ;
- un montant négatif ne fait ni l'un ni l'autre. Un avoir porte parfois la
période exacte de la ligne qu'il annule, et le lire comme une entrée
inventerait une relocation là où rien n'a été loué.
L'entrée l'emporte sur la sortie parce qu'elle vient après : ce lot voit son
locataire partir le 10 mars et le suivant arriver le 8 juillet, et c'est le
second qui décrit son état.
Le montant affiché ne bouge pas — le nouveau bail n'a été facturé qu'au
prorata, et en tirer un loyer mensuel l'inventerait. Seul ce qu'on en dit
change : « dernier loyer plein · nouveau bail depuis juil. 26 ».
Sans relocation, la sortie date enfin la fin de la location au mois où elle a
lieu : « arrêté en cours de mars 26 » plutôt qu'« arrêté après févr. 26 », qui
l'avançait d'un mois.
Sur le parc : 31 lots loués, 1 relouté, 1 réellement arrêté.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
La fiche d'un lot rendait tout son historique, et rien d'autre. Sur un
parc suivi depuis 2023, lire ce qu'un lot a fait ces trois derniers mois
supposait de faire soi-même la soustraction. Le paramètre `mois` ouvre
une fenêtre sur les chiffres, la chronologie, les intervenants, les
locataires et la courbe du loyer.
Trois décisions la gouvernent, et chacune évite un chiffre qui
mentirait :
- **la fenêtre est calée sur le dernier compte rendu du lot**, jamais sur
aujourd'hui. Les derniers comptes rendus du parc datent de juillet
alors qu'on est en août : une fenêtre glissante depuis la date du jour
décalerait déjà tout d'un mois, et viderait entièrement la fiche d'un
lot sorti de la gestion — une page vide se lisant comme une absence
d'activité plutôt que comme un filtre trop court ;
- **le restant dû y échappe**, parce qu'un stock ne se borne pas comme un
flux. Le ramener à la fenêtre l'annulerait dès qu'aucun compte rendu
n'y tombe : un lot afficherait 0 € dû tout en devant plusieurs
milliers ;
- **le loyer en vigueur et la comparaison au parc y échappent aussi.**
La courbe, elle, est bien coupée, mais après coup : les paliers restent
lus sur la série entière, sans quoi « depuis mai 26 » daterait de la
borne du filtre au lieu de la révision qui a fixé ce loyer, et la
médiane du parc changerait de mois de référence à chaque changement de
période. Rien n'est coupé au-delà de la fenêtre : un bail trimestriel
facturé d'avance porte des mois postérieurs au dernier compte rendu, et
les retirer ferait croire que le lot cesse d'être loué.
Les locataires n'ont ni date d'entrée ni date de sortie — aucune n'est
extraite des comptes rendus. Leur seul rattachement au temps est donc le
document qui les porte. Hors fenêtre, la liste reste malgré tout celle de
la table : la base contient des locataires dont aucune ligne ne dépend, et
la vue par défaut ne filtre rien.
Un filtre qui masque doit dire ce qu'il masque : la réponse porte le
compte des lignes, des mois et des occupants laissés dehors, et les
bornes effectivement retenues.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
La fiche d'un lot cumulait tout son historique en un chiffre. Une
révision de loyer, une vacance ou un décrochage y étaient donc
invisibles. Le bloc `loyer` remet les lignes sur un axe de temps, dont
l'unité est le mois loué et non le mois du compte rendu : un rappel de
mars facturé en avril décrit mars.
Trois formes de lignes cohabitent sous le même `type_ligne = "loyer"`,
et les confondre fausse la courbe :
- le loyer d'un mois, cas courant ;
- le loyer d'un trimestre, forme réelle des baux commerciaux du parc,
réparti sur les mois qu'il couvre — sans quoi deux mois sur trois
paraîtraient vides alors que le local est loué ;
- le prorata d'entrée, de sortie ou l'avoir, rattaché à son mois mais
compté à part. Les additionner ferait passer un mois de changement de
locataire pour un mois à loyer effondré.
Un mois sans ligne reste vide plutôt qu'à zéro : zéro dirait « loué
gratuitement », ce qu'aucun compte rendu ne dit. Un mois facturé
seulement au prorata est signalé comme transition, pour ne pas se
confondre avec une vacance.
Le mètre carré vient de la fiche saisie, qu'aucun PDF ne porte : tant
qu'elle manque, le ratio reste nul et la page renvoie vers la saisie.
Les médianes qui situent le lot rejouent exactement la même répartition
pour les autres lots — les calculer autrement ne voudrait rien dire — et
s'accompagnent toujours de leur effectif et du nombre de lots exclus
faute de surface.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Les pages existantes agrègent le parc ; aucune ne descend à un lot pour
remettre ses lignes bout à bout. `/api/lots/{id}/analyse` renvoie son
identité (fiche saisie comprise, trous laissés visibles), ses totaux, sa
chronologie de recettes et de dépenses, et les entreprises intervenues.
Deux limites sont assumées plutôt que contournées :
- les dépenses d'un lot sont celles que le compte rendu lui impute. Aucune
clé de répartition n'existe en base — ni tantièmes, ni surfaces complètes
— donc les charges d'immeuble ne sont pas ventilées : elles sont exposées
à part, et le solde d'un lot n'est pas un résultat net ;
- les lignes sont rendues telles qu'extraites, sans regroupement ni
dédoublonnage. Un acompte et son solde restent deux lignes.
Les totaux passent par `flux_par` et `restant_du_par` au lieu de resommer
sur place : ces fonctions portent la distinction entre ce qui se cumule et
ce qui est une photo, et la rejouer à la main ferait diverger cette page de
la page Recettes.
Le montant d'un intervenant est net du crédit, comme chaque ligne de la
chronologie, pour que le détail d'une entreprise retrouve son total — un
avoir rend d'ailleurs ce montant négatif, ce que le compte rendu porte.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>