Files
Audio-Classifier/.claude-todo.md
2025-12-06 22:27:49 +01:00

265 lines
7.2 KiB
Markdown

# 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.tsx`
- [ ] `components/FilterPanel.tsx`
- [ ] `components/TrackCard.tsx`
- [ ] `components/TrackDetails.tsx` (Modal)
- [ ] `components/AudioPlayer.tsx`
- [ ] `components/WaveformDisplay.tsx`
- [ ] `components/BatchScanner.tsx`
- [ ] `components/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 :
```bash
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
1. ✅ ~~Finaliser Docker setup~~
2. **Créer composants frontend de base** (SearchBar, TrackCard, AudioPlayer)
3. **Créer hooks frontend** (useTracks, useAudioPlayer)
4. **Page principale fonctionnelle** avec liste + lecture
5. **Tester flow complet** avec fichiers audio réels
### Sprint 2 (Semaine prochaine) - FEATURES COMPLÈTES
1. Composants avancés (FilterPanel, BatchScanner, SimilarTracks)
2. Page détail track
3. Optimisations performance
4. Polish UX (loading states, errors, toasts)
### Sprint 3 (Après) - POLISH & EXTRAS
1. Dark mode
2. Keyboard shortcuts
3. Export data
4. 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-slim` dans Dockerfile
- **Performance** : Runtime sera aussi émulé (plus lent mais fonctionnel)
- **Alternative** : Compiler Essentia pour ARM64 (complexe, long)
### Priorités
1. **Frontend components** → Rendre l'app utilisable
2. **Tests avec vraie data** → Valider que tout fonctionne
3. **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
```bash
# 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
```bash
# 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é :
1. TrackCard (afficher les tracks)
2. AudioPlayer (jouer les tracks)
3. SearchBar + FilterPanel (recherche)
4. BatchScanner (scanner des dossiers)
5. TrackDetails + SimilarTracks (features avancées)