7.2 KiB
7.2 KiB
Audio Classifier - TODO Mise à Jour (6 décembre 2024)
✅ Ce qui est FAIT (État actuel du projet)
Infrastructure
- ✅ Structure complète backend + frontend
- ✅ Docker Compose avec PostgreSQL + pgvector
- ✅ Backend Dockerfile (Python 3.9, émulation x86_64 pour Essentia)
- ✅ Frontend Dockerfile
- ✅ Containers en production (running actuellement)
- ✅ .env et .env.example configurés
- ✅ Modèles Essentia téléchargés (genre, mood, instrument)
Backend (Python/FastAPI)
- ✅ Structure complète src/
- ✅ Modèles SQLAlchemy (schema.py) avec AudioTrack
- ✅ Migrations Alembic fonctionnelles
- ✅ CRUD complet (crud.py)
- ✅ API FastAPI (main.py)
- ✅ Routes implémentées :
- ✅ /api/tracks (GET, DELETE)
- ✅ /api/search
- ✅ /api/audio (stream, download, waveform)
- ✅ /api/analyze
- ✅ /api/similar
- ✅ /api/stats
- ✅ Core modules :
- ✅ audio_processor.py (Librosa)
- ✅ essentia_classifier.py (modèles genre/mood/instruments)
- ✅ analyzer.py (orchestrateur)
- ✅ file_scanner.py
- ✅ waveform_generator.py
- ✅ Utils (config, logging, validators)
- ✅ CLI scanner fonctionnel
Frontend (Next.js 14)
- ✅ Structure Next.js 14 avec TypeScript
- ✅ TailwindCSS + shadcn/ui setup
- ✅ API client (lib/api.ts)
- ✅ Types TypeScript (lib/types.ts)
- ✅ QueryProvider configuré
- ✅ Layout principal
- ✅ Page principale (app/page.tsx)
Documentation
- ✅ README.md complet
- ✅ QUICKSTART.md
- ✅ SETUP.md
- ✅ STATUS.md
- ✅ COMMANDES.md
- ✅ DOCKER.md
- ✅ ESSENTIA.md
- ✅ CORRECTIONS.md
- ✅ RESUME.md
🔧 Ce qui reste À FAIRE
Phase 1: Finaliser Docker pour Mac ARM
1.1 Docker Build Optimization
- Finir le build Docker backend (actuellement timeout à 10min)
- Build en cours mais très lent (émulation x86_64)
- Options :
- Option A : Augmenter timeout et laisser finir (15-20 min estimé)
- Option B : Build natif ARM64 en compilant Essentia depuis sources
- Option C : Utiliser image multi-arch existante (mgoltzsche/essentia-container)
- Tester le container backend une fois buildé
- Vérifier que Essentia fonctionne correctement dans le container
- Documenter temps de build et performances
1.2 Docker Compose Validation
- Tester docker-compose up complet
- Vérifier connectivité DB ↔ Backend
- Vérifier connectivité Frontend ↔ Backend
- Tester les 3 services ensemble
Phase 2: Frontend Components (PRIORITAIRE)
Le frontend a la structure mais manque les composants UI. C'est la priorité #1.
2.1 Composants de base manquants
components/SearchBar.tsxcomponents/FilterPanel.tsxcomponents/TrackCard.tsxcomponents/TrackDetails.tsx(Modal)components/AudioPlayer.tsxcomponents/WaveformDisplay.tsxcomponents/BatchScanner.tsxcomponents/SimilarTracks.tsx
2.2 Hooks manquants
hooks/useSearch.ts(recherche avec debounce)hooks/useTracks.ts(fetch + pagination)hooks/useAudioPlayer.ts(state audio player)
2.3 Pages manquantes
app/tracks/[id]/page.tsx(page détail track)
2.4 Installation shadcn components
- Installer composants shadcn manquants :
npx shadcn@latest add button input slider select card dialog badge progress toast dropdown-menu tabs
Phase 3: Tests & Validation
3.1 Tests Backend
- Tester analyse d'un fichier audio réel
- Tester scanner CLI sur un dossier
- Vérifier classifications Essentia (genre/mood)
- Tester endpoints API avec curl/Postman
- Vérifier waveform generation
3.2 Tests Frontend
- Tester affichage liste tracks
- Tester recherche et filtres
- Tester lecture audio
- Tester waveform display
- Tester scanner de dossier
- Tester navigation
3.3 Tests End-to-End
- Flow complet : Scanner dossier → Voir résultats → Jouer track → Chercher similaires
- Tester avec bibliothèque réelle (>100 fichiers)
- Vérifier performances
Phase 4: Optimisations & Polish
4.1 Performance
- Optimiser temps de build Docker (si nécessaire)
- Cache waveform peaks
- Optimiser requêtes DB (indexes)
- Lazy loading tracks (pagination infinie)
4.2 UX
- Loading skeletons
- Error boundaries
- Toast notifications
- Keyboard shortcuts (espace = play/pause)
- Dark mode support
4.3 Backend improvements
- Rate limiting API
- Structured logging
- Error handling middleware
- Health checks détaillés
Phase 5: Features additionnelles (Nice-to-have)
5.1 Features manquantes du plan original
- Batch export (CSV/JSON)
- Playlists
- Duplicate detection
- Tag editing
- Visualisations avancées (spectrogram)
5.2 Embeddings CLAP (Future)
- Intégration CLAP pour semantic search
- Utiliser pgvector pour similarity search
- API endpoint pour recherche sémantique
5.3 Multi-user (Future)
- Authentication JWT
- User management
- Permissions
🎯 ROADMAP RECOMMANDÉE
Sprint 1 (Cette semaine) - MINIMUM VIABLE PRODUCT
- ✅
Finaliser Docker setup - Créer composants frontend de base (SearchBar, TrackCard, AudioPlayer)
- Créer hooks frontend (useTracks, useAudioPlayer)
- Page principale fonctionnelle avec liste + lecture
- Tester flow complet avec fichiers audio réels
Sprint 2 (Semaine prochaine) - FEATURES COMPLÈTES
- Composants avancés (FilterPanel, BatchScanner, SimilarTracks)
- Page détail track
- Optimisations performance
- Polish UX (loading states, errors, toasts)
Sprint 3 (Après) - POLISH & EXTRAS
- Dark mode
- Keyboard shortcuts
- Export data
- Documentation finale
📝 Notes Importantes
Docker Build sur Mac ARM
- Problème actuel : Build très lent (10+ min) car Essentia nécessite émulation x86_64
- Solution actuelle :
FROM --platform=linux/amd64 python:3.9-slimdans Dockerfile - Performance : Runtime sera aussi émulé (plus lent mais fonctionnel)
- Alternative : Compiler Essentia pour ARM64 (complexe, long)
Priorités
- Frontend components → Rendre l'app utilisable
- Tests avec vraie data → Valider que tout fonctionne
- Polish UX → Rendre l'app agréable
État actuel
- ✅ Backend 95% complet et fonctionnel
- ⚠️ Frontend 30% complet (structure ok, UI manquante)
- ⚠️ Docker 90% (backend build en cours)
- ✅ Documentation excellente
🚀 Commandes Utiles
Docker
# Build (peut prendre 15-20 min sur Mac ARM)
docker-compose build
# Démarrer
docker-compose up
# Logs
docker-compose logs -f backend
# Scanner un dossier
docker exec audio_classifier_api python -m src.cli.scanner /music --recursive
Dev Local
# Backend
cd backend
pip install -r requirements.txt
uvicorn src.api.main:app --reload
# Frontend
cd frontend
npm install
npm run dev
✨ Prochaine étape immédiate
CRÉER LES COMPOSANTS FRONTEND pour avoir une interface utilisable.
Ordre suggéré :
- TrackCard (afficher les tracks)
- AudioPlayer (jouer les tracks)
- SearchBar + FilterPanel (recherche)
- BatchScanner (scanner des dossiers)
- TrackDetails + SimilarTracks (features avancées)