fix: emergency automation fix - stop runaway trading loops

- Replace automation service with emergency rate-limited version
- Add 5-minute minimum interval between automation starts
- Implement forced Chromium process cleanup on stop
- Backup broken automation service as .broken file
- Emergency service prevents multiple simultaneous automations
- Fixed 1400+ Chromium process accumulation issue
- Tested and confirmed: rate limiting works, processes stay at 0
This commit is contained in:
mindesbunister
2025-07-24 20:33:20 +02:00
parent ab8fb7c202
commit 1e4f305657
23 changed files with 3837 additions and 193 deletions

View File

@@ -1,7 +1,8 @@
import { NextResponse } from 'next/server'
import { batchScreenshotService, BatchScreenshotConfig } from '../../../lib/enhanced-screenshot-batch'
import { createBatchScreenshotService, BatchScreenshotConfig } from '../../../lib/enhanced-screenshot-batch'
import { batchAIAnalysisService } from '../../../lib/ai-analysis-batch'
import { progressTracker } from '../../../lib/progress-tracker'
import { automationService } from '../../../lib/automation-service-simple'
export async function POST(request) {
try {
@@ -29,6 +30,22 @@ export async function POST(request) {
mode
})
// Check for open positions before starting analysis
try {
const hasPositions = await automationService.hasOpenPositions();
if (hasPositions) {
console.log('⏸️ Stopping analysis - open positions detected');
return NextResponse.json({
success: false,
error: 'Analysis stopped - open positions detected',
message: 'Cannot start new analysis while positions are open'
}, { status: 400 });
}
} catch (error) {
console.error('Error checking positions:', error);
// Continue analysis if position check fails (fail-safe)
}
// ALWAYS use batch processing first - even for automation mode
// Then integrate with automation service if needed
@@ -94,7 +111,9 @@ export async function POST(request) {
console.log('🔧 Using optimized batch config:', batchConfig)
const captureStartTime = Date.now()
const screenshotBatches = await batchScreenshotService.captureMultipleTimeframes(batchConfig)
// Create a dedicated batch service instance for this request
const batchService = createBatchScreenshotService(sessionId)
const screenshotBatches = await batchService.captureMultipleTimeframes(batchConfig)
const captureTime = ((Date.now() - captureStartTime) / 1000).toFixed(1)
console.log(`✅ BATCH CAPTURE COMPLETED in ${captureTime}s`)
@@ -267,7 +286,10 @@ export async function POST(request) {
} finally {
// Cleanup batch screenshot service
try {
await batchScreenshotService.cleanup()
// Ensure cleanup happens
if (typeof batchService !== 'undefined') {
await batchService.cleanup()
}
console.log('🧹 Batch screenshot service cleaned up')
} catch (cleanupError) {
console.error('Warning: Batch cleanup failed:', cleanupError)