513 lines
12 KiB
Markdown
513 lines
12 KiB
Markdown
|
|
# 🎵 Veza Fixtures System
|
||
|
|
|
||
|
|
[](https://github.com/your-org/veza-platform/actions)
|
||
|
|
[](./coverage)
|
||
|
|
[](./package.json)
|
||
|
|
|
||
|
|
> **Système de fixtures complet et robuste pour Veza Platform**
|
||
|
|
|
||
|
|
Le système de fixtures Veza est une solution complète pour générer, gérer et valider des données de test réalistes pour tous les services de la plateforme Veza. Il offre une approche cohérente et scalable pour les tests, le développement et les démonstrations.
|
||
|
|
|
||
|
|
## 🚀 Fonctionnalités Principales
|
||
|
|
|
||
|
|
### ✨ **Génération de Données Avancée**
|
||
|
|
- 🎯 **Données réalistes** avec relations cohérentes
|
||
|
|
- 🌍 **Multi-environnements** (development, testing, staging, demo)
|
||
|
|
- 🎲 **Reproductible** avec système de seeds
|
||
|
|
- 📊 **Scalable** de 10 à 10,000+ entités
|
||
|
|
|
||
|
|
### 🔗 **Intégration Multi-Services**
|
||
|
|
- 🌐 **Web Service** - MSW handlers et localStorage
|
||
|
|
- 💬 **Chat Server** - Base de données PostgreSQL et cache Redis
|
||
|
|
- 🎵 **Stream Server** - Sessions de streaming et métriques
|
||
|
|
- 🔧 **Backend API** - Données utilisateur et métadonnées
|
||
|
|
|
||
|
|
### 🎬 **Scénarios de Test Complets**
|
||
|
|
- 👤 **User Journey** - Parcours utilisateur réalistes
|
||
|
|
- ⚡ **Performance** - Tests de charge et stress
|
||
|
|
- 🔗 **Integration** - Communication inter-services
|
||
|
|
- 🎯 **Edge Cases** - Cas limites et erreurs
|
||
|
|
|
||
|
|
### 🛠️ **Outils CLI Puissants**
|
||
|
|
- 📊 **Generate** - Création de datasets
|
||
|
|
- 🌱 **Seed** - Population des services
|
||
|
|
- 🔍 **Validate** - Vérification d'intégrité
|
||
|
|
- 🧹 **Clean** - Nettoyage des données
|
||
|
|
|
||
|
|
## 📦 Installation
|
||
|
|
|
||
|
|
### Prérequis
|
||
|
|
- Node.js 18+
|
||
|
|
- PostgreSQL 13+
|
||
|
|
- Redis 6+
|
||
|
|
- npm ou yarn
|
||
|
|
|
||
|
|
### Installation Rapide
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Cloner et installer
|
||
|
|
git clone https://github.com/your-org/veza-platform.git
|
||
|
|
cd veza-platform/fixtures
|
||
|
|
|
||
|
|
# Installation automatique
|
||
|
|
./tools/scripts/install.sh
|
||
|
|
|
||
|
|
# Ou installation manuelle
|
||
|
|
npm install
|
||
|
|
npm run build
|
||
|
|
```
|
||
|
|
|
||
|
|
### Configuration
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Copier et configurer l'environnement
|
||
|
|
cp ../env.example .env
|
||
|
|
|
||
|
|
# Éditer les variables de connexion
|
||
|
|
nano .env
|
||
|
|
```
|
||
|
|
|
||
|
|
## 🎯 Démarrage Rapide
|
||
|
|
|
||
|
|
### Génération de Base
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Générer un dataset de développement
|
||
|
|
npm run generate -- --env development
|
||
|
|
|
||
|
|
# Alimenter tous les services
|
||
|
|
npm run seed -- --service all
|
||
|
|
|
||
|
|
# Vérifier l'intégrité
|
||
|
|
npm run validate
|
||
|
|
```
|
||
|
|
|
||
|
|
### Utilisation CLI
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Voir l'état du système
|
||
|
|
veza-fixtures status
|
||
|
|
|
||
|
|
# Générer des données personnalisées
|
||
|
|
veza-fixtures generate --env staging --users 200 --tracks 500
|
||
|
|
|
||
|
|
# Lancer un scénario de test
|
||
|
|
veza-fixtures scenario --run onboarding
|
||
|
|
|
||
|
|
# Nettoyer les données
|
||
|
|
veza-fixtures clean --service web --force
|
||
|
|
```
|
||
|
|
|
||
|
|
### Utilisation Programmatique
|
||
|
|
|
||
|
|
```typescript
|
||
|
|
import { VezaFixtures, WebFixtures } from '@veza/fixtures'
|
||
|
|
|
||
|
|
// Initialisation rapide
|
||
|
|
const result = await quickStart({
|
||
|
|
environment: 'development',
|
||
|
|
services: ['web', 'chat'],
|
||
|
|
scenario: 'onboarding'
|
||
|
|
})
|
||
|
|
|
||
|
|
// Utilisation avancée
|
||
|
|
await VezaFixtures.initialize('testing')
|
||
|
|
const dataset = VezaFixtures.generateCompleteDataset()
|
||
|
|
await WebFixtures.initialize()
|
||
|
|
```
|
||
|
|
|
||
|
|
## 🏗️ Architecture
|
||
|
|
|
||
|
|
### Structure du Projet
|
||
|
|
|
||
|
|
```
|
||
|
|
fixtures/
|
||
|
|
├── core/ # Système central
|
||
|
|
│ ├── generators/ # Générateurs de données
|
||
|
|
│ │ ├── users.ts # Utilisateurs réalistes
|
||
|
|
│ │ ├── audio.ts # Contenu audio
|
||
|
|
│ │ └── conversations.ts # Messages et conversations
|
||
|
|
│ ├── schemas/ # Schémas de validation
|
||
|
|
│ ├── utils/ # Utilitaires partagés
|
||
|
|
│ └── config.ts # Configuration centrale
|
||
|
|
├── services/ # Intégrations par service
|
||
|
|
│ ├── web/ # Frontend fixtures
|
||
|
|
│ ├── chat-server/ # Backend chat
|
||
|
|
│ └── stream-server/ # Backend streaming
|
||
|
|
├── scenarios/ # Scénarios de test
|
||
|
|
│ ├── user-journey/ # Parcours utilisateur
|
||
|
|
│ ├── performance/ # Tests de performance
|
||
|
|
│ └── integration/ # Tests d'intégration
|
||
|
|
├── environments/ # Configurations d'environnement
|
||
|
|
├── tools/ # Outils CLI et scripts
|
||
|
|
└── test/ # Tests du système
|
||
|
|
```
|
||
|
|
|
||
|
|
### Flux de Données
|
||
|
|
|
||
|
|
```mermaid
|
||
|
|
graph TD
|
||
|
|
A[Configuration] --> B[Générateurs]
|
||
|
|
B --> C[Relations Manager]
|
||
|
|
C --> D[Service Fixtures]
|
||
|
|
D --> E[Validation]
|
||
|
|
E --> F[Export/Seed]
|
||
|
|
|
||
|
|
G[CLI Tools] --> B
|
||
|
|
H[Scenarios] --> B
|
||
|
|
I[CI/CD] --> G
|
||
|
|
```
|
||
|
|
|
||
|
|
## 📊 Générateurs de Données
|
||
|
|
|
||
|
|
### Générateur d'Utilisateurs
|
||
|
|
|
||
|
|
```typescript
|
||
|
|
import { UserGenerator } from '@veza/fixtures'
|
||
|
|
|
||
|
|
// Utilisateur basique
|
||
|
|
const user = UserGenerator.generate()
|
||
|
|
|
||
|
|
// Utilisateur spécialisé
|
||
|
|
const artist = UserGenerator.generateArtist({
|
||
|
|
isVerified: true,
|
||
|
|
withAvatar: true
|
||
|
|
})
|
||
|
|
|
||
|
|
// Batch avec distribution
|
||
|
|
const users = UserGenerator.generateWithDistribution()
|
||
|
|
```
|
||
|
|
|
||
|
|
**Fonctionnalités:**
|
||
|
|
- ✅ Rôles réalistes (admin, artist, producer, user)
|
||
|
|
- ✅ Profils complets avec préférences
|
||
|
|
- ✅ Relations sociales (followers, following)
|
||
|
|
- ✅ Statistiques d'activité cohérentes
|
||
|
|
|
||
|
|
### Générateur Audio
|
||
|
|
|
||
|
|
```typescript
|
||
|
|
import { AudioGenerator } from '@veza/fixtures'
|
||
|
|
|
||
|
|
// Track individuelle
|
||
|
|
const track = AudioGenerator.generate({
|
||
|
|
genre: 'electronic',
|
||
|
|
isPopular: true
|
||
|
|
})
|
||
|
|
|
||
|
|
// Album complet
|
||
|
|
const album = AudioGenerator.generateAlbum(10)
|
||
|
|
|
||
|
|
// Playlist thématique
|
||
|
|
const playlist = AudioGenerator.generatePlaylist({
|
||
|
|
theme: 'workout',
|
||
|
|
trackCount: 20
|
||
|
|
})
|
||
|
|
```
|
||
|
|
|
||
|
|
**Fonctionnalités:**
|
||
|
|
- ✅ Métadonnées audio réalistes
|
||
|
|
- ✅ Waveform data généré
|
||
|
|
- ✅ Relations album/track cohérentes
|
||
|
|
- ✅ Statistiques d'écoute
|
||
|
|
|
||
|
|
### Générateur de Conversations
|
||
|
|
|
||
|
|
```typescript
|
||
|
|
import { ConversationGenerator } from '@veza/fixtures'
|
||
|
|
|
||
|
|
// Conversation directe
|
||
|
|
const directChat = ConversationGenerator.generateConversation({
|
||
|
|
type: 'direct',
|
||
|
|
participantIds: [user1.id, user2.id]
|
||
|
|
})
|
||
|
|
|
||
|
|
// Scénario complexe
|
||
|
|
const scenario = ConversationGenerator.generateScenario(
|
||
|
|
ConversationGenerator.SCENARIOS[0], // Studio Collaboration
|
||
|
|
userIds
|
||
|
|
)
|
||
|
|
```
|
||
|
|
|
||
|
|
**Fonctionnalités:**
|
||
|
|
- ✅ Types variés (direct, group, channel)
|
||
|
|
- ✅ Messages avec réactions et mentions
|
||
|
|
- ✅ Scénarios pré-définis réalistes
|
||
|
|
- ✅ Patterns de conversation naturels
|
||
|
|
|
||
|
|
## 🎬 Scénarios de Test
|
||
|
|
|
||
|
|
### Onboarding Utilisateur
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Lancer le scénario d'onboarding
|
||
|
|
veza-fixtures scenario --run onboarding
|
||
|
|
```
|
||
|
|
|
||
|
|
**Couvre:**
|
||
|
|
- ✅ Inscription et vérification email
|
||
|
|
- ✅ Complétion du profil
|
||
|
|
- ✅ Première écoute et playlist
|
||
|
|
- ✅ Participation au chat communautaire
|
||
|
|
|
||
|
|
### Tests de Performance
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Test de charge haute
|
||
|
|
veza-fixtures scenario --run high-load
|
||
|
|
```
|
||
|
|
|
||
|
|
**Simule:**
|
||
|
|
- ✅ 1000+ utilisateurs concurrent
|
||
|
|
- ✅ Streaming audio simultané
|
||
|
|
- ✅ Flood de messages chat
|
||
|
|
- ✅ Métriques de performance
|
||
|
|
|
||
|
|
### Intégration Cross-Service
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Test d'intégration complète
|
||
|
|
veza-fixtures scenario --run integration
|
||
|
|
```
|
||
|
|
|
||
|
|
**Valide:**
|
||
|
|
- ✅ Communication inter-services
|
||
|
|
- ✅ Cohérence des données
|
||
|
|
- ✅ Gestion des erreurs
|
||
|
|
- ✅ Performance sous charge
|
||
|
|
|
||
|
|
## 🔧 Configuration Avancée
|
||
|
|
|
||
|
|
### Environnements
|
||
|
|
|
||
|
|
```typescript
|
||
|
|
// fixtures/environments/staging.ts
|
||
|
|
export const stagingConfig = {
|
||
|
|
generation: {
|
||
|
|
users: { count: 500 },
|
||
|
|
audio: { trackCount: 2000 },
|
||
|
|
conversations: { directCount: 200 }
|
||
|
|
},
|
||
|
|
database: {
|
||
|
|
host: 'staging-db.example.com'
|
||
|
|
}
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
### Personnalisation des Générateurs
|
||
|
|
|
||
|
|
```typescript
|
||
|
|
// Configuration Faker personnalisée
|
||
|
|
import { vezaFaker } from '@veza/fixtures'
|
||
|
|
|
||
|
|
vezaFaker.music.songTitle = () => {
|
||
|
|
return 'Mon Titre Personnalisé'
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
### Hooks et Middleware
|
||
|
|
|
||
|
|
```typescript
|
||
|
|
// Hooks de génération
|
||
|
|
DataRelationManager.onUserGenerated((user) => {
|
||
|
|
console.log(`Utilisateur créé: ${user.username}`)
|
||
|
|
})
|
||
|
|
```
|
||
|
|
|
||
|
|
## 🧪 Tests et Validation
|
||
|
|
|
||
|
|
### Tests Unitaires
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Lancer les tests
|
||
|
|
npm test
|
||
|
|
|
||
|
|
# Coverage
|
||
|
|
npm run test:coverage
|
||
|
|
```
|
||
|
|
|
||
|
|
### Validation des Données
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Validation complète
|
||
|
|
npm run validate -- --check-relations --check-performance
|
||
|
|
|
||
|
|
# Validation spécifique
|
||
|
|
npm run validate -- --service chat-server
|
||
|
|
```
|
||
|
|
|
||
|
|
### CI/CD Integration
|
||
|
|
|
||
|
|
Le système s'intègre automatiquement avec GitHub Actions :
|
||
|
|
|
||
|
|
- ✅ **Validation PR** - Vérification des fixtures modifiées
|
||
|
|
- ✅ **Tests nightly** - Tests complets quotidiens
|
||
|
|
- ✅ **Performance regression** - Détection de régressions
|
||
|
|
|
||
|
|
## 📈 Monitoring et Métriques
|
||
|
|
|
||
|
|
### Métriques de Génération
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Statistiques détaillées
|
||
|
|
veza-fixtures status --verbose
|
||
|
|
```
|
||
|
|
|
||
|
|
**Affiche:**
|
||
|
|
- 📊 Nombre d'entités par type
|
||
|
|
- ⏱️ Temps de génération
|
||
|
|
- 🔗 Cohérence des relations
|
||
|
|
- 💾 Utilisation mémoire
|
||
|
|
|
||
|
|
### Health Checks
|
||
|
|
|
||
|
|
```typescript
|
||
|
|
// Vérification de santé des services
|
||
|
|
const health = await ChatServerFixtures.healthCheck()
|
||
|
|
console.log(health) // { database: true, redis: true, dataConsistency: true }
|
||
|
|
```
|
||
|
|
|
||
|
|
## 🚀 Cas d'Usage
|
||
|
|
|
||
|
|
### Développement Local
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Setup rapide pour développement
|
||
|
|
npm run dev:with-fixtures
|
||
|
|
```
|
||
|
|
|
||
|
|
### Tests Automatisés
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Tests avec données fraîches
|
||
|
|
npm run test:with-fixtures
|
||
|
|
```
|
||
|
|
|
||
|
|
### Démonstrations Client
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Dataset de démo professionnel
|
||
|
|
veza-fixtures generate --env demo --format json
|
||
|
|
```
|
||
|
|
|
||
|
|
### Tests de Performance
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Stress test complet
|
||
|
|
veza-fixtures scenario --run high-load
|
||
|
|
```
|
||
|
|
|
||
|
|
## 🔍 Dépannage
|
||
|
|
|
||
|
|
### Problèmes Courants
|
||
|
|
|
||
|
|
**Erreur de connexion base de données:**
|
||
|
|
```bash
|
||
|
|
# Vérifier la configuration
|
||
|
|
veza-fixtures status
|
||
|
|
# Diagnostics complets
|
||
|
|
./tools/scripts/install.sh doctor
|
||
|
|
```
|
||
|
|
|
||
|
|
**Données incohérentes:**
|
||
|
|
```bash
|
||
|
|
# Validation et correction
|
||
|
|
veza-fixtures validate --check-relations
|
||
|
|
veza-fixtures clean --force
|
||
|
|
veza-fixtures seed --validate
|
||
|
|
```
|
||
|
|
|
||
|
|
**Performance lente:**
|
||
|
|
```bash
|
||
|
|
# Réduire la taille du dataset
|
||
|
|
veza-fixtures generate --users 50 --tracks 100
|
||
|
|
```
|
||
|
|
|
||
|
|
### Logs et Debug
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Mode verbose
|
||
|
|
DEBUG=veza:fixtures npm run generate
|
||
|
|
|
||
|
|
# Logs détaillés
|
||
|
|
veza-fixtures generate --verbose
|
||
|
|
```
|
||
|
|
|
||
|
|
## 🤝 Contribution
|
||
|
|
|
||
|
|
### Développement
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Setup développement
|
||
|
|
git clone https://github.com/your-org/veza-platform.git
|
||
|
|
cd fixtures
|
||
|
|
npm install
|
||
|
|
npm run build
|
||
|
|
|
||
|
|
# Tests
|
||
|
|
npm test
|
||
|
|
npm run lint
|
||
|
|
```
|
||
|
|
|
||
|
|
### Ajout de Générateurs
|
||
|
|
|
||
|
|
```typescript
|
||
|
|
// fixtures/core/generators/my-generator.ts
|
||
|
|
export class MyGenerator {
|
||
|
|
static generate() {
|
||
|
|
// Implémentation
|
||
|
|
}
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
### Nouveaux Scénarios
|
||
|
|
|
||
|
|
```typescript
|
||
|
|
// fixtures/scenarios/my-scenario/index.ts
|
||
|
|
export class MyScenario {
|
||
|
|
static async setup() {
|
||
|
|
// Configuration du scénario
|
||
|
|
}
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
## 📚 Documentation API
|
||
|
|
|
||
|
|
### Classes Principales
|
||
|
|
|
||
|
|
- **`VezaFixtures`** - Point d'entrée principal
|
||
|
|
- **`DataRelationManager`** - Gestion des relations
|
||
|
|
- **`UserGenerator`** - Génération d'utilisateurs
|
||
|
|
- **`AudioGenerator`** - Génération de contenu audio
|
||
|
|
- **`ConversationGenerator`** - Génération de conversations
|
||
|
|
|
||
|
|
### Interfaces
|
||
|
|
|
||
|
|
- **`FixtureConfig`** - Configuration système
|
||
|
|
- **`User`**, **`Audio`**, **`Conversation`** - Types de données
|
||
|
|
- **`ScenarioContext`** - Contexte de scénario
|
||
|
|
|
||
|
|
## 📝 Changelog
|
||
|
|
|
||
|
|
### Version 1.0.0
|
||
|
|
- ✅ Système de fixtures complet
|
||
|
|
- ✅ Générateurs avancés
|
||
|
|
- ✅ Intégration multi-services
|
||
|
|
- ✅ Scénarios de test
|
||
|
|
- ✅ CLI tools
|
||
|
|
- ✅ CI/CD integration
|
||
|
|
|
||
|
|
## 📄 Licence
|
||
|
|
|
||
|
|
MIT License - voir [LICENSE](./LICENSE) pour les détails.
|
||
|
|
|
||
|
|
## 🆘 Support
|
||
|
|
|
||
|
|
- 📧 **Email**: fixtures-support@veza-platform.com
|
||
|
|
- 💬 **Discord**: [Veza Platform Community](https://discord.gg/veza)
|
||
|
|
- 🐛 **Issues**: [GitHub Issues](https://github.com/your-org/veza-platform/issues)
|
||
|
|
- 📖 **Docs**: [Documentation complète](https://docs.veza-platform.com/fixtures)
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
**Fait avec ❤️ par l'équipe Veza Platform**
|