1. Tri aléatoire ✅ Ajout d'un sélecteur de tri dans l'en-tête avec options "Récents" et "Aléatoire" Backend : nouveau paramètre sort_by="random" qui utilise func.random() de PostgreSQL Les résultats seront maintenant mélangés aléatoirement, permettant de découvrir tous les titres de la bibliothèque 2. Correction du bug de recherche textuelle ✅ La recherche charge maintenant jusqu'à 10 000 résultats au lieu de 25 quand une requête est active La recherche filtre ensuite sur TOUS les résultats chargés, pas seulement la page active Cela permet de rechercher dans toute la bibliothèque de résultats filtrés 3. Filtres exclusifs pour instruments ✅ Nouvelle option "Uniquement ces instruments (mode exclusif)" qui apparaît quand des instruments sont sélectionnés Backend : nouveau paramètre instruments_exclusive qui vérifie que le track a EXACTEMENT les instruments sélectionnés (pas d'autres) Frontend : checkbox dans un bandeau orange/ambre pour activer le mode exclusif Les modifications touchent : Backend : crud.py et tracks.py Frontend : types.ts, FilterPanel.tsx et page.tsx
Frontend - Audio Classifier
Frontend Next.js pour Audio Classifier avec configuration runtime.
Configuration Runtime
Le frontend utilise un système de configuration runtime qui permet de changer l'URL de l'API sans rebuilder l'image Docker.
Comment ça fonctionne
- Au démarrage du container, le script
generate-config.shgénère un fichier/app/public/config.js - Ce fichier contient l'URL de l'API basée sur la variable
NEXT_PUBLIC_API_URL - Le fichier est chargé dans le navigateur via
<Script src="/config.js"> - Le code API lit la configuration depuis
window.__RUNTIME_CONFIG__.API_URL
Développement Local
# Installer les dépendances
npm install
# Créer un fichier .env.local
echo "NEXT_PUBLIC_API_URL=http://localhost:8001" > .env.local
# Lancer en mode dev
npm run dev
Production avec Docker
# Build l'image
docker build -t audio-classifier-frontend -f frontend/Dockerfile .
# Lancer avec une URL personnalisée
docker run -p 3000:3000 \
-e NEXT_PUBLIC_API_URL=https://mon-serveur.com:8001 \
audio-classifier-frontend
Docker Compose
frontend:
image: audio-classifier-frontend
environment:
NEXT_PUBLIC_API_URL: ${NEXT_PUBLIC_API_URL:-http://localhost:8001}
ports:
- "3000:3000"
Structure
frontend/
├── app/ # Pages Next.js (App Router)
│ ├── layout.tsx # Layout principal (charge config.js)
│ └── page.tsx # Page d'accueil
├── components/ # Composants React
├── lib/ # Utilitaires
│ ├── api.ts # Client API (lit la config runtime)
│ └── types.ts # Types TypeScript
├── public/ # Fichiers statiques
│ └── config.js # Configuration runtime (généré au démarrage)
├── generate-config.sh # Script de génération de config
└── Dockerfile # Image Docker de production
Variables d'Environnement
NEXT_PUBLIC_API_URL: URL de l'API backend (ex:https://api.example.com:8001)
Troubleshooting
L'API n'est pas accessible
Vérifiez que :
- La variable
NEXT_PUBLIC_API_URLest correctement définie - Le fichier
/app/public/config.jsexiste dans le container - Le navigateur peut accéder à l'URL de l'API (pas de CORS, firewall, etc.)
Voir la configuration active
Ouvrez la console du navigateur et tapez :
console.log(window.__RUNTIME_CONFIG__)
Vérifier la config dans le container
docker exec audio_classifier_ui cat /app/public/config.js