wip
This commit is contained in:
@@ -57,28 +57,42 @@ class LiveUpdatesPolling {
|
||||
}
|
||||
|
||||
_poll() {
|
||||
// Poll each subscription
|
||||
// OPTIMIZATION: Batch all subscriptions into a single API call
|
||||
// Group by symbol to reduce API calls from 4 to 1
|
||||
const symbolGroups = {};
|
||||
this.subscriptions.forEach(sub => {
|
||||
fetch('/api/live-updates', {
|
||||
if (!symbolGroups[sub.symbol]) {
|
||||
symbolGroups[sub.symbol] = [];
|
||||
}
|
||||
symbolGroups[sub.symbol].push(sub.timeframe);
|
||||
});
|
||||
|
||||
// Make one call per symbol with all timeframes
|
||||
Object.entries(symbolGroups).forEach(([symbol, timeframes]) => {
|
||||
fetch('/api/live-updates-batch', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({
|
||||
symbol: sub.symbol,
|
||||
timeframe: sub.timeframe
|
||||
symbol: symbol,
|
||||
timeframes: timeframes
|
||||
})
|
||||
})
|
||||
.then(response => response.json())
|
||||
.then(data => {
|
||||
if (data.success) {
|
||||
// Handle chart update (even if null, predictions should still be processed)
|
||||
if (data.chart_update && this.onChartUpdate) {
|
||||
this.onChartUpdate(data.chart_update);
|
||||
// Handle chart updates for each timeframe
|
||||
if (data.chart_updates && this.onChartUpdate) {
|
||||
// chart_updates is an object: { '1s': {...}, '1m': {...}, ... }
|
||||
Object.entries(data.chart_updates).forEach(([timeframe, update]) => {
|
||||
if (update) {
|
||||
this.onChartUpdate(update);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// CRITICAL FIX: Handle prediction update properly
|
||||
// data.prediction is already in format { transformer: {...}, dqn: {...}, cnn: {...} }
|
||||
// Handle prediction update (single prediction for all timeframes)
|
||||
// data.prediction is in format { transformer: {...}, dqn: {...}, cnn: {...} }
|
||||
if (data.prediction && this.onPredictionUpdate) {
|
||||
// Log prediction data for debugging
|
||||
console.log('[Live Updates] Received prediction data:', {
|
||||
has_transformer: !!data.prediction.transformer,
|
||||
has_dqn: !!data.prediction.dqn,
|
||||
@@ -88,10 +102,7 @@ class LiveUpdatesPolling {
|
||||
has_predicted_candle: !!data.prediction.transformer?.predicted_candle
|
||||
});
|
||||
|
||||
// Pass the prediction object directly (it's already in the correct format)
|
||||
this.onPredictionUpdate(data.prediction);
|
||||
} else if (!data.prediction) {
|
||||
console.debug('[Live Updates] No prediction data in response');
|
||||
}
|
||||
} else {
|
||||
console.debug('[Live Updates] Response not successful:', data);
|
||||
|
||||
Reference in New Issue
Block a user