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

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.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 :
    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

# 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é :

  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)