# Architecture technique & découpage en lots

> Proposition — à valider. Aucune contrainte technique imposée par le client.

## 1. Choix techniques recommandés

| Besoin | Choix | Pourquoi |
|---|---|---|
| Application web + mobile | **Une seule application web responsive, installable sur téléphone (PWA)** | Un seul code pour le bureau et le terrain ; pas de publication sur les stores ; mise à jour immédiate pour tous. Caméra (scan QR / code-barres), photos, notifications push et **mode hors-ligne** sont possibles en PWA. Une app native pourra venir plus tard sur la même API si besoin. |
| Front | **Next.js (React) + TypeScript**, composants Tailwind / shadcn-ui | Écosystème standard, rapide à développer, bon rendu mobile. |
| Back / API | Routes serveur Next.js + **Prisma** (ORM) | Monorepo simple pour une équipe réduite ; logique métier typée de bout en bout. |
| Base de données | **PostgreSQL** | Fiable, transactions (numérotation des factures sans trou), requêtes de disponibilité par période. |
| Hors-ligne mobile | Service worker + IndexedDB, file d'attente de synchronisation | Le terrain travaille sans réseau (scan, check-lists, photos), puis synchronise. |
| Documents PDF | Modèles HTML → PDF (Chromium headless) | Devis, factures, bons de sortie, ordres de mission fidèles à la charte de chaque société. |
| Fichiers | Stockage objet compatible S3 (ou disque du serveur) | Photos de repérage, scans de bons de commande, livrables. |
| Authentification | Comptes nominatifs, mots de passe hachés, sessions sécurisées, rôles | Traçabilité de qui fait quoi. |
| Hébergement | Serveur VPS avec Docker (app + PostgreSQL + sauvegardes quotidiennes externalisées) | Coût maîtrisé pour ~10 utilisateurs. Données personnelles : respect de la loi 09-08 (CNDP). |

## 2. Modèle de données (principales entités)

```
Societe ─┬─ Sequence (devis, facture, avoir, BC… par année)
         └─ Dossier ─┬─ Jalons (réception, repérage, confirmation, événement, retour)
                     ├─ TacheProcedure ← EtapeModele ← ModeleProcedure
                     ├─ LigneMateriel → Article / NumeroSerie  (réservation sur période)
                     ├─ BesoinPersonnel → Affectation → Personne / Fonction
                     ├─ BesoinVehicule → Affectation → Vehicule
                     ├─ Devis (versions) → LigneDevis
                     ├─ Facture / Avoir → LigneFacture, Echeance, Encaissement
                     ├─ Achat (DA → BC fournisseur → facture fournisseur → paiement) / SousLocation
                     ├─ MouvementStock (bon de sortie, bon de retour, scan)
                     └─ Document, Photo, Commentaire, Journal
Contact (client / fournisseur / lieu) ─ Personne de contact
Article ─ Categorie, Kit (composants), NumeroSerie ─ Emplacement, Reparation, Inspection
Personne (salarié / freelance) ─ Fonction, Conge, Pointage, Defraiement
Utilisateur ─ Role ─ Droits (par société)
```

## 3. Découpage en lots (livraisons successives)

Chaque lot est livré, testé par le client et utilisé avant de passer au suivant.

| Lot | Contenu | Valeur pour le client |
|---|---|---|
| **0. Fondations** | Projet, base de données, connexion & rôles, multi-sociétés, gabarit de listes (filtres, vues, export), mise en ligne | Socle |
| **1. Dossiers + procédure + tableau de bord v1** | Contacts, dossiers (3 statuts), modèles de procédure (146 étapes importées), tâches automatiques avec échéances, grille façon Excel, notifications, **tableau de bord directeur** (retards, pipeline, dossiers en cours), import des 482 dossiers | **Remplace l'Excel actuel** dès le premier lot |
| **2. Matériel & stock** | Catalogue, kits, n° de série, QR, entrepôts, disponibilité / pénuries, sous-location, bons de sortie et de retour, maintenance | Fin des doubles réservations |
| **3. Devis, contrats, facturation** | Devis versionnés depuis le matériel et les prestations, PDF par société, validation, proforma / acompte / facture / avoir, numérotation légale, encaissements, relances, achats | Chaîne commerciale complète, suivi des impayés |
| **4. Personnel & planning** | Personnes, fonctions, Gantt, invitations, ordres de mission, défraiements, véhicules, congés, pointage | Planning des équipes centralisé |
| **5. Mobile terrain** | Mode hors-ligne, scan sortie/retour, check-lists, photos, rapport de repérage, pointage, tableau de bord mobile | Le terrain alimente l'ERP en direct |
| **6. Finalisation** | Statistiques avancées, ajustements, formation, reprise complète des données | Mise en production |

## 4. Prochaine étape proposée

Valider ce cahier des charges (en particulier les points ouverts de la section 5), puis démarrer le **lot 0 + lot 1**,
avec une maquette cliquable du tableau de bord directeur et de la fiche dossier à présenter au client.
