Skip to content

Conversation

@WrBug
Copy link
Owner

@WrBug WrBug commented Jan 10, 2026

🐛 Bug 修复

修复盈亏统计计算错误问题

  • 问题:在仓位检查时,刚创建的订单可能因仓位更新延迟被误判为已卖出,导致盈亏统计计算错误
  • 修复
    • 优化自动卖出订单筛选逻辑,在 SQL 层直接过滤创建时间超过阈值的订单
    • 新增 findUnmatchedBuyOrdersByOutcomeIndexOlderThan Repository 方法,提高查询效率
    • 统一使用 2 分钟阈值保护刚创建的订单,避免误判
    • 两个场景都使用 SQL 过滤:
      • 场景1:仓位不存在时,延迟检测使用 SQL 过滤
      • 场景2:仓位部分存在时,FIFO 匹配使用 SQL 过滤

📝 技术细节

  • Repository 变更

    • 新增 findUnmatchedBuyOrdersByOutcomeIndexOlderThan 方法
    • 在 SQL 查询中添加 createdAt < :thresholdTime 条件过滤
  • Service 变更

    • PositionCheckService 中两个场景都使用 SQL 过滤替代内存过滤
    • 统一使用 2 分钟(120000 毫秒)作为时间阈值

📊 变更统计

  • 提交数量:2 个提交
  • 文件变更:3 个文件
  • 代码变更:+124 行 / -38 行(净增加 86 行)

🔗 相关链接

WrBug added 2 commits January 10, 2026 03:39
问题:在仓位检查时,刚创建的订单可能因仓位更新延迟被误判为已卖出

修改:
1. Repository 层面新增 findUnmatchedBuyOrdersByOutcomeIndexOlderThan 方法
   - 在 SQL 层直接过滤创建时间超过阈值的订单
   - 提高查询效率,减少数据传输

2. PositionCheckService 两个场景都使用 SQL 过滤
   - 场景1:仓位不存在时,延迟检测使用 SQL 过滤
   - 场景2:仓位部分存在时,FIFO 匹配使用 SQL 过滤
   - 统一使用 2 分钟阈值保护刚创建的订单

优化效果:
- SQL 层面直接过滤,减少数据传输
- 代码更简洁,逻辑更清晰
- 刚创建的订单(< 2 分钟)不会被误判为已卖出
- 日志更详细,便于排查问题
@WrBug WrBug merged commit 43de010 into main Jan 10, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant