prod: UI Optimisée mise en production

- Documentation archivée et réorganisée
- Backend: Ajout tests, migrations, library service, rate limiting
- Frontend: Suppression Flutter, focus sur interface web HTML/JS
- Tailwind CSS ajouté pour le style
- Améliorations UX et corrections bugs

Generated with [Claude Code](https://claude.com/claude-code)
via [Happy](https://happy.engineering)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
This commit is contained in:
root
2026-01-20 09:56:39 +00:00
parent bc03225e47
commit 801e6a050b
263 changed files with 33100 additions and 23058 deletions
+434
View File
@@ -0,0 +1,434 @@
# AudiOhm - Guide de Test Frontend
**Date:** 2025-01-19
**Application:** AudiOhm Web (Flutter)
**URL:** http://localhost:8000
---
## Prérequis
1. **Serveur Backend en cours d'exécution:**
```bash
cd /opt/audiOhm/backend
python3 -m uvicorn app.main:app --reload
```
2. **Base de données PostgreSQL opérationnelle**
3. **Navigateur moderne** (Chrome, Firefox, Edge, Safari)
4. **Outils de développement** (DevTools F12)
---
## Test 1: Authentification
### 1.1 Login
**Étapes:**
1. Aller sur http://localhost:8000
2. Cliquer sur "Se connecter"
3. Entrer les identifiants: `admin@example.com` / `admin123`
4. Cliquer sur "Connexion"
**Résultat attendu:**
- ✅ Redirection vers la page d'accueil
- ✅ Nom d'utilisateur affiché dans le header
- ✅ Menu "Ma Bibliothèque" accessible
**Bug potentiel:**
- ❌ Message d'erreur incorrect
- ❌ Pas de redirection après login
---
## Test 2: Queue de Lecture
### 2.1 Ajouter une piste à la queue
**Étapes:**
1. Rechercher une piste (ex: "queen")
2. Cliquer sur le bouton "⋯" (plus) sur une piste
3. Sélectionner "Ajouter à la queue"
4. Ouvrir la sidebar "Queue" (icône queue)
**Résultat attendu:**
- ✅ La piste apparaît dans la queue
- ✅ Notification visuelle "Piste ajoutée"
- ✅ Compteur de queue mis à jour
### 2.2 Contrôles de la queue
**À tester:**
- ✅ Clic sur une piste de la queue → Lecture
- ✅ Bouton "Suivant" → Piste suivante
- ✅ Bouton "Précédent" → Piste précédente
- ✅ Bouton "Mélanger" → Queue mélangée
- ✅ Bouton "Vider" → Queue vide
### 2.3 Persistance localStorage
**Étapes:**
1. Ajouter 3-4 pistes à la queue
2. Fermer le navigateur (ou refresh F5)
3. Réouvrir l'application
**Résultat attendu:**
- ✅ La queue est toujours présente
- ✅ L'ordre est identique
- ✅ Les pistes sont rejouables
**Vérification technique:**
```javascript
// Dans la console DevTools (F12)
localStorage.getItem('audiohm_queue')
// Devrait retourner un JSON avec les pistes
```
---
## Test 3: Bibliothèque - Titres Likés
### 3.1 Liké une piste
**Étapes:**
1. Rechercher et lire une piste
2. Dans le player, cliquer sur le cœur (♡)
**Résultat attendu:**
- ✅ Le cœur se remplit (♥)
- ✅ Notification "Ajouté aux titres likés"
- ✅ La piste apparaît dans "Ma Bibliothèque > Titres likés"
**Vérification API:**
```bash
# Vérifier que la piste est likée
curl -H "Authorization: Bearer $TOKEN" \
http://localhost:8000/api/v1/library/liked | jq
```
### 3.2 Unliké une piste
**Étapes:**
1. Aller dans "Titres likés"
2. Cliquer sur le cœur plein (♥) d'une piste
**Résultat attendu:**
- ✅ Le cœur se vide (♡)
- ✅ La piste disparaît de la liste
- ✅ Compteur "X titres likés" mis à jour
### 3.3 Consultation des titres likés
**À tester:**
- ✅ Page "Titres likés" accessible
- ✅ Liste des pistes affichée
- ✅ Pagination fonctionnelle
- ✅ Clic → Lecture de la piste
- ✅ Ordre chronologique inversé (plus récent en haut)
---
## Test 4: Bibliothèque - Historique
### 4.1 Consultation de l'historique
**Étapes:**
1. Jouer 3-4 pistes différentes
2. Aller dans "Ma Bibliothèque > Historique"
**Résultat attendu:**
- ✅ Les pistes apparaissent par ordre chronologique
- ✅ Groupement par date (Aujourd'hui, Hier, Cette semaine...)
- ✅ Heure d'écoute affichée
### 4.2 Relecture depuis l'historique
**Étapes:**
1. Dans l'historique, cliquer sur une piste
**Résultat attendu:**
- ✅ La piste se lance
- ✅ Elle s'ajoute à la fin de la queue
- ✅ Mise à jour du player
### 4.3 Vidange de l'historique
**À tester:**
- ✅ Bouton "Vider l'historique"
- ✅ Confirmation modal
- ✅ Historique vidé après confirmation
**Vérification API:**
```bash
# Vérifier que l'historique est vide
curl -H "Authorization: Bearer $TOKEN" \
http://localhost:8000/api/v1/library/history | jq
# [] = vide
```
---
## Test 5: Playlists
### 5.1 Création de playlist
**Étapes:**
1. Cliquer sur "Créer une playlist"
2. Entrer nom: "Ma playlist test"
3. Entrer description (optionnelle)
4. Cliquer sur "Créer"
**Résultat attendu:**
- ✅ La playlist apparaît dans la sidebar
- ✅ Page de détails ouverte
- ✅ Message "Playlist créée"
### 5.2 Ajout de pistes
**Méthode A - Depuis la recherche:**
1. Rechercher des pistes
2. Clic sur "⋯" > "Ajouter à la playlist"
3. Sélectionner "Ma playlist test"
**Méthode B - Drag & Drop:**
1. Rechercher des pistes
2. Drag & drop vers la playlist dans la sidebar
**Résultat attendu:**
- ✅ Pistes ajoutées à la playlist
- ✅ Compteur "X pistes" mis à jour
- ✅ Notification visuelle
### 5.3 Lecture d'une playlist
**Étapes:**
1. Cliquer sur une playlist
2. Cliquer sur "Play" (▶)
**Résultat attendu:**
- ✅ Toutes les pistes s'ajoutent à la queue
- ✅ La première piste démarre
- ✅ Order de la playlist respecté
### 5.4 Modification de playlist
**À tester:**
- ✅ Changement de nom
- ✅ Changement de description
- ✅ Ajout d'image de couverture
- ✅ Playlist privée/publique
### 5.5 Suppression de playlist
**Étapes:**
1. Cliquer sur "⋯" sur la playlist
2. Sélectionner "Supprimer"
3. Confirmer
**Résultat attendu:**
- ✅ Modal de confirmation
- ✅ Playlist supprimée
- ✅ Disparition de la sidebar
---
## Test 6: Player Audio
### 6.1 Contrôles de base
**À tester:**
- ✅ Play/Pause (barre espace ou clic)
- ✅ Volume slider
- ✅ Barre de progression cliquable
- ✅ Temps écoulé / durée totale
- ✅ Bouton Repeat (Off/All/One)
- ✅ Bouton Shuffle
### 6.2 Affichage des métadonnées
**Résultat attendu:**
- ✅ Titre de la piste
- ✅ Nom de l'artiste
- ✅ Album (si disponible)
- ✅ Image de couverture
### 6.3 Gestion des erreurs
**À tester:**
- ❌ Piste indisponible → Message d'erreur
- ❌ Pas de connexion → Message offline
---
## Test 7: Responsive Design
### 7.1 Desktop (> 1024px)
**À vérifier:**
- ✅ Sidebar complète visible
- ✅ Player fixe en bas
- ✅ Grille de pistes responsive
### 7.2 Tablette (768px - 1024px)
**À vérifier:**
- ✅ Sidebar réduite
- ✅ Menu hamburger fonctionnel
- ✅ Player adapté
### 7.3 Mobile (< 768px)
**À vérifier:**
- ✅ Sidebar cachée par défaut
- ✅ Navigation par menu
- ✅ Player full width
- ✅ Gestes tactiles
---
## Test 8: Performance
### 8.1 Temps de chargement
**À mesurer:**
- ⏱️ Première page: < 2s
- ⏱️ Recherche: < 1s
- ⏱️ Lecture: < 500ms
### 8.2 Gestion des grandes listes
**À tester:**
- ✅ Recherche avec 100+ résultats
- ✅ Playlist avec 50+ pistes
- ✅ Historique avec 100+ entrées
**Résultat attendu:**
- ✅ Pas de lag
- ✅ Scroll fluide
- ✅ Pagination/virtualization
---
## Test 9: Accessibilité
### 9.1 Navigation clavier
**À tester:**
- ✅ Tab pour naviguer
- ✅ Entrée/Space pour valider
- ✅ Escape pour fermer les modals
### 9.2 Lecteur d'écran
**À vérifier:**
- ✅ Alt text sur les images
- ✅ ARIA labels sur les boutons
- ✅ Structure sémantique HTML
---
## Test 10: Cas Limites
### 10.1 Queue vide
**Actions:**
- ✅ Pas de piste dans la queue
- ✅ Clic sur "Play" → Message approprié
### 10.2 Piste supprimée
**Scénario:**
1. Ajouter une piste à la queue
2. Supprimer la piste de la BD
3. Essayer de la jouer
**Résultat attendu:**
- ✅ Message "Piste indisponible"
- ✅ Passer à la piste suivante
### 10.3 Déconnexion
**Étapes:**
1. Remplir la queue
2. Se déconnecter
3. Se reconnecter
**Résultat attendu:**
- ✅ Queue restaurée (localStorage)
- ✅ Historique intact (BD)
---
## Outils de Test
### DevTools Console
```javascript
// Vider le localStorage
localStorage.clear()
// Vérifier les données
console.log(JSON.parse(localStorage.getItem('audiohm_queue')))
console.log(JSON.parse(localStorage.getItem('audiohm_settings')))
// Simuler un utilisateur différent
localStorage.setItem('audiohm_token', 'new_token')
```
### Réseau (Network Tab)
**À surveiller:**
- ⏱️ Temps de réponse API
- ❌ Requêtes échouées (rouge)
- ⚠️ Requêtes lentes (jaune)
---
## Checklist Finale
Avant de valider la release:
- [ ] Tous les tests backend passent (100%)
- [ ] Tous les tests frontend manuels passent
- [ ] Bug #1 corrigé (type mismatch)
- [ ] Aucune erreur console DevTools
- [ ] Performance acceptable (< 2s)
- [ ] Responsive OK (mobile/desktop)
- [ ] Accessibilité vérifiée
- [ ] Documentation à jour
---
## Rapport de Bugs
**Template à utiliser:**
```markdown
### Bug #[NUMÉRO]: [TITRE]
**Sévérité:** CRITIQUE/MAJEURE/MINEURE
**Localisation:** [FICHIER/FONCTION]
**Description:**
[Ce qui ne va pas]
**Reproduction:**
1. Étape 1
2. Étape 2
3. ...
**Résultat attendu:**
[Ce qui devrait se passer]
**Résultat actuel:**
[Ce qui se passe réellement]
**Solution proposée:**
[Comment corriger]
```
---
**Fin du guide de test**