fix pivot cache db

This commit is contained in:
Dobromir Popov
2025-10-24 17:14:59 +03:00
parent 4b8f44d859
commit 420251f2d4
3 changed files with 308 additions and 124 deletions

View File

@@ -140,21 +140,20 @@ class AnnotationDashboard:
], className="container")
])
# Initialize core components
self.data_provider = DataProvider() if DataProvider else None
# Initialize core components (skip initial load for fast startup)
self.data_provider = DataProvider(skip_initial_load=True) if DataProvider else None
# Enable unified storage for real-time data access
if self.data_provider:
self._enable_unified_storage_async()
self.orchestrator = TradingOrchestrator(
data_provider=self.data_provider
) if TradingOrchestrator and self.data_provider else None
# ANNOTATE doesn't need orchestrator - skip ML model loading for fast startup
self.orchestrator = None
# Initialize ANNOTATE components
self.annotation_manager = AnnotationManager()
# Use REAL training adapter - NO SIMULATION!
self.training_adapter = RealTrainingAdapter(self.orchestrator, self.data_provider)
self.training_adapter = RealTrainingAdapter(None, self.data_provider)
# Initialize data loader with existing DataProvider
self.data_loader = HistoricalDataLoader(self.data_provider) if self.data_provider else None
@@ -206,56 +205,32 @@ class AnnotationDashboard:
storage_thread.start()
def _start_background_data_refresh(self):
"""Start background task to refresh recent data after startup"""
"""Start background task to refresh recent data after startup - ONCE ONLY"""
def refresh_recent_data():
try:
import time
# Wait for app to fully start
time.sleep(5)
logger.info("🔄 Starting background data refresh (fetching only recent missing data)")
logger.info("🔄 Starting one-time background data refresh (fetching only recent missing data)")
# Disable startup mode to fetch fresh data
self.data_loader.disable_startup_mode()
# Fetch only last 5 minutes of 1m data and 300 seconds of 1s data
symbols = self.config.get('symbols', ['ETH/USDT', 'BTC/USDT'])
# Use the new on-demand refresh method
logger.info("Using on-demand refresh for recent data")
self.data_provider.refresh_data_on_demand()
for symbol in symbols:
try:
# Fetch last 5 candles of 1m data (5 minutes)
logger.info(f"Refreshing recent 1m data for {symbol}")
self.data_provider.get_historical_data(
symbol=symbol,
timeframe='1m',
limit=5,
refresh=True
)
# Fetch last 300 candles of 1s data (5 minutes)
logger.info(f"Refreshing recent 1s data for {symbol}")
self.data_provider.get_historical_data(
symbol=symbol,
timeframe='1s',
limit=300,
refresh=True
)
logger.info(f"✅ Refreshed recent data for {symbol}")
except Exception as e:
logger.warning(f"Could not refresh recent data for {symbol}: {e}")
logger.info("✅ Background data refresh completed")
logger.info("✅ One-time background data refresh completed")
except Exception as e:
logger.error(f"Error in background data refresh: {e}")
# Start in background thread
# Start refresh in background thread
import threading
refresh_thread = threading.Thread(target=refresh_recent_data, daemon=True)
refresh_thread.start()
logger.info("📊 Background data refresh scheduled")
logger.info("📊 One-time background data refresh scheduled")
def _get_pivot_markers_for_timeframe(self, symbol: str, timeframe: str, df: pd.DataFrame) -> dict:
"""