start integrate suno and generate lyrics with gemini

This commit is contained in:
Thomas Demirdjian
2025-08-08 17:30:03 +02:00
parent 7bcc2e9779
commit 2a5a0149e8
81 changed files with 8321 additions and 26379 deletions
+124
View File
@@ -0,0 +1,124 @@
# Plan d'implémentation - Fonction Callback Suno
## Objectif
Créer une cloud function qui servira de callback pour l'API Suno afin de recevoir les notifications lorsque la génération de musique est terminée.
## Problèmes identifiés
- [ ] Besoin d'une URL de callback pour l'API Suno
- [ ] Gestion des notifications de fin de génération
- [ ] Mise à jour automatique du statut dans Firestore
- [ ] Traitement des erreurs de callback
## Solutions appliquées
### ✅ 1. Création de la fonction callback
- [x] Créé `/functions/src/callback.js`
- [x] Fonction `sunoCallback` avec méthode POST uniquement
- [x] Validation des données reçues
- [x] Gestion des erreurs avec logs émojis
### ✅ 2. Traitement des données callback
- [x] Extraction des paramètres de l'API Suno :
- `id` : Identifiant de la génération
- `status` : Statut de la génération
- `audio_url` : URL du fichier audio
- `video_url` : URL du fichier vidéo
- `image_url` : URL de l'image de couverture
- `lyric` : Paroles générées
- `title` : Titre de la chanson
- `tags` : Style musical
- `duration` : Durée de la chanson
- `error_message` : Message d'erreur si échec
### ✅ 3. Mise à jour Firestore
- [x] Recherche du document correspondant par ID
- [x] Mise à jour des champs :
- `status` : Nouveau statut
- `audioUrl` : URL audio si disponible
- `videoUrl` : URL vidéo si disponible
- `imageUrl` : URL image si disponible
- `lyrics` : Paroles si disponibles
- `title` : Titre si disponible
- `style` : Style si disponible
- `duration` : Durée si disponible
- `errorMessage` : Message d'erreur si échec
- `updatedAt` : Timestamp de mise à jour
### ✅ 4. Configuration de l'URL callback
- [x] Mis à jour `SUNO_CALLBACK_URL` dans `music.js`
- [x] URL : `https://us-central1-musicland-app.cloudfunctions.net/sunoCallback`
- [x] Intégration dans le payload de génération
### ✅ 5. Export de la fonction
- [x] Ajouté l'export dans `functions/index.js`
- [x] Fonction accessible via Firebase Functions
## Structure de la fonction callback
```javascript
exports.sunoCallback = onRequest({
cors: true,
methods: ["POST"],
}, async (req, res) => {
// Validation de la méthode
// Extraction des données
// Recherche du document Firestore
// Mise à jour des données
// Réponse de succès/erreur
});
```
## Gestion des erreurs
- ✅ Validation de la méthode HTTP (POST uniquement)
- ✅ Vérification de la présence de l'ID
- ✅ Vérification de l'existence du document Firestore
- ✅ Gestion des erreurs de mise à jour
- ✅ Logs avec émojis pour faciliter le debugging
## Réponses de la fonction
### Succès (200)
```json
{
"success": true,
"message": "Callback traité avec succès",
"id": "generation_id",
"status": "completed"
}
```
### Erreurs
- **405** : Méthode non autorisée
- **400** : ID manquant
- **404** : Document non trouvé
- **500** : Erreur interne du serveur
## Tests à effectuer
- [ ] Tester la fonction avec un payload de test
- [ ] Vérifier la mise à jour Firestore
- [ ] Tester les cas d'erreur
- [ ] Vérifier les logs
- [ ] Tester l'intégration avec l'API Suno
## Déploiement
- [ ] Déployer les functions : `firebase deploy --only functions`
- [ ] Vérifier l'URL de la fonction déployée
- [ ] Tester la fonction en production
## Notes importantes
- La fonction utilise `onRequest` pour accepter les callbacks HTTP
- CORS activé pour permettre les appels externes
- Seules les requêtes POST sont acceptées
- Les logs utilisent des émojis pour faciliter le debugging
- La fonction met à jour automatiquement le timestamp `updatedAt`
## Fichiers modifiés
-`/functions/src/callback.js` (créé)
-`/functions/src/music.js` (SUNO_CALLBACK_URL mis à jour)
-`/functions/index.js` (export ajouté)
- ✅ `/plans/suno-callback-implementation.md` (ce fichier)