Vue dev / test
Objectifs de test — cohérents et scalables. 4/32 objectifs couverts.
Logique métier (règles de gestion)
| Id | Objectif | Priorité | Couvert |
|---|---|---|---|
| M1 | Régularisation / solde : trop-perçu ≤ 0,01 € = solde à zéro ; libellé « À jour » cohérentsoldeRegul.test.ts | Haute | Oui |
| M2 | Calcul solde après ligne : facture = débit, entrée (paiement) = crédit | Haute | Oui |
| M3 | Cas limites solde : 0, négatif, champs optionnels absents | Haute | Partiel |
| M4 | Identifiant affaire : génération et format sans collision ni caractères interdits | Moyenne | Non |
| M5 | Statistiques secteur (getSecteurStats) : agrégation locataires + affaires par résidence | Moyenne | Non |
| M6 | Auto-commentaire (generateAutoComment) : contenu cohérent avec le contexte | Basse | Non |
API / Données (client + résilience)
| Id | Objectif | Priorité | Couvert |
|---|---|---|---|
| A1 | getLocataires / getLocataire : données conformes aux types ; liste vide si API downmock possible | Haute | Non |
| A2 | getConseillers / getConseiller / updateConseiller : CRUD cohérent ; PATCH partiel ; null si erreur | Haute | Non |
| A3 | getPatrimoine : structure et relations (agenceId, idResidence) cohérentes | Haute | Non |
| A4 | Affaires (création, liste) : pas d’URL en dur ; fallback si API indisponible | Haute | Non |
| A5 | fetchApiOptional : erreur réseau ou 5xx → null / liste vide sans crash | Haute | Non |
| A6 | Base URL : toutes les requêtes via env (pas de localhost en prod) | Haute | Vérif manuelle |
Flux utilisateur critiques (E2E ou intégration)
| Id | Objectif | Priorité | Couvert |
|---|---|---|---|
| F1 | Recherche locataire : saisie → API → résultats ou message vide | Haute | Non |
| F2 | Fiche 360° : sélection locataire → contact, solde, historique, santé logement | Haute | Non |
| F3 | Création affaire : formulaire → POST → visible dans la liste, pas de doublon incohérent | Haute | Non |
| F4 | Navigation patrimoine : agences → résidences → logements ; pas de N+1 | Moyenne | Non |
| F5 | Domaine RH : liste conseillers par rôle ; édition → PATCH → persistance | Moyenne | Non |
| F6 | Page d’accueil : liens DeVs, RH, App ; pas d’erreur au chargement | Basse | Non |
Données & cas limites
| Id | Objectif | Priorité | Couvert |
|---|---|---|---|
| D1 | Doublons (nom/prénom, email) : pas de crash affichage ou recherche | Moyenne | Non |
| D2 | Champs manquants (email, tél, historique) : pas de crash, affichage dégradé OK | Moyenne | Non |
| D3 | Volumétrie : 1k, 10k, 30k locataires (recherche, pagination, temps de réponse)avant prod | Haute | Non |
| D4 | Agence / sector_id : filtrage cohérent multi-agences (préparation RBAC) | Moyenne | Non |
Qualité & non-régression
| Id | Objectif | Priorité | Couvert |
|---|---|---|---|
| Q1 | Tests ciblent le comportement métier (pas uniquement les détails d’implémentation) | Haute | Partiel |
| Q2 | CI : lint + tests unitaires + build sur chaque pushworkflow | Haute | Oui |
| Q3 | Pas de régression solde : soldeRegul couvert par les tests existants | Haute | Oui |
| Q4 | Typage : pas de any non justifié ; types API alignés réponses réelles | Moyenne | Vérif manuelle |
Performance & scalabilité
| Id | Objectif | Priorité | Couvert |
|---|---|---|---|
| P1 | Pas de N+1 : listes (locataires, affaires, patrimoine) sans requêtes en boucle | Haute | Non |
| P2 | Lighthouse : score Performance > 80 sur pages critiques | Moyenne | Non |
| P3 | Temps de réponse API : recherche locataire < 2 s avec 30k enregistrementsavant prod | Haute | Non |
Sécurité (préparation prod)
| Id | Objectif | Priorité | Couvert |
|---|---|---|---|
| S1 | Aucune donnée sensible en dur (clé API, token, URL sensible) | Haute | Vérif manuelle |
| S2 | Paramètres préparés / ORM pour toute requête SQL (futur)json-server | Haute | N/A |
| S3 | CORS / origine : API n’accepte que les origines autorisées en prodconfig serveur | Moyenne | Vérif manuelle |
Priorisation
- Déjà en place : M1, M2, Q2, Q3 (soldeRegul + CI).
- Court terme : M3, A1–A5 (mock API), F1–F3, Q1.
- Moyen terme : M4, M5, F4, F5, D1, D2, P1.
- Avant montée en charge : D3, P2, P3, D4.
Prochaines étapes déploiement VPS
- Connexion —
ssh root@212.227.82.78; changer le mot de passe ou configurer clé SSH. - Environnement — Node.js 18+ (LTS), git. Sur Alma 9 :
dnf install nodejs git(ou nvm). - Pare-feu — Ouvrir 22 (SSH), 80 (HTTP), 443 (HTTPS) ; pour test à l’IP : 3000 (Next), 3001 (API). Espace Client IONOS.
- Déployer l’app — Cloner le repo (ex.
/var/www/copilot). Dansfrontend/: 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). - 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. - Vérifier —
http://212.227.82.78:3000→ accueil, recherche locataire, fiche 360°, création affaire. - Domaine — Enregistrer dimcopilot.app ; DNS A → 212.227.82.78.
- 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).