9.0 KiB
Cahier des Charges — Back-Office Exploitant
Projet : Laverie Connectée — Interface d'Administration
Version : 2.0
Stack principale : Laravel 11 + Vue.js 3 + Inertia.js
Positionnement : V1 simple, cloisonnée par exploitant, démontrable rapidement
1. Contexte & Objectifs
1.1 Objectif
Le back-office permet à un exploitant de piloter ses laveries sans exposer les données des autres exploitants présents sur la plateforme.
1.2 Objectifs V1
- authentifier les exploitants,
- afficher les machines et leur état,
- afficher les indicateurs métier de base,
- consulter réservations et lavages,
- gérer les tarifs,
- consulter les alertes techniques simples,
- garantir un cloisonnement strict par exploitant.
1.3 Principes
- une organisation ne voit que ses établissements,
- un manager peut être restreint à un établissement,
- la V1 privilégie la lisibilité et la fiabilité plutôt que la richesse fonctionnelle,
- le temps réel peut être simulé ou remplacé par du polling si nécessaire.
2. Périmètre fonctionnel
2.1 MVP V1
- connexion superviseur,
- tableau de bord simple,
- liste des machines,
- détail machine,
- liste des réservations,
- liste des lavages,
- gestion simple des tarifs,
- consultation simple des promotions si activées en V1,
- affichage des alertes de base,
- audit minimal des actions sensibles.
2.2 V2 prévue
- campagnes de notifications,
- exports avancés,
- analytics détaillées,
- gestion multi-utilisateurs plus riche,
- segmentation marketing,
- vue consolidée plus poussée pour groupes de laveries.
2.3 Hors périmètre V1
- CRM,
- marketing automation,
- édition de rapports complexes,
- configuration technique profonde des intégrations machines.
3. Utilisateurs et droits
| Rôle | Portée | Droits |
|---|---|---|
platform_admin |
plateforme complète | vision globale, administration complète |
owner |
organization complète | accès complet à ses laveries |
manager |
organization ou établissement | gestion opérationnelle |
viewer |
organization ou établissement | lecture seule |
3.1 Règle de cloisonnement
Toute donnée visible dans le back-office doit être filtrée au minimum par organization_id. Si le superviseur est attaché à un établissement précis, la visibilité est encore plus restreinte.
4. Stack Technique
| Composant | Technologie | Version | Commentaire |
|---|---|---|---|
| Backend | Laravel 11 | — | Backend partagé avec l'API |
| Rendu SPA | Inertia.js | 2.x | Intégration Laravel / Vue |
| UI | Vue.js | 3.x | Composition API |
| UI kit | PrimeVue | 4.x | Rapide pour dashboard / tables |
| Styles | Tailwind CSS | 3.x | Mise en forme rapide |
| State | Pinia | 2.x | Si besoin de stores front |
| Graphiques | Chart.js | 4.x | KPIs simples |
| Tests front | Vitest + Vue Test Utils | — | Composants critiques |
| Tests E2E | Playwright | — | Flux exploitant |
4.1 Temps réel
Le temps réel n'est pas un prérequis absolu de la V1. Deux stratégies possibles :
- V1 rapide : polling 15 à 30 secondes,
- V1 enrichie : Laravel Echo / Soketi ou Pusher.
Si le délai est serré, le polling est acceptable.
5. Architecture recommandée
resources/js/
├── Components/
│ ├── Layout/
│ ├── Dashboard/
│ ├── Machines/
│ ├── Pricing/
│ ├── Bookings/
│ ├── Washes/
│ └── UI/
├── Pages/
│ ├── Auth/
│ ├── Dashboard/
│ ├── Machines/
│ ├── Pricing/
│ ├── Bookings/
│ ├── Washes/
│ └── Settings/
└── app.js
5.1 Principe de navigation
- menu latéral simple,
- accès rapide au dashboard,
- pages data-centric,
- peu de modales complexes en V1.
6. Écrans V1
6.1 Connexion
Fonctionnalités
- email,
- mot de passe,
- message d'erreur clair,
- redirection vers dashboard si session active.
Sécurité
- session cookie,
- CSRF,
- rate limiting.
6.2 Tableau de bord
Objectif
Donner à l'exploitant une vue immédiate de l'état de ses laveries.
KPIs V1
- chiffre d'affaires du jour,
- nombre de lavages du jour,
- réservations du jour,
- taux d'occupation courant,
- nombre de machines offline / en erreur.
Sections recommandées
- bandeau KPI,
- liste des alertes,
- aperçu du parc machines,
- graphique simple de CA ou occupation.
Données affichées
Toujours filtrées sur le périmètre du superviseur connecté.
6.3 Liste des machines
Colonnes minimales
- nom,
- établissement,
- type,
- statut,
- dernier heartbeat,
- utilisateur courant anonymisé si pertinent,
- actions.
Filtres
- établissement,
- statut,
- type.
Actions V1
- voir détail,
- basculer maintenance si autorisé,
- forcer disponibilité seulement si besoin réel et journalisé.
6.4 Détail machine
Contenu
- informations générales,
- statut actuel,
- historique récent des cycles,
- historique récent des événements machines,
- tarification appliquée,
- alertes récentes,
- uptime simple si disponible.
Cette page est très utile pour la démo car elle montre la profondeur du produit sans nécessiter trop d'écrans.
6.5 Réservations
Vue liste
- utilisateur anonymisé,
- machine,
- établissement,
- créneau,
- statut,
- montant réservé,
- pénalité éventuelle.
Filtres
- période,
- établissement,
- machine,
- statut.
6.6 Lavages
Vue liste
- utilisateur anonymisé,
- machine,
- établissement,
- heure de démarrage,
- heure de fin,
- coût,
- statut.
Intérêt
Permet à l'exploitant de relier l'activité terrain au chiffre d'affaires.
6.7 Tarification
Vue liste
- établissement,
- machine ou type de machine,
- plage horaire,
- prix,
- libellé,
- actif / inactif.
Formulaire V1
- machine ou type,
- jours applicables,
- heure début / fin,
- prix,
- libellé,
- tarif exclusif app si retenu.
Validations
- pas de plage inversée,
- pas de conflit de règles non géré,
- audit de toute modification.
6.8 Promotions
Si activé en V1, les promotions restent simples :
- portée établissement,
- type de machine,
- réduction fixe ou pourcentage,
- date début / fin.
Si le timing est trop serré, cette page peut être préparée mais non activée en démonstration.
6.9 Paramètres
Contenu minimal
- profil superviseur,
- établissement ou organisation associés,
- informations de session,
- éventuellement préférences simples.
7. Cloisonnement des données
Règles obligatoires
platform_admin: accès global,owner: toutes les laveries de son organization,manager: selon son scope,viewer: lecture seule.
Implémentation
- policies Laravel,
- query scopes,
- tests dédiés au cloisonnement.
Interdiction
Aucune page ne doit faire remonter des agrégats globaux non filtrés à un exploitant local.
8. Audit
Actions à journaliser
- connexion superviseur,
- modification de tarif,
- création / modification de promotion,
- changement manuel de statut machine,
- toute action d'administration sensible.
Utilité
- sécurité,
- compréhension métier,
- support,
- preuve en cas de litige.
9. Temps réel / polling
Option 1 - Polling V1 recommandé si délai serré
- refresh du dashboard toutes les 30 secondes,
- refresh détail machine toutes les 15 à 30 secondes.
Option 2 - Temps réel enrichi
- Echo,
- Soketi ou Pusher,
- mise à jour machine / alertes / KPIs.
Recommandation
Pour la démo de fin de mois, le polling propre est souvent suffisant.
10. Sécurité
10.1 Authentification
- session cookie sécurisée,
- CSRF,
- timeout de session,
- rate limiting login.
10.2 Autorisation
- policies explicites par rôle,
- filtre systématique des établissements.
10.3 Données utilisateur
- anonymisation des noms dans les écrans exploitants si non nécessaire,
- pas d'affichage d'email complet côté exploitation terrain.
11. Dashboard de démo
Le dashboard de démo doit montrer visuellement :
- plusieurs laveries sur la plateforme,
- un exploitant qui ne voit que les siennes,
- des machines dans plusieurs états,
- un lavage qui démarre puis se termine,
- un KPI qui évolue,
- une tarification modifiable.
C'est le meilleur compromis entre crédibilité et temps de développement.
12. Tests
| Type | Outil | Portée |
|---|---|---|
| Controllers | Pest | Accès dashboard, pricing, machines |
| Components | Vitest | KPIs, listes, formulaires |
| E2E | Playwright | Connexion, dashboard, tarif, machine |
Cas critiques
- un exploitant A ne voit pas les données de B,
- un viewer ne peut pas modifier un tarif,
- un manager voit les bons KPI,
- une machine passe de disponible à en cours,
- une modification de tarif est auditée.
13. Livrables attendus
- code source back-office,
- pages Inertia principales,
- dataset de démonstration multi-exploitants,
- audit minimal,
- tests critiques,
- guide court de démonstration.