You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

287 lines
8.3 KiB
Markdown

# Exigences Non Fonctionnelles - BricoLoc Moderne
**Version** : 1.0
**Date** : 31 Octobre 2025
**Projet** : BricoLoc - Application Moderne de Location d'Outils
---
## 1. Performance
### 1.1 Temps de Réponse
| Opération | Objectif | Maximum Acceptable |
|-----------|----------|-------------------|
| Chargement page d'accueil | < 1s | 2s |
| Recherche d'outils | < 500ms | 1s |
| Affichage catalogue | < 1s | 2s |
| Création de réservation | < 1.5s | 3s |
| Mise à jour profil utilisateur | < 800ms | 2s |
### 1.2 Capacité et Charge
- **Utilisateurs simultanés** : Support de 1000 utilisateurs actifs simultanés
- **Transactions par seconde** : Minimum 100 TPS en charge normale
- **Temps de réponse sous charge** : Dégradation maximale de 20% sous charge maximale
- **Base de données** : Support de 100,000+ outils dans le catalogue
- **Réservations** : Gestion de 50,000+ réservations actives simultanées
### 1.3 Optimisation Frontend
- **First Contentful Paint (FCP)** : < 1.5s
- **Largest Contentful Paint (LCP)** : < 2.5s
- **Time to Interactive (TTI)** : < 3.5s
- **Cumulative Layout Shift (CLS)** : < 0.1
- **First Input Delay (FID)** : < 100ms
### 1.4 Optimisation Backend
- **Query Database** : < 100ms pour les requêtes simples
- **API Response Time** : < 200ms (P95)
- **Connection Pool** : Minimum 20 connexions PostgreSQL
- **Caching** : Redis pour données fréquemment consultées (catégories, entrepôts)
---
## 2. Sécurité
### 2.1 Authentification et Autorisation
- **Authentification** : OAuth 2.0 / JWT via Supabase Auth
- **Multi-facteur (MFA)** : Recommandé pour les comptes admin
- **Session Management** :
- Durée de session : 24h par défaut
- Refresh token : 30 jours
- Logout automatique après inactivité : 1h
- **Password Policy** :
- Minimum 8 caractères
- Au moins 1 majuscule, 1 minuscule, 1 chiffre
- Pas de mots de passe communs (liste OWASP)
### 2.2 Protection des Données
- **Encryption at Rest** : AES-256 pour données sensibles
- **Encryption in Transit** : TLS 1.3 obligatoire
- **Row Level Security (RLS)** : Activé sur toutes les tables Supabase
- **Données Personnelles** :
- Conformité RGPD
- Anonymisation des données après 3 ans d'inactivité
- Droit à l'oubli respecté (suppression complète en 30 jours)
### 2.3 Sécurité Applicative
- **SQL Injection** : Prévention via paramètres Supabase
- **XSS** : Protection via Content Security Policy (CSP)
- **CSRF** : Tokens CSRF sur toutes les mutations
- **Rate Limiting** :
- API : 100 requêtes/minute par IP
- Auth : 5 tentatives de login/minute
- Recherche : 30 requêtes/minute
### 2.4 Audit et Logging
- **Activity Logs** : Conservation 90 jours
- **Security Events** : Alertes temps réel
- **Access Logs** : Conservation 1 an
- **SIEM Integration** : Prêt pour intégration future
---
## 3. Fiabilité et Disponibilité
### 3.1 Disponibilité
- **Uptime** : 99.5% (SLA cible)
- **Temps d'arrêt planifié** : Maximum 4h/mois (maintenance)
- **Fenêtre de maintenance** : Dimanche 2h-6h (heure locale)
### 3.2 Récupération
- **RTO (Recovery Time Objective)** : < 4h
- **RPO (Recovery Point Objective)** : < 1h
- **Backup** :
- Base de données : Daily automatic (Supabase)
- Retention : 30 jours
- Test de restauration : Mensuel
### 3.3 Résilience
- **Error Handling** : Gestion gracieuse des erreurs
- **Circuit Breaker** : Protection contre services défaillants
- **Retry Logic** : Retry exponentiel (max 3 tentatives)
- **Fallback Strategies** : Mode dégradé fonctionnel
---
## 4. Scalabilité
### 4.1 Scalabilité Horizontale
- **Frontend** : Serverless via Vercel (auto-scaling)
- **Backend API** : Supabase auto-scale
- **Base de données** : Supabase PostgreSQL (vertical scale)
- **Storage** : Supabase Storage (illimité)
### 4.2 Scalabilité Verticale
- **Database** : Support jusqu'à 8GB RAM (plan Pro)
- **Compute** : Serverless Edge Functions illimitées
- **Bandwidth** : 250GB/mois (plan Pro)
### 4.3 CDN et Caching
- **CDN** : Vercel Edge Network (monde entier)
- **Static Assets** : Mise en cache 1 an
- **API Responses** : Cache HTTP intelligent
- **Images** : Optimisation automatique (Next.js Image)
---
## 5. Maintenabilité
### 5.1 Code Quality
- **Test Coverage** : Minimum 80%
- **Code Complexity** : Cyclomatic complexity < 10
- **Documentation** : JSDoc pour toutes les fonctions publiques
- **Linting** : ESLint strict activé
- **Formatting** : Prettier configuré
### 5.2 Architecture
- **Modularity** : Architecture microservices (6 services)
- **Loose Coupling** : Event-driven communication
- **Clean Architecture** : 3 couches (Domain, Application, Infrastructure)
- **SOLID Principles** : Respect des principes SOLID
### 5.3 Versioning
- **API Versioning** : Versioning sémantique (v1, v2...)
- **Git Flow** : Main, Develop, Feature branches
- **Changelog** : Keep a Changelog format
- **Release Notes** : Pour chaque version majeure
### 5.4 Monitoring et Debugging
- **Application Monitoring** : Vercel Analytics
- **Error Tracking** : Sentry (à configurer)
- **Performance Monitoring** : Web Vitals tracking
- **Logs** : Structured logging (JSON format)
---
## 6. Utilisabilité
### 6.1 Interface Utilisateur
- **Responsive Design** : Mobile-first (breakpoints: 640px, 768px, 1024px, 1280px)
- **Accessibility** : WCAG 2.1 AA compliance
- **Browser Support** :
- Chrome 90+
- Firefox 88+
- Safari 14+
- Edge 90+
- **Progressive Enhancement** : Fonctionne sans JavaScript (pages statiques)
### 6.2 Expérience Utilisateur
- **Feedback** : Indicateurs de chargement pour actions > 500ms
- **Error Messages** : Messages clairs et actionnables
- **Help System** : Tooltips contextuels
- **Internationalisation** : Prêt pour i18n (français par défaut)
### 6.3 Accessibilité
- **Keyboard Navigation** : Support complet
- **Screen Readers** : Semantic HTML + ARIA labels
- **Color Contrast** : Ratio minimum 4.5:1
- **Focus Indicators** : Visibles et clairs
---
## 7. Portabilité
### 7.1 Environnements
- **Development** : Local avec Docker Compose (futur)
- **Staging** : Vercel Preview Deployments
- **Production** : Vercel Production
### 7.2 Infrastructure as Code
- **Deployment** : Vercel CLI + GitHub Actions
- **Configuration** : Environment variables
- **Secrets Management** : Vercel Environment Variables
---
## 8. Conformité et Légal
### 8.1 RGPD
- **Consentement** : Cookie banner conforme
- **Données Personnelles** : Collecte minimale
- **Droit d'accès** : Export des données utilisateur
- **Droit à l'oubli** : Suppression complète en 30 jours
- **Portabilité** : Export JSON des données
### 8.2 Cookies
- **Cookies essentiels** : Session, auth
- **Cookies analytiques** : Opt-in requis
- **Durée de conservation** : Maximum 13 mois
### 8.3 CGU et Mentions Légales
- **CGU** : Acceptation obligatoire à l'inscription
- **Mentions Légales** : Accessibles en footer
- **Politique de Confidentialité** : Accessible et claire
---
## 9. Métriques de Succès
### 9.1 KPIs Techniques
| Métrique | Cible | Mesure |
|----------|-------|--------|
| Uptime | 99.5% | Mensuelle |
| Response Time (P95) | < 2s | Hebdomadaire |
| Error Rate | < 1% | Quotidienne |
| Test Coverage | > 80% | Continue (CI) |
| Core Web Vitals | Tous "Good" | Hebdomadaire |
### 9.2 KPIs Métier
| Métrique | Cible | Mesure |
|----------|-------|--------|
| Temps de réservation | < 3 min | Mensuelle |
| Taux de conversion | > 5% | Mensuelle |
| Taux d'abandon panier | < 30% | Hebdomadaire |
| Satisfaction utilisateur | > 4/5 | Trimestrielle |
---
## 10. Contraintes et Limitations
### 10.1 Contraintes Techniques
- **Budget** : Plan gratuit Supabase (500MB DB, 1GB bandwidth/mois)
- **Vercel** : Plan hobby (100GB bandwidth/mois)
- **Pas de serveur dédié** : Architecture serverless uniquement
### 10.2 Limitations Acceptées
- **Recherche avancée** : Pas de recherche full-text complexe (phase 1)
- **Analytics** : Analytics basiques uniquement
- **Notifications push** : Web push uniquement (pas de mobile natif)
- **Paiement** : Stripe uniquement (pas d'autres providers)
---
## Conclusion
Ces exigences non fonctionnelles définissent le cadre de qualité pour l'application BricoLoc Moderne. Elles seront revues et ajustées au fur et à mesure de l'évolution du projet.
**Prochaine révision** : Semaine 10 (après première release)