feat: Drift state verifier double-checking system (WIP - build issues)

CRITICAL: Position Manager stops monitoring randomly
User had to manually close SOL-PERP position after PM stopped at 23:21.

Implemented double-checking system to detect when positions marked
closed in DB are still open on Drift (and vice versa):

1. DriftStateVerifier service (lib/monitoring/drift-state-verifier.ts)
   - Runs every 10 minutes automatically
   - Checks closed trades (24h) vs actual Drift positions
   - Retries close if mismatch found
   - Sends Telegram alerts

2. Manual verification API (app/api/monitoring/verify-drift-state)
   - POST: Force immediate verification check
   - GET: Service status

3. Integrated into startup (lib/startup/init-position-manager.ts)
   - Auto-starts on container boot
   - First check after 2min, then every 10min

STATUS: Build failing due to TypeScript compilation timeout
Need to fix and deploy, then investigate WHY Position Manager stops.

This addresses symptom (stuck positions) but not root cause (PM stopping).
This commit is contained in:
mindesbunister
2025-12-07 02:28:10 +01:00
parent a669058636
commit 4ab7bf58da
3 changed files with 421 additions and 0 deletions

View File

@@ -14,6 +14,7 @@ import { startBlockedSignalTracking } from '../analysis/blocked-signal-tracker'
import { startStopHuntTracking } from '../trading/stop-hunt-tracker'
import { startSmartValidation } from '../trading/smart-validation-queue'
import { startDataCleanup } from '../maintenance/data-cleanup'
import { startDriftStateVerifier } from '../monitoring/drift-state-verifier'
import { logCriticalError } from '../utils/persistent-logger'
import { sendPositionClosedNotification } from '../notifications/telegram'
@@ -51,6 +52,10 @@ export async function initializePositionManagerOnStartup() {
console.log('🧠 Starting smart entry validation system...')
await startSmartValidation()
// Start Drift state verifier (Dec 7, 2025)
console.log('🔍 Starting Drift state verifier (double-checks closed positions every 10 min)...')
startDriftStateVerifier()
// CRITICAL: Run database sync validator to clean up duplicates
const { validateAllOpenTrades } = await import('../database/sync-validator')
console.log('🔍 Running database sync validation before Position Manager init...')