2aacd8a25d
- PLAN-008/PLAN-009 计划(已完成) - 迭代 07/08 四件套(目标/技术方案/验收标准/复盘) - 设计约束:数据存储设计 §10/§10.1、技术约束-012/013、产品约束-008 - R-009/R-010 需求归档(含二次定稿:手动归属、Q4 成本价/成交价) - 需求池索引同步
63 lines
4.1 KiB
Markdown
63 lines
4.1 KiB
Markdown
# R-010 策略持仓行展开关联交易记录(Holding → 交易汇总)· 已完成
|
||
|
||
> 归档日期:2026-09-02 | 需求状态:**已完成**
|
||
> 原索引:docs/05-需求池/需求池索引.md(主索引保留 R-010 条目,指向本归档)
|
||
> 实现迭代:08-策略持仓行展开关联交易记录(老师确认,迭代复盘见 docs/04-迭代记录/08-策略持仓行展开关联交易记录/迭代复盘.md)
|
||
> 关联计划:PLAN-009(docs/02-计划/计划-策略持仓行展开关联交易记录.md)
|
||
|
||
---
|
||
|
||
# R-010 策略持仓行展开关联交易记录(Holding → 交易汇总)
|
||
|
||
> 状态:**已定稿**(2026-09-02,老师确认 Q1-Q3)| 登记日期:2026-09-02
|
||
> 来源:老师指令(2026-09-02)
|
||
> 优先级:P1
|
||
> 关联:R-009(交易记录本地存储 + holding_id 关联)、迭代 07
|
||
|
||
## 需求描述
|
||
|
||
策略持仓 tab(如「网格超市」「手动做T」)中,**每个持仓记录(Holding)行可展开**,展开后显示**与该 holding 关联的交易记录**(仅委托汇总,不分笔成交)。
|
||
|
||
- 展开效果类似交易记录 tab 的展开效果;
|
||
- 展开内容只显示**委托汇总**(一笔委托一行,聚合成交信息),**不显示分笔成交明细**;
|
||
- 关联依据 = trade_orders.holding_id(R-009 已建立:用户手动设置归属时写入 holding_id)。
|
||
|
||
## 现状(代码审查 2026-09-02)
|
||
|
||
| 项 | 现状 |
|
||
|---|---|
|
||
| 策略持仓 tab | StrategyTab.jsx:表格展示策略持仓(代码/名称/现价/策略份额/总持仓/操作),行不可展开 |
|
||
| 持仓数据 | strategy-positions 端点返回 QMT 持仓 + shares,**不含 holding_id**(需附加) |
|
||
| holding 关联 | trade_orders.holding_id(R-009 手动归属写入),按 holding_id 可精确查询交易 |
|
||
| 交易汇总 | trade_orders 单行即委托汇总(order_volume/traded_volume/amount/费用等),天然是汇总 |
|
||
|
||
## 待讨论点(Q1-Q3,AI 建议见各条)
|
||
|
||
### Q1 持仓行如何带出 holding_id(AI 建议:strategy-positions 附加 holding_id)
|
||
- 方案:PositionManager.getStrategyPositions 返回时,查 strategy_holdings 附加 holding_id(同策略同 code 的当前持仓);
|
||
- 一票多策略:当前策略下的该 code 只有一个当前持仓(idx_active_holding 约束),可精确匹配;
|
||
- 需确认:是否接受服务端附加 holding_id 到 strategy-positions 响应?
|
||
|
||
### Q2 查询端点(AI 建议:新增 trades/by-holding 端点)
|
||
- 新增端点:按 holding_id 查 trade_orders(返回委托汇总列表,含状态/方向/量/价/金额/时间);
|
||
- 复用 SqliteStore 查询(WHERE holding_id=? ORDER BY insert_ts DESC);
|
||
- 需确认:端点命名与返回结构?
|
||
|
||
### Q3 前端展开 UI(AI 建议:持仓行展开 + 内嵌汇总表)
|
||
- 展开效果:类似交易记录 tab(行点击展开/折叠,箭头指示);
|
||
- 展开内容:内嵌小表格显示该 holding 的委托汇总(时间/方向/状态/委托量/成交量/均价/金额/费用);
|
||
- 懒加载:展开时才查询 trades/by-holding(不展开不请求);
|
||
- 需确认:展示列是否与交易记录 tab 的委托汇总一致(可精简)?
|
||
|
||
### Q4 成本价 + 最后一笔成交价(2026-09-02 老师补充,已确认)
|
||
|
||
- **成本价**:持仓数据源已有 avgPrice(QMT 持仓字段,如博纳影业 6.8393),直接展示;
|
||
- **最后一笔成交价**:
|
||
- 该 holding 关联交易记录(trades/by-holding)按时间取**最新一笔有实际成交**(tradedVolume > 0)的委托的 tradedPrice(成交价);
|
||
- 无关联交易 / 关联委托均未成交 → 默认等于成本价(avgPrice);
|
||
- 展示位置:策略持仓 tab 持仓行加「成本价」「最后一笔成交价」两列。
|
||
|
||
## 定稿记录
|
||
|
||
- 2026-09-02 老师确认 Q1-Q3 全部定稿:strategy-positions 附加 holding_id(Q1)+ trades/by-holding 端点(Q2)+ 持仓行展开 UI(懒加载,仅委托汇总)(Q3);**R-010 转已定稿,进入迭代 08 实施**。
|
||
- 2026-09-02 老师补充 Q4(成本价 + 最后一笔成交价)并确认规则(取最新有成交的 tradedPrice,无成交默认成本价)。 |