DeVs
Liste des choses à faire — qualité, tests, perf, maintenabilité
Objectifs de test (métier, API, flux, perf, sécurité) — statut couvert / non couvert
Structure type d’une agence de logement social
Référence métier pour les rôles et périmètres. Le Copilot CRC est le point d’entrée du Pôle 1 (Relation Client) ; il s’interface avec le Pôle 3 (Technique & Patrimoine) via les affaires et prestataires.
- 1. Relation Client (Front Office) — CRC, accueil physique ; qualification, diagnostic, historisation. → Couvert par l’app.
- 2. Gestion Locative & Sociale — CALEOL, baux, avenants, SLS, CESF. → Hors périmètre actuel.
- 3. Technique & Patrimoine — Gardiens, maintenance, prestataires, GER. → Affaires / prestataires dans l’app.
- 4. Gestion Financière & Prévention — Impayés, contentieux, charges. → Hors périmètre actuel.
Détail : STRUCTURE_AGENCE_LOGGEMENT_SOCIAL.md à la racine du projet.
Sécurité & accès (RBAC)
Auth (qui es-tu) : Clerk / Auth0 / Supabase + SSO. Autorisation (qu’as-tu le droit de faire) : rôles (Conseiller CRC, Gestionnaire Technique, Contentieux, Gardien, Admin) avec accès et actions définis. Multi-tenancy : cloisonnement par agency_id (et sector_id pour les gardiens). Middleware : Token → Périmètre → Droit.
Documentation complète : SECURITE_RBAC.md à la racine. Schéma SQL et types TS : docs/schema-securite.sql, frontend/app/types/user-rbac.ts.
Workflow CI/CD (norme industrielle)
On ne touche jamais au serveur de prod directement. Pipeline en place :
- Local — Vous codez sur votre PC (ou sur une branche de test).
- GitHub — Vous pushez votre code (
git push). - Automation (GitHub Actions) — Le code est testé automatiquement (lint, tests Vitest, build). S'il n'y a pas d'erreur, le build est prêt pour déploiement ; l'étape de déploiement vers le serveur est à activer dans
.github/workflows/ci.yml.
Fichier : .github/workflows/ci.yml. Déclenché sur push/PR vers main ou master.
Configuration serveur & capacité données
Configuration optimale
- Node.js 18+ (LTS recommandé)
- RAM 512 Mo min. (1 Go conseillé pour build + runtime)
- CPU 1 vCPU min. (2 pour build plus rapide)
- Next.js 14.x — build :
npm run build, démarrage :npm run start - API données (json-server ou BDD) : CORS activé, même domaine ou env
NEXT_PUBLIC_JSON_SERVER_URL - Niveau log WARN ou ERROR en prod (éviter DEBUG)
Données que le code peut encaisser
- Locataires : testé jusqu’à ~50k en objectif (checklist) ; avec json-server, rester raisonnable (quelques milliers) ; en prod avec BDD + pagination/index : bien plus.
- Patrimoine : agences → résidences → bâtiments → entrées → logements chargés à la demande (pas de chargement global) ; pas de limite stricte côté front.
- Affaires : liste en mémoire (state) ; recommandation : pagination côté API au-delà de quelques milliers.
- Conseil : indexer les champs de recherche (nom, prénom, tél.), utiliser
?limit=sur les listes pour garder de bonnes perfs.
15 conseillers en flux d’appel continu — ça tient la route ?
Oui. Chaque conseiller = une session navigateur indépendante (state local, CTI/Kiamo par poste). L’app ne gère pas d’état serveur partagé entre conseillers : pas de file d’attente côté app, pas de limite logicielle au nombre de connexions simultanées.
- Serveur : prévoir ~15 connexions HTTP simultanées (pages + appels API). RAM 1 Go peut suffire ; 2 Go conseillé pour confort (build + 15× runtime). Pas de WebSocket côté app (CTI = Kiamo côté client).
- API données : 15 requêtes parallèles possibles (recherche locataire, GET affaires, patrimoine). Avec json-server : surveiller la charge ; avec BDD (PostgreSQL, etc.) : pool de connexions ≥ 20 recommandé.
- Kiamo / CTI : une session par agent (gérée par la plateforme Kiamo), pas de limite côté CRC. Le flux d’appel continu est géré par le central téléphonique et Kiamo, pas par cette app.
- À valider : test en charge avec 15 onglets ou 15 postes (recherche + fiche + création affaire en parallèle) pour ajuster RAM/CPU et paramètres API si besoin.
400 collaborateurs, accès à des données différentes
Oui, à condition de filtrer les données côté API selon le collaborateur (agence, rôle, périmètre). L’app ne gère pas encore l’authentification ni les droits par utilisateur ; la structure des données (agences, résidences par agence) permet d’alimenter des vues différentes selon qui se connecte.
- Données différentes : patrimoine déjà structuré par agence (agenceId sur les résidences). L’API (ou BDD) doit exposer des endpoints ou des filtres par agence/rôle (ex.
/residences?agenceId=X) et n’envoyer que les données autorisées pour l’utilisateur connecté. - Auth / droits : à mettre en place côté serveur (auth + règles métier : quel collaborateur voit quelles agences, quels locataires). Le front consomme des données déjà filtrées ; pas de liste globale « 400 utilisateurs » côté app.
- Charge : 400 comptes ≠ 400 connexions simultanées. Dimensionner pour des pics réalistes (ex. 50–100 connexions en parallèle). Serveur : 4 Go RAM, 2 vCPU recommandés pour ce volume ; BDD avec pool de connexions adapté (ex. 50–100).
- Résumé : l’architecture (Next + API filtrée par périmètre) supporte 400 collaborateurs avec des données différentes, dès lors que l’API applique les règles d’accès et que l’infra est dimensionnée pour les pics de connexion.
Authentification en local ou externe ? — 50 collaborateurs (15 conseillers, 2 managers, 1 support, personnel agence)
En local, ça ne sera pas « lourd » côté technique (50 comptes, quelques rôles) : une table utilisateurs + sessions en BDD, un cookie JWT ou session ID, ça tient très bien. Ce qui devient lourd, c’est la gestion opérationnelle : mots de passe oubliés, MFA, audit des accès, montée en charge des rôles (conseiller / manager / support / agence) et des périmètres (agences différentes).
- Démarrer en local : possible pour 50 utilisateurs. Backend (ou Next API routes) : table
users(id, email, role, agenceId, hash mot de passe), tablesessionsou JWT. Règles d’accès (qui voit quelles agences) dans l’API. Charge serveur négligeable pour 50 comptes. - À partir de 50 + plusieurs rôles : un IdP externe (SSO) est souvent plus rentable : Keycloak, Auth0, Azure AD, Google Workspace… Gestion des comptes, MFA, révoquation et audit centralisés. L’app reçoit un token (JWT) ou une session après redirection ; elle n’a plus à gérer les mots de passe. Moins de code, moins de risque, moins de « lourd » en local.
- Recommandation : pour 50 collaborateurs (15 conseillers flux continu, 2 managers, 1 support, personnel agence), on peut commencer en local (auth simple + rôles) pour valider le métier, puis migrer vers un SSO quand la structure (rôles, agences, périmètres) est stabilisée. Si vous avez déjà un annuaire (AD, Google, etc.), partir sur SSO dès le début évite la double gestion.
Tests & couverture
Écrire les tests avant le code (TDD) sur les flux critiques
Ex. régularisation, trop-perçu 0,01€
faitCas limites métier (solde à zéro, doublons, champs manquants)
à faireVérifier que la couverture teste du comportement, pas du remplissage
à faire
Qualité & cohérence
Rédiger / renforcer le fichier .cursorrules (métier, conventions)
à faireUtiliser les abstractions maison (API, BDD) — pas de réinvention par fichier
à faireESLint, Prettier (ou équivalent) configurés et appliqués en CI
à faireSuivre la complexité cyclomatique (ex. CodeClimate)
à faire
Performance & sécurité
Éviter le N+1 (requêtes en boucle) — pagination, batch
à faireTester à l’échelle (ex. 50k locataires) avant prod
à faireAnalyse statique sécurité (SAST) en pipeline
à faireParamètres préparés / ORM pour toute requête SQL
à faireSécurité importante — jetons et credentials : ne jamais partager un token (GitHub, API) en chat ni dans un fichier versionné ; révoquer immédiatement un jeton exposé ; utiliser les tokens uniquement sur le serveur ou dans des variables d'env non committées.
à faireDans le code
Rappel : token GitHub = clone sur le VPS uniquement ; si exposé en chat → révoquer sur GitHub et en créer un nouveau. .env et secrets hors dépôt.
Maintenabilité
Code lisible en 30 secondes par un dev senior
à faireFonctions courtes, nommage métier explicite
à faireSuivre le taux de rejet en code review et le MTTR sur le code IA
à faire
Métier & fonctionnel
Structurer le patrimoine par agence (niveau au-dessus des sites)
à faireRemplacer json-server par une vraie BDD (PostgreSQL) en prod
à faireTypage fin des réponses Intent (proxy connexions-tiers)
à faireSynchro affaires / prestataires avec les APIs Intent si besoin
à faire
Cette liste est indicative. À mettre à jour au fil des sprints et des revues.