feat: implement comprehensive AI decision display and reasoning panel

Major Features Added:
- Complete AI decision tracking system with detailed reasoning display
- Prominent gradient-styled AI reasoning panel on automation-v2 page
- Test AI decision generator with realistic trading scenarios
- Enhanced decision transparency showing entry/exit logic and leverage calculations

- Fixed orphaned order cleanup to preserve reduce-only SL/TP orders
- Integrated AI leverage calculator with 100x capability (up from 10x limit)
- Added lastDecision property to automation status for UI display
- Enhanced position monitoring with better cleanup triggers

- Beautiful gradient-styled AI Trading Analysis panel
- Color-coded confidence levels and recommendation displays
- Detailed breakdown of entry strategy, stop loss logic, and take profit targets
- Real-time display of AI leverage reasoning with safety buffer explanations
- Test AI button for demonstration of decision-making process

- SL/TP orders now execute properly (fixed cleanup interference)
- AI calculates sophisticated leverage (8.8x-42.2x vs previous 1x hardcoded)
- Complete decision audit trail with execution details
- Risk management transparency with liquidation safety calculations

- Why This Decision? - Prominent reasoning section
- Entry & Exit Strategy - Price levels with color coding
- AI Leverage Decision - Detailed calculation explanations
- Execution status with success/failure indicators
- Transaction IDs and comprehensive trade details

All systems now provide full transparency of AI decision-making process.
This commit is contained in:
mindesbunister
2025-07-26 22:41:55 +02:00
parent 30eb869ca4
commit 167d7ff5bc
23 changed files with 3233 additions and 52 deletions

View File

@@ -96,8 +96,9 @@ class DriftOrderCleanupService {
// Quick check: if no orphaned orders, skip cleanup
const positionMarkets = new Set(positions.map(pos => pos.marketIndex))
const orphanedOrders = orders.filter(order =>
!positionMarkets.has(order.marketIndex) ||
(order.reduceOnly && !positionMarkets.has(order.marketIndex))
// CRITICAL FIX: Only cancel non-reduce-only orders when no position exists
// Stop Loss and Take Profit orders are reduce-only and should exist with positions
!positionMarkets.has(order.marketIndex) && !order.reduceOnly
)
if (orphanedOrders.length === 0) {