* @param {string} signal.reason - Raison du signal\r
* @param {string} [signal.criticality] - 'INFO', 'WARNING', 'CRITICAL'\r
* @returns {Promise<string>} 'SENT' ou 'FAILED'\r
- * \r
+ *\r
* @example\r
* const status = await sendWebAlert('user-123', {\r
* action: 'BUY',\r
pair: signal.pair,\r
confidence: signal.confidence,\r
reason: signal.reason,\r
- \r
+\r
// Métadonnées\r
alertLevel: signal.criticality || 'INFO',\r
timestamp: Date.now(),\r
- \r
+\r
// Prix si disponible\r
- ...(signal.priceAtSignal && { price: signal.priceAtSignal })\r
+ price: signal.priceAtSignal ?? signal.price ?? null\r
};\r
\r
// Envoyer via Socket.IO\r
/**\r
* Vérifie si le canal web est disponible pour un utilisateur\r
* (utile pour le service avant de tenter l'envoi)\r
- * \r
+ *\r
* @param {string} userId - ID de l'utilisateur\r
* @returns {boolean} true si l'utilisateur peut recevoir des alertes web\r
*/\r