# R-007 交易记录接入(订单与成交数据 + 时间段查询)· 已完成 > 归档日期:2026-09-01 | 需求状态:**已完成** > 原索引:docs/05-需求池/需求池索引.md(主索引保留 R-007 条目,指向本归档) > 实现迭代:05-交易记录接入(验收通过,迭代复盘见 docs/04-迭代记录/05-交易记录接入/迭代复盘.md) > 关联计划:PLAN-006(docs/02-计划/计划-交易记录接入.md) --- > 状态:**已定稿**(2026-09-01,老师确认)| 登记日期:2026-09-01 > 来源:老师指令(2026-09-01) > 优先级:P1 ## 需求描述 在神之一手(one-divine-lot 插件)的「交易记录」tab 接入 QMT Bridge **当日委托(/trade/orders)与当日成交(/trade/trades)**: - **单表合并展示**:委托为主行,按 m_strOrderSysID 合并成交信息(聚合成交量/加权均价/金额/费用),点击展开逐笔成交明细; - **时间段查询**:标题 + 时间段控件同一行(今日/本周/本月快捷按钮 + 手动起止日期),匹配历史接口按时间范围查询的形态; - **费用计算**:佣金费率 = 万分之 m_dCommission(如 0.852 = 万0.852),不足 5 元按 5 元(账号没免五);卖出加印花税(万分之5);双向过户费(万分之0.1);**同一委托分笔成交合并算一次佣金**; - **排序**:委托主行默认降序,支持表头点击手动排序; - **日期导航**:为老师完善 QMT Bridge 历史成交接口预留(历史范围本期占位)。 ## 核心逻辑(定稿版) 1. **单表合并**:委托行 = 一笔委托,按 m_strOrderSysID 聚合该委托全部成交(成交量 Σ、加权均价、金额 Σ、费用 Σ);展开/折叠查看每笔成交明细(2026-09-01 老师拍板); 2. **方向判定**:m_nDirection=48 恒为 EEntrustBS 操作标记(官方 innerApi 字典),真实方向在 m_nOffsetFlag(48=买入/49=卖出)+ m_strOptName 交叉验证(Q3 闭环); 3. **交互单向模型**:preset 意图状态记录用户点的快捷按钮(操作→状态→UI),不做「范围反推按钮」反向推断;手动改日期清除 preset(2026-09-01 老师纠正); 4. **快捷范围(完整互斥)**:今日=最近交易日单日;本周=所在自然周周一~周五(不考虑周六日);本月=所在自然月1号~月末(2026-09-01 老师纠正:不做截至今天截断); 5. **费用计算**: - 佣金 = Σ成交额 × (万分之m_dCommission),不足 5 元按 5 元(没免五); - 印花税 = 卖出单边 × 万分之5(2023-08-28 起标准); - 过户费 = 双向 × 万分之0.1(2022-04-29 起标准,无最低,中登收取); - **同一委托分笔成交合并算一次佣金**;多笔独立委托各自算(2026-09-01 老师修正); 6. **数据时效**:/trade/orders 与 /trade/trades 仅当日数据(get_trade_detail_data 读客户端缓存,官方 Q&A 确认),历史查询需老师完善 QMT Bridge 接口; 7. **刷新**:仅「今日」范围 4s 轮询;其他范围一次性查询。 ## 数据模型(语义化映射) **Order**:orderId/code/name/exchange/direction/directionCode/optName/status/orderVolume/tradedVolume/totalVolume/limitPrice/tradedPrice/amount/insertDate/insertTime/cancelInfo/errorMsg **Trade**:tradeId/orderId/code/name/exchange/direction/directionCode/optName/price/volume/amount/commissionRateWan(佣金费率万分之)/tradeDate/tradeTime **费用**:calcOrderFees(委托级):totalAmount/commission(最低5元一次)/stampTax(卖出)/transferFee(双向)/total ## 边界(不做) - 历史(非当日)交易数据查询实现(老师完善 QMT Bridge 接口后接入,服务端已预留 start/end 透传); - 交易数据本地持久化(Q5 本期不做,跨日复盘待历史接口就绪后评估); - 按策略过滤交易(Q10 后续迭代,strategy_name 与插件策略体系打通); - 下单/撤单等交易操作(目标-007 人机合一控制权另议)。 ## 关键决策(Q1-Q11 结论) | # | 问题 | 结论 | |---|---|---| | Q1 | 展示范围 | 单表合并:委托主行 + 展开成交明细(老师拍板) | | Q2 | 刷新机制 | 服务端中转 + 前端 4s 轮询(仅今日范围) | | Q3 | 方向判定 | m_nOffsetFlag(48买/49卖)+ m_strOptName 交叉验证 | | Q4 | 状态展示 | 全量 + 状态列中文映射(未报/已报/部成/已成/已撤/废单) | | Q5 | 持久化 | 本期不做(跨日复盘待历史接口) | | Q6 | 关联形态 | 单表合并 + 展开/折叠(老师拍板) | | Q7 | 方向着色 | 红买绿卖 | | Q8 | 精度 | 成交额/金额 2 位、手续费/费用 2 位、成交量整数 | | Q9 | 优先级 | P1 | | Q10 | 策略联动 | 本期不做(后续迭代) | | Q11 | 时间段查询 | 今日/本周/本月快捷 + 手动起止;完整互斥范围;单向交互模型 | ## 讨论与修正记录 - 2026-09-01 登记 + 技术研究(API 字段全表 / 方向判定 / 数据时效 / sample data); - 2026-09-01 范围定稿:当日订单+成交 + 日期导航(老师将完善历史接口); - 2026-09-01 展示设计定稿:单表合并 + 展开明细 + 排序降序; - 2026-09-01 修正一:快捷按钮 今日/本周/上周 → 今日/本周/本月; - 2026-09-01 修正二:快捷范围为完整时间段(不做截至今天截断,操作逻辑问题); - 2026-09-01 修正三:交互单向模型(操作→状态→UI,不做反向推断); - 2026-09-01 修正四:本周 = 周一~周五(不考虑周六日); - 2026-09-01 修正五:佣金按委托级合并计费(分笔成交只收一次佣金); - 2026-09-01 费用规则:m_dCommission = 佣金费率万分之,最低5元,印花税/过户费费率确认。 ## 实现记录 | 项 | 内容 | |---|---| | 实现迭代 | 05-交易记录接入 | | 服务端 | QmtBridgeRestDataSource(getOrders/getTrades/getTradingDates/calcOrderFees)、api/trades.js(orders/trades/trading-dates) | | 客户端 | TradeRecordsTab.jsx(单表合并+排序+轮询)、RangeSelector.jsx(时间段选择) | | 构建安装 | pnpm run build + 宿主重启(服务端)/ 页面刷新(客户端) | | 提交 | bb3f8bd(迭代03-05)、8caeb76(佣金合并计费)、08c4ad3(箭头样式) | ## 验收结果 - 服务端三端点端到端实测:✅(orders/trades/trading-dates 返回真实数据) - 单表合并 + 展开明细:✅(博纳影业卖出 200股@6.00 委托+成交完整链路) - 费用计算:✅(佣金5 + 印花税0.6 + 过户费0.012 = 5.612;委托级合并计费验证通过) - 时间段查询(今日/本周/本月 + 手动):✅ - 排序(默认降序 + 表头手动):✅ - 方向判定(m_nOffsetFlag + optName):✅ - 现有功能不回归:✅(持仓/策略/行情/连接配置正常)