DeVs

Vue dev / test

Objectifs de test — cohérents et scalables. 4/32 objectifs couverts.

Lancer les tests : npm run test:run|Checklist DeVs|Référence : docs/objectifs-de-test.md

Logique métier (règles de gestion)

IdObjectifPrioritéCouvert
M1Régularisation / solde : trop-perçu ≤ 0,01 € = solde à zéro ; libellé « À jour » cohérentsoldeRegul.test.tsHaute Oui
M2Calcul solde après ligne : facture = débit, entrée (paiement) = créditHaute Oui
M3Cas limites solde : 0, négatif, champs optionnels absentsHaute Partiel
M4Identifiant affaire : génération et format sans collision ni caractères interditsMoyenne Non
M5Statistiques secteur (getSecteurStats) : agrégation locataires + affaires par résidenceMoyenne Non
M6Auto-commentaire (generateAutoComment) : contenu cohérent avec le contexteBasse Non

API / Données (client + résilience)

IdObjectifPrioritéCouvert
A1getLocataires / getLocataire : données conformes aux types ; liste vide si API downmock possibleHaute Non
A2getConseillers / getConseiller / updateConseiller : CRUD cohérent ; PATCH partiel ; null si erreurHaute Non
A3getPatrimoine : structure et relations (agenceId, idResidence) cohérentesHaute Non
A4Affaires (création, liste) : pas d’URL en dur ; fallback si API indisponibleHaute Non
A5fetchApiOptional : erreur réseau ou 5xx → null / liste vide sans crashHaute Non
A6Base URL : toutes les requêtes via env (pas de localhost en prod)Haute Vérif manuelle

Flux utilisateur critiques (E2E ou intégration)

IdObjectifPrioritéCouvert
F1Recherche locataire : saisie → API → résultats ou message videHaute Non
F2Fiche 360° : sélection locataire → contact, solde, historique, santé logementHaute Non
F3Création affaire : formulaire → POST → visible dans la liste, pas de doublon incohérentHaute Non
F4Navigation patrimoine : agences → résidences → logements ; pas de N+1Moyenne Non
F5Domaine RH : liste conseillers par rôle ; édition → PATCH → persistanceMoyenne Non
F6Page d’accueil : liens DeVs, RH, App ; pas d’erreur au chargementBasse Non

Données & cas limites

IdObjectifPrioritéCouvert
D1Doublons (nom/prénom, email) : pas de crash affichage ou rechercheMoyenne Non
D2Champs manquants (email, tél, historique) : pas de crash, affichage dégradé OKMoyenne Non
D3Volumétrie : 1k, 10k, 30k locataires (recherche, pagination, temps de réponse)avant prodHaute Non
D4Agence / sector_id : filtrage cohérent multi-agences (préparation RBAC)Moyenne Non

Qualité & non-régression

IdObjectifPrioritéCouvert
Q1Tests ciblent le comportement métier (pas uniquement les détails d’implémentation)Haute Partiel
Q2CI : lint + tests unitaires + build sur chaque pushworkflowHaute Oui
Q3Pas de régression solde : soldeRegul couvert par les tests existantsHaute Oui
Q4Typage : pas de any non justifié ; types API alignés réponses réellesMoyenne Vérif manuelle

Performance & scalabilité

IdObjectifPrioritéCouvert
P1Pas de N+1 : listes (locataires, affaires, patrimoine) sans requêtes en boucleHaute Non
P2Lighthouse : score Performance > 80 sur pages critiquesMoyenne Non
P3Temps de réponse API : recherche locataire < 2 s avec 30k enregistrementsavant prodHaute Non

Sécurité (préparation prod)

IdObjectifPrioritéCouvert
S1Aucune donnée sensible en dur (clé API, token, URL sensible)Haute Vérif manuelle
S2Paramètres préparés / ORM pour toute requête SQL (futur)json-serverHauteN/A
S3CORS / origine : API n’accepte que les origines autorisées en prodconfig serveurMoyenne Vérif manuelle

Priorisation

  1. Déjà en place : M1, M2, Q2, Q3 (soldeRegul + CI).
  2. Court terme : M3, A1–A5 (mock API), F1–F3, Q1.
  3. Moyen terme : M4, M5, F4, F5, D1, D2, P1.
  4. Avant montée en charge : D3, P2, P3, D4.

Prochaines étapes déploiement VPS

  1. Connexionssh root@212.227.82.78 ; changer le mot de passe ou configurer clé SSH.
  2. Environnement — Node.js 18+ (LTS), git. Sur Alma 9 : dnf install nodejs git (ou nvm).
  3. Pare-feu — Ouvrir 22 (SSH), 80 (HTTP), 443 (HTTPS) ; pour test à l’IP : 3000 (Next), 3001 (API). Espace Client IONOS.
  4. Déployer l’app — Cloner le repo (ex. /var/www/copilot). Dans frontend/ : créer .env (NEXT_PUBLIC_APP_URL, NEXT_PUBLIC_JSON_SERVER_URL avec l’IP ou le domaine), npm ci, npm run build, npm run start (ou PM2).
  5. API (json-server) — À la racine (où est db.json) : npx json-server --watch db.json --host 0.0.0.0 --port 3001. Idéalement sous PM2.
  6. Vérifierhttp://212.227.82.78:3000 → accueil, recherche locataire, fiche 360°, création affaire.
  7. Domaine — Enregistrer dimcopilot.app ; DNS A → 212.227.82.78.
  8. HTTPS — nginx + Certbot (Let’s Encrypt) ; mettre à jour les variables d’env avec https://dimcopilot.app.

Référence : docs/serveur.md — Checklist déploiement : DeVs, section « Pré-déploiement serveur » (prod1–prod13).