Fix UI synchronization: automation status now properly reflects running state

- Add isRunning check in runCycle to prevent zombie automation cycles
- Enhance status reporting with detailed status and next action descriptions
- Add clear logging for start/stop operations with isRunning status
- Fix disconnect between background intervals and UI status display
- Stop button should now work properly when automation is actually running

UI will now correctly show when automation is running vs stopped
This commit is contained in:
mindesbunister
2025-07-25 10:03:14 +02:00
parent 8842841dc9
commit e228daa993

View File

@@ -42,6 +42,9 @@ class SimpleAutomation {
this.isRunning = true; this.isRunning = true;
this.stats.startTime = new Date().toISOString(); this.stats.startTime = new Date().toISOString();
this.stats.status = 'Running'; this.stats.status = 'Running';
console.log('✅ AUTOMATION STATUS: isRunning =', this.isRunning);
console.log('🎯 LIVE TRADING:', this.config.enableTrading ? 'ENABLED' : 'DISABLED');
this.stats.totalCycles = 0; this.stats.totalCycles = 0;
// Auto-enable trading when in LIVE mode // Auto-enable trading when in LIVE mode
@@ -94,8 +97,10 @@ class SimpleAutomation {
async stop() { async stop() {
try { try {
console.log('🛑 STOPPING AUTOMATION...');
this.isRunning = false; this.isRunning = false;
this.stats.status = 'Stopped'; this.stats.status = 'Stopped';
console.log('✅ AUTOMATION STATUS: isRunning =', this.isRunning);
if (this.intervalId) { if (this.intervalId) {
clearInterval(this.intervalId); clearInterval(this.intervalId);
@@ -113,6 +118,12 @@ class SimpleAutomation {
async runCycle() { async runCycle() {
try { try {
// Check if automation should still be running
if (!this.isRunning) {
console.log('⏹️ AUTOMATION STOPPED: Skipping cycle');
return;
}
this.stats.totalCycles++; this.stats.totalCycles++;
this.stats.lastActivity = new Date().toISOString(); this.stats.lastActivity = new Date().toISOString();
@@ -469,7 +480,7 @@ class SimpleAutomation {
} }
getStatus() { getStatus() {
return { const baseStatus = {
isActive: this.isRunning, isActive: this.isRunning,
mode: this.config?.mode || 'SIMULATION', mode: this.config?.mode || 'SIMULATION',
enableTrading: this.config?.enableTrading || false, enableTrading: this.config?.enableTrading || false,
@@ -479,6 +490,17 @@ class SimpleAutomation {
automationType: 'SIMPLE', automationType: 'SIMPLE',
...this.stats ...this.stats
}; };
// Add more descriptive status based on running state
if (this.isRunning) {
baseStatus.detailedStatus = 'Running - Monitoring for trade opportunities';
baseStatus.nextAction = 'Next analysis cycle in progress';
} else {
baseStatus.detailedStatus = 'Stopped - No monitoring active';
baseStatus.nextAction = 'Start automation to begin monitoring';
}
return baseStatus;
} }
} }