Files
one_divine_lot/docs/02-计划/计划-交易关联驱动持仓份额动态调整.md
T

37 lines
3.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 计划:交易关联驱动持仓份额动态调整(阶段航点)
> 编号:PLAN-017 | 粒度:阶段航点 创建:2026-09-08 | 状态:**已完成(迭代 16 验收通过 2026-09-08**
> 派生自终极目标:目标-006(交易复盘)/ 目标-007(人机合一)
> 依据需求:**R-018(已定稿,2026-09-08,老师逐项拍板)** —— 符合入范围门槛
> 设计约束:技术约束-017(变更:幽灵清仓条款)、产品约束-011(变更)、数据存储设计.md §11(变更);新增归属分段存储设计
## 目标
从交易记录出发的关联操作升级为**账本写操作**:策略级候选 + 统一份额分配器(一笔委托拆 0..N 段 × 策略)、买卖联动调整 strategy_holdings 份额(买入加仓/建新仓、卖出减仓/归零清仓、仓不足自动截断续分)、撤段逆操作回滚(作废第三态 / 恢复活动仓)、**数据域分界**(幽灵清仓等同步机制不再写账本,账本只由交易关联 + 手动份额操作驱动)。
## 范围
**做**
1. 数据域分界落地:PositionSync 删除幽灵清仓账本写逻辑(同步机制只维护对账单快照)+ 漏关联软提示检测(账本有活动行 + QMT 快照无此 code → 提示,不动账本);
2. 存储地基:strategy_holdings 增 `void_at` 作废第三态(活动 = closed_at IS NULL AND void_at IS NULL,唯一索引收窄)+ 幂等补列;新增归属分段表 `trade_order_attributions`order_id → strategy_id/holding_id/volume/direction/created_at+ 存量归属迁移(trade_orders 两列 → 段表第一段);
3. 归属服务(核心):份额分配器 apply/revoke——判定动作表(买/卖 × 活动仓状态 → open/add/reduce/close/截断/失败)+ 撤段逆操作(撤建仓买入=作废、撤加仓=减回归零作废、撤卖出=恢复活动+份额加回)+ 原子性(改归属 = 撤旧段 + 加新段);
4. 策略级候选 + 分配器 API:候选回归「当前持仓 + 未关联」(R-017 7 天清仓候选退役,holdingId 键控/占位安全逻辑保留);
5. UITradeRecordsTab 归属入口改造为份额分配器(策略下拉 + 段量输入 + 余额提示 + 部分关联);
6. 回归:新脚本(分配器动作/撤段/迁移/软提示)+ 存量回归 + typecheck + build。
**不做**:自动归属推导暴露;全部持仓/未分配 tab 份额联动 UI;未分配余额自动兜底;账本写自动化兜底(软提示不改账本)。
## 实施步骤(阶段划分,供迭代跟踪)
1. 阶段APositionSync 幽灵清仓退役 + 软提示检测基础;
2. 阶段B:存储地基(void_at + 段表 + 迁移);
3. 阶段C:归属服务核心(apply/revoke 动作表 + 原子性);
4. 阶段D:策略级候选 + API(含 R-017 退役);
5. 阶段EUI 份额分配器;
6. 阶段F:回归 + typecheck + build + 存量回归;
7. 迭代复盘 + R-018 索引状态更新 + 需求归档。
## 验收要点
`docs/04-迭代记录/16-交易关联驱动持仓份额动态调整/验收标准.md`