Skip to content

BUG: partial_close 自动修正后 actionRecord.Action 未同步更新 #1031

@xqliu

Description

@xqliu

问题描述

partial_close 被自动修正为全平仓时,actionRecord.Action 未同步更新,导致记录到日志的 action 与实际执行的 action 不一致。

复现步骤

  1. AI 决策 partial_close 80%(假设剩余仓位价值 < 10 USDT)
  2. executePartialCloseWithRecord 检测到剩余仓位 < 10 USDT
  3. 自动修正:decision.Action = "close_long"
  4. 调用 executeCloseLongWithRecord(decision, actionRecord)
  5. actionRecord.Action 仍然是 "partial_close"

影响

  • 决策日志中记录 action: "partial_close",但实际执行的是全平仓
  • updateCacheFromDecision 看到 partial_close 无法处理,导致缓存不更新
  • openPositions 状态未清理,可能导致后续决策错误

代码位置

文件: trader/auto_trader.go:1172-1178

// 当前代码
if positionSide == "LONG" {
    decision.Action = "close_long"
    log.Printf("  ✓ 已修正为: close_long")
    return at.executeCloseLongWithRecord(decision, actionRecord)
}

修复建议

// 修复后
if positionSide == "LONG" {
    decision.Action = "close_long"
    actionRecord.Action = "close_long"  // ← 添加这行同步更新
    log.Printf("  ✓ 已修正为: close_long")
    return at.executeCloseLongWithRecord(decision, actionRecord)
} else {
    decision.Action = "close_short"
    actionRecord.Action = "close_short"  // ← 添加这行同步更新
    log.Printf("  ✓ 已修正为: close_short")
    return at.executeCloseShortWithRecord(decision, actionRecord)
}

优先级

  • 严重程度: HIGH
  • 影响范围: 所有被自动修正的 partial_close 交易
  • 修复优先级: P1

相关 Issue

#<下一个 issue 编号> - 缓存主动维护暂不支持 partial_close

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions