Ce fichier garde deux choses seulement :
npm run deployer -- -Migrations, voir docs/deploiement.md).L’audit complet (A01 à A24, chantiers T, V, F, R…) est archivé dans docs/archives/AUDIT_CORRECTIONS-jusqu-au-12-10-2026.md. Les chantiers à venir pour la mise en production sont dans docs/exploitation.md.
Grille de notation des candidats, RGPD : le score est calculé par Rentoo à partir des données du dossier (traitement automatisé d’aide à la décision). J’ai gardé l’option prudente : score présenté comme indicatif, décision toujours prise par le bailleur, critères limités à la solvabilité. Faut-il ajouter une phrase d’information pour le candidat, dans son espace (« Le propriétaire peut utiliser un score indicatif calculé sur vos revenus, votre situation, votre garantie et vos pièces ; il décide lui-même ») ? À valider avec un juriste (RGPD, art. 13 et 22).
F4, congé par e-mail : un congé du bailleur n’a de valeur que par lettre recommandée avec avis de réception, commissaire de justice ou remise en main propre contre récépissé. J’ai donc désactivé l’envoi par e-mail pour le congé (PDF à imprimer uniquement). Faut-il proposer un envoi en recommandé électronique (service tiers, payant) plus tard ?
F4, courriers et formules : les courriers ne sont pas réservés à une formule (seule la rédaction par Roo consomme 1 crédit). Faut-il les réserver à Essentiel et au-delà, comme les relances par e-mail ?
A02, reprise des baux existants : j’ai fixé le début du suivi au premier mois « vu » dans Rentoo (création du bail ou premier loyer pointé). Cela efface d’éventuels vrais impayés antérieurs jamais pointés. Option prudente pour éviter les faux impayés et les relances à tort. Préférez-vous garder tout l’historique pour les comptes bêta existants ?
A05, seuil de conseil du réel : 150 €/an de gain estimé minimum (proposition du cahier de tests). En dessous, Rentoo conseille le micro. Le même seuil vaut pour le meublé (micro-BIC ou réel). Faut-il un seuil plus élevé en meublé, où le réel implique en pratique un expert-comptable (souvent 300 à 600 €/an) ?
A10, communes « zone touristique et tendue » (2 259 communes ajoutées par les décrets de 2023 et 2025) : je les ai laissées hors zone tendue au sens de la loi de 1989. Conséquences : préavis de 3 mois en location nue, pas d’encadrement de l’évolution du loyer. Leur classement vise la taxe sur les logements vacants (zones d’urbanisation continue d’au moins 50 000 habitants d’un côté, communes touristiques de l’autre). La mention l’indique. Faut-il les traiter comme zone tendue (préavis d’un mois) ? À valider avec un juriste.
A11, SCI familiale : une SCI constituée entre parents jusqu’au 4e degré inclus consent des baux nus de 3 ans, et non 6. Par prudence, j’ai appliqué 6 ans à toutes les SCI : un congé calculé trop tôt serait nul. Faut-il ajouter une case « SCI familiale » sur la fiche du bien ?
Chantiers T01 à T04 : traités dans l’ordre à votre demande (voir leurs sections).
T03, signalement sans code : l’adresse « Mon logement » permet toujours de signaler un problème sans code, comme l’ancien lien (10 signalements par jour au plus). Faut-il le réserver aux locataires identifiés ? Ce serait plus sûr contre les abus, mais un occupant dont vous n’avez pas l’e-mail ne pourrait plus rien signaler.
Bulle de Roo et formulaires : sur mobile, la bulle peut recouvrir le bouton d’un formulaire si elle apparaît juste après la saisie. Elle s’efface déjà pendant qu’un champ est actif. Faut-il aussi la retenir tant qu’un formulaire est ouvert à l’écran ?
N1, nom de domaine des adresses d’envoi : l’adresse prévue affichée est prenom.nom@rentoo.com (votre demande). Les documents précédents parlaient de rentoo.fr. Le domaine n’étant pas acheté, l’adresse est marquée « Bientôt » et rien ne part de ce domaine tant que MAIL_DOMAIN n’est pas posé. Lequel achetez-vous ? Si ce n’est pas rentoo.com, il suffit de changer PLANNED_MAIL_DOMAIN (src/lib/mailAlias.ts).
N1, adresse attribuée à tous les comptes : les comptes locataires reçoivent aussi une adresse prenom.nom, sans effet tant qu’ils n’envoient rien. Elle est fixée à la première saisie du nom et ne change plus, même après un changement de nom (choix prudent : une adresse déjà donnée à des correspondants reste stable). Souhaitez-vous qu’un changement de nom (mariage…) la mette à jour ?
R1, politique de confidentialité : les conversations avec Roo sont désormais gardées sur le compte (20 au plus, effaçables dans Réglages › Roo et apparence, supprimées avec le compte). La politique de confidentialité (src/lib/legal.ts, public/confidentialite.html) doit le mentionner, mais ces fichiers sont en cours de modification dans l’autre session : je n’y ai pas touché. Texte proposé, à ajouter à la section « Roo » : « Vos conversations avec Roo (vos questions et ses réponses) sont conservées sur votre compte pour que vous puissiez les reprendre : les 20 plus récentes, jusqu’à ce que vous les effaciez (Réglages › Roo et apparence) ou supprimiez votre compte. »
R7, dictée et confidentialité : la dictée passe par la reconnaissance vocale du téléphone (sur Android, le service Google, souvent en ligne ; sur iPhone, Apple ; sur ordinateur, le navigateur). L’audio ne passe pas par Rentoo, et seul le texte de la question est envoyé à Roo. Faut-il imposer la reconnaissance « sur l’appareil » quand elle existe ? Elle est plus discrète, mais n’est pas disponible en français sur tous les téléphones. En attendant, le micro ne s’active que sur appui et après l’autorisation du système, et la politique de confidentialité est à compléter (un paragraphe « dictée vocale »).
F3, documents joints dans la conversation : comme dans Roo › Documents, le fichier déposé rejoint les documents du compte (catégorie « Autre ») avant même la validation de la fiche. Faut-il plutôt le supprimer quand la fiche est ignorée ? Par prudence, rien n’est supprimé (pas de suppression dans cette version).
Régularisation, solde du syndic en votre faveur (ex. −305,40 € sur l’exercice 2025-2026) : en général, le syndic le déduit du prochain appel de fonds. Rentoo l’affiche mais n’enregistre aucune dépense négative ni recette. Faut-il proposer de l’enregistrer (par exemple comme un remboursement à rapprocher du prochain appel de charges) ?
Régularisation, provisions et décompte : par prudence, les provisions du bail ne changent que si vous cliquez « Confirmer », à partir du mois choisi (par défaut le mois suivant), et le décompte ne crée pas de dépense (les appels de fonds payés au syndic restent vos dépenses « Copropriété »). La taxe foncière de la fiche s’entend désormais hors ordures ménagères. À confirmer.
Vague 2, relances automatiques : par prudence, les relances sont seulement préparées au bon moment (J+5, J+15, J+30). Rien ne part sans votre validation, et la mise en demeure est un PDF à envoyer en recommandé. Faut-il proposer plus tard un envoi automatique de la relance amiable, une fois un réglage activé ? Et un recommandé électronique (service tiers payant) ?
Vague 2, échéances légales : la régularisation des charges est attendue chaque année avant le 31/12 de l’année qui suit ; au-delà, le locataire peut demander un paiement étalé sur douze mois. Le congé du bailleur est calculé sans le cas de la SCI familiale (voir A11). Une alerte pour la régularisation à partir d’octobre vous convient-elle ?
Lot 10, tableau d’amortissement : une attestation annuelle de la banque déjà saisie n’est jamais remplacée par le tableau importé (l’attestation reflète ce qui a vraiment été payé). Une année dont Roo n’a pas lu toutes les échéances n’est pas reprise. Ces deux choix prudents vous conviennent-ils ?
supabase/migrations/020_suivi_loyers.sql (A02) : colonne leases.tracked_from, reprise des baux existants, portal_info, portal_declare_payment et monthly_recaps mis à jour. Rejouable.
supabase/migrations/021_registre_versements.sql (A06) : tables rent_payments et rent_allocations (RLS), déclencheurs qui tiennent payments à jour, reprise des paiements existants. Rejouable. Redéployer ensuite send-receipt (dossier _shared compris).
supabase/migrations/022_verrous_formules.sql (A14) : plan_has, my_plan_has, lease_plan_has et verrous sur annonces, signatures et devis. Rejouable. Redéployer send-receipt et copilot.
supabase/migrations/023_elision_mois.sql (A18) : month_de(), notification « Loyer reçu » corrigée, reprise des titres existants. Rejouable. Redéployer send-receipt et location.
supabase/migrations/024_indices_irl.sql (A24) : table irl_indices (métropole, Corse, outre-mer) avec les valeurs publiées. Rejouable. À chaque publication de l’Insee (mi-janvier, mi-avril, mi-juillet, mi-octobre), ajouter une ligne par zone (exemple en fin de script).
supabase/migrations/025_lien_logement.sql (T03) : adresse unique « Mon logement ». Fonctions home_link_report_token et report_home_token, déclencheur home_link_report, reprise des liens existants. Aucune table modifiée. Rejouable. Aucune fonction Edge à redéployer.
supabase/migrations/026_bailleur_pas_locataire.sql (retour APK du 30/09) : manages_property, manages_any_property, tenant_join et tenant_spaces corrigés, reprise des comptes. Rejouable. Aucune fonction Edge à redéployer.
supabase/migrations/027_veille.sql (A3) : veille IRL et zones tendues (table veille_state, fonctions protégées par le secret du coffre, tâches pg_cron). Créer d’abord les secrets project_url et veille_secret (voir AMELIORATIONS.md). Déployer la fonction veille.
supabase/migrations/028_canaux_notifications.sql (C6) : notify_channel, notify_kind_type, push_pending filtré par canal, owner_mail_allowed. Rejouable. Redéployer location.
supabase/migrations/029_adresse_envoi.sql (N1) : colonne profiles.mail_alias (unique, non modifiable), mail_alias_base (même règle que src/lib/mailAlias.ts), reprise des comptes existants, mail_alias_for_application, journal mail_log pour les envois sans bien. Rejouable. Redéployer send-receipt et location.
supabase/migrations/030_invitation_coproprietaire.sql (N3) : property_members.last_invited_at et invite_token, share_invite_info, enforce_invite (une personne invitée sur un bien s’inscrit sans code de test, avec l’adresse invitée seulement). Rejouable. Redéployer location.
supabase/migrations/031_artisans_siret.sql (N6) : colonnes artisans.siret et artisans.address. Rejouable. Redéployer copilot (type de document « devis »).
supabase/migrations/032_conversations_roo.sql (R1) : tables copilot_conversations et copilot_messages (RLS : propriétaire seul), conversation remontée à chaque message, 20 conversations au plus par compte. Rejouable.
supabase/migrations/033_notes_locataires.sql (F2) : table tenant_notes (notes privées du bailleur, mêmes droits que la fiche du locataire). Rejouable. Redéployer copilot.
supabase/migrations/034_journal_roo.sql (C3) : table roo_actions (journal des actions validées depuis Roo, annulables 30 jours ; RLS : propriétaire seul ; 300 au plus). Rejouable.
supabase/migrations/035_courriers.sql (F4) : table lease_letters (historique des courriers par bail ; mêmes droits que le bien). Rejouable. Redéployer send-receipt et copilot.
supabase/migrations/036_verifications_fiscales.sql (parcours Fiscalité) : table tax_reviews (vérifications faites, par année ; RLS : propriétaire seul). Rejouable.
supabase/migrations/037_avis_roo.sql (C2) : table copilot_feedback (avis sur les réponses de Roo ; RLS : propriétaire seul ; effacé avec la conversation). Rejouable. Redéployer copilot.
supabase/migrations/038_memoire_roo.sql (R4) : table roo_memory (préférences retenues par Roo avec l’accord du bailleur ; RLS : propriétaire seul ; 50 au plus). Rejouable. Redéployer copilot.
supabase/migrations/039_ton_roo.sql (R5) : colonne profiles.roo_tone (« court » ou « detaille »). Rejouable. Redéployer copilot.
supabase/migrations/040_alertes_reglementaires.sql (F6) : table roo_alert_state (zone de chaque bien vue à la dernière vérification, alertes notées ; RLS : propriétaire seul). Rejouable. Aucune fonction à redéployer.
supabase/migrations/041_decomptes_copro.sql (régularisation des charges) : table copro_statements (décomptes annuels du syndic : part locative, provisions, solde ; mêmes droits que le bien ; aucun IBAN enregistré). Rejouable. Redéployer copilot (lecture de l’avis de taxe foncière par adresse et du décompte du syndic).
supabase/migrations/042_cycle_relances.sql (Vague 2, cycle de relance) : lease_letters.kind accepte « mise_en_demeure », rent_reminders.channel accepte « courrier ». Rejouable. Redéployer copilot (Roo peut proposer la mise en demeure).
supabase/migrations/043_valeur_estimee.sql (Vague 3, patrimoine) : colonnes properties.estimated_value et estimated_at. Rejouable. Aucune fonction à redéployer.
supabase/migrations/044_portail_locataire.sql (Vague 3, portail locataire) : déclencheur notify_receipt (nouvelle quittance), fonction insurance_reminders et tâche pg_cron rentoo-rappel-assurance (8 h 30), notify_kind_type (quittance suit le réglage « paiements »). Rejouable.
supabase/migrations/045_disposition_finances.sql (refonte Finances, étape 3) : colonne profiles.finance_layout (disposition de la synthèse Finances, gardée sur le compte). Rejouable. Aucune fonction à redéployer.
supabase/migrations/046_rubriques_menu.sql (lot 10, menu) : colonne profiles.nav_sections (rubriques épinglées dans le menu, liste fermée de quatre valeurs). Rejouable. Aucune fonction à redéployer.
supabase/migrations/047_tableau_amortissement.sql (lot 10, prêt) : loans.schedule_document_id (tableau de la banque rangé dans Documents) et loan_years.source (« attestation » ou « tableau »). Rejouable. Redéployer copilot (lecture du tableau, années et échéances).
supabase/migrations/048_empreinte_documents.sql (UX étape 4, « Photo d’abord ») : colonne documents.content_hash (empreinte SHA-256 du fichier, contrôlée) et index par propriétaire pour repérer les doublons. Rejouable. Aucune fonction à redéployer. Sans ce script, les documents s’enregistrent sans empreinte.