Files
one_divine_lot/docs/04-迭代记录/17-策略会话/产品逻辑设计.md
T

131 lines
11 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.
# 迭代 17 产品逻辑设计:策略会话
> 依据:R-021(合并原 R-019+R-021,已定稿)| 日期:2026-09-08 | 状态:**设计稿(D 问题待老师拍板后定稿)**
## 0. 一句话逻辑
> 会话 = 用户选定「讨论策略」→ 系统把该策略**当前数据**(当前持仓 + 全历史关联交易摘要)作为会话依据注入 → 之后人机围绕该数据复盘/分析;依据可随时更换/刷新;只读。
## 1. 概念与数据域
| 概念 | 定义 | 数据来源 |
|---|---|---|
| 策略 | settings 中的策略定义(id/name,做T、网格超市…) | settings.strategies(现有) |
| 策略当前持仓(活动行) | 该策略账本中未清仓的 holdingshares>0 活动) | SqliteStore strategy_holdingsR-018 数据域:账本为唯一权威) |
| 行情现价/涨跌 | holding code 的实时价格 | QuoteHub 内存快照(读穿透;不可得=—) |
| 关联交易记录 | 归属该策略/持仓的委托(含已清仓历史,trade_orders 归属列 + 历史库) | SqliteStore trade_orders/trade_fillsR-009/R-018 |
| 数据依据(basis) | 一次注入到会话的"策略当前数据摘要快照" | 服务端按需生成(本设计) |
**关键语义(沿用 R-018 数据域分界)**:持仓展示 = 账本(活动行);交易 = 归属账本(历史全量);行情 = 内存快照。摘要生成**只读**这些域,不写账本。
## 2. 会话级状态
策略会话不需要跨会话持久存储(设计建议,见 D-3);会话内 UI 状态:
- `basis: none | { strategyId, strategyName, injectedAt }`
- `basisState: idle | generating | done | error`
- 注入后的摘要内容随会话消息流存在(可折叠"数据依据"条目),不单独存储。
## 3. 核心流程
### 3.1 选择策略 → 注入依据(主流程)
1. 对话视图(聊天)中,用户在「讨论依据」控件里选一个策略;
2. 客户端调服务端 `strategies/:id/basis-summary`(只读)生成摘要文本(规格见 §4);
3. 摘要通过**宿主注入通道**进入当前会话上下文(技术通道调研待定,见 §6);同屏在对话流顶部呈现「数据依据」条目;
4. toast 反馈:`已载入「做T」数据依据(3 持仓 / 42 笔交易,快照 14:32:05`
5. 用户开始提问复盘/分析;模型以摘要(及会话中后续补充)为依据回答。
### 3.2 换策略
- 重开选择器选另一策略 → 再次执行 3.1(新摘要作为新的依据条目追加;chip 切换为新策略)。旧依据条目保留在历史中(模型自然以最近/明确引用的为准)。
### 3.3 刷新依据
- 已选状态下 chip 提供「刷新」:重新生成**当前时刻**摘要并注入(盘中数据变化后想拿最新)。
- 语义:每次刷新=新快照依据条目(含新快照时间),不覆盖旧条目。
### 3.4 清除依据
- 选择器提供「清除依据」:回到无依据普通会话(chip 复位为「讨论依据:未选择」);已注入的历史条目仍在消息流中,后续对话不再视为策略依据会话。
### 3.5 边界
| 场景 | 行为 |
|---|---|
| 无可选策略(未配置) | 选择器显示空态「暂无策略,请到 设置→神之一手→策略分组 添加」 |
| 会话进行中该策略被删除/改名 | chip 下次加载策略列表时按 id 对齐:找不到=显示「策略已删除」+ 可清除;改名后按 id 正常(显示新名);历史依据条目保留 |
| 策略当前持仓为空 / 无行情 | 摘要照常生成:持仓区显示"当前无持仓";现价列显示 —;交易摘要照常(历史) |
| 账本只读 | 摘要生成与注入路径无任何写操作;UI 无操作按钮(区别于数据 tab 的手动操作) |
| 未选策略的普通聊天 | 与现状完全一致,不受影响(策略会话是可选增强,不锁定会话) |
## 4. 摘要规格(服务端 `basis-summary` 输出,markdown 文本)
结构(自上而下):
1. **快照头**`【神之一手数据依据】策略:做T | 快照:2026-09-08 14:32:05 数据为只读快照,非实时`
2. **当前持仓**(活动行,逐行):code 名称|份额|可用|成本价|现价(— 缺失)|市值|浮动盈亏|持仓天数;尾部合计(N 只 / 总市值 / 总盈亏)。现价/市值缺行情时给—,不阻塞。
3. **交易摘要(该策略全历史关联委托,聚合)**:总笔数/买入累计/卖出累计(按归属 holding 聚合):
- 每 holding 一段:code 名称|状态(持有中/已清仓 清仓日)|买卖笔数|累计买入(量/额)|累计卖出(量/额)|当前份额;
- 已清仓 holding 标注清仓日期与最后动作摘要;
- 排序:持有中在前(按成本日/名称),已清仓在后(按清仓日倒序);
- **规模上限**holding 超过 20 行时按最新清仓倒序截断并注明「更多历史见 交易记录 tab」。
4. **尾注**:只读提示「以上为策略数据快照;本会话只读,不执行任何交易/账本操作」。
字段精确取数与空值规则在技术实现方案细化。
## 5. 非目标(本期明确不做)
- 宿主工作区/目录注册(原 R-019 R3,已并入 R-021);
- 账本写/交易执行、任何操作按钮;
- 按需取数工具(AI 自行调用业务接口);
- 复盘产物落盘 / 复盘管理(含 DB)——未来 T-002 方向;
- 通用视图(全部持仓/交易记录)作依据;
- 关注列表作为依据源。
## 6. 技术通道(设计假设,待调研确认)
注入的可行通道候选:① 宿主 injected-context/上下文节点(可折叠条目、非用户消息)→ 首选;② 会话 send(文本消息形态进会话)→ 兜底(呈现为一条前置依据消息)。**渲染与动作方案以调研结果为准**(本期设计保留两种形态的表达,UI 交互设计按"数据依据条目"统一描述)。
## 0.5 产品逻辑总图(2026-09-08 老师确认:画像 / 模型 / 主线 / 分期草案)
### 目标交易者画像(Q-画像,2026-09-08 确认)
- **混合交易模式的多策略分仓管理**:同一账户下并存多种交易风格的策略分组(当前:手动做T + 程序化网格超市;未来:情绪流交易风格的管理逻辑);
- 即"策略 = 分仓 + 交易风格/规则的容器";系统须能承载 手动主观 + 自动化规则 + 未来情绪流 三类玩法(彼此数据/规则/复盘口径不同)。
### 交易员工作模型(知识库归纳,作为产品逻辑基准)
- **日循环**:盘前计划 → 盘中执行/监控 → 盘后记账核对 → 复盘总结 → 明日计划;
- **策略循环**:规则制定 → 按规则执行 → 规则校验(复盘)→ 规则修订;
- **复盘闭环**:重建事实 → 归因 → 对照规则 → 提炼改进;**复盘原料 = 决策时的依据记录**(知识库共识:没有决策留痕的复盘只是猜)。
### AI 分工定位(人机合一,只读)
- **盘中 = AI 参谋台**(状态聚合 / 规则触发提醒 / 轻问答 / 决策留痕 / 人扣扳机执行),快、准、不打断;
- **盘后 = AI 复盘主持人**(自动重建事实线 → 引导人过结论 → 结论留痕),人不被 AI 下"对错"裁决;
- 决策依据记录(盘中一键留痕:理由 + 当时快照)是产品逻辑主线之一(2026-09-08 老师确认)——复盘有据的前提。
### 能力地图(现状 → 缺口)
- 已具备"事实记录层":对账单快照 / 策略账本(唯一权威)/ 交易记录+归属 / 行情快照 / 策略 configSchema(可承载规则参数);
- 缺口(按承接排序):①复盘事实线入口+可讨论会话(R-021 合并需求,本迭代)②决策依据留痕(盘中)③规则触发提醒 ④盘后自动日结/统计 ⑤复盘管理库(决策日志+复盘记录结构化存储检索)。
### 分期草案(2026-09-08 老师认可分步实现;**各 Phase 具体内容待讨论细化**)
| 阶段 | 主题 | 交付设想(草案) |
|---|---|---|
| Phase 0(迭代 17 | 复盘会话闭环 | R-021 策略会话复盘(原 R-019+R-021 合并;策略数据依据 + 粒度复盘上下文,事实线 → 会话讨论 → 结论在会话) |
| Phase 1 | 盘中辅助(雏形) | 决策依据一键留痕(理由+快照落库)+ 规则触发/偏离提醒雏形(configSchema × 行情)+ 会话内盘中快查 |
| Phase 2 | 盘后日结与统计 | 自动日结(当日各策略事实线+盈亏+异常)→ 一键入会话复盘;周期统计(轮次收益/胜率/策略健康) |
| Phase 3 | 复盘管理库 | 决策日志+复盘结论结构化沉淀/检索/关联(DB),对接目标-006;情绪流风格管理逻辑另立项 |
## 0.6 Phase 0 范围确认(2026-09-08 老师确认:就这样)
- **Phase 0 = 复盘会话闭环,范围 = R-021 单一合并需求(原 R-019 + R-0212026-09-08 老师指令合并、逻辑整合入 R-021)**;
- **复盘单元建模(A 拍板)**:引入"轮次 round"概念(holding 之下的交易周期聚合层):
- 网格超市:一次买入触发 + 对应卖出配对 = 一轮(每格触发记一轮);
- 手动做T:一次开仓 → 清仓 = 一轮;
- 支持人工合并/拆分修正(先人工可调);
- round 承接"复盘对象"的最小粒度,委托/段为 round 内明细;
- **行情口径(C 拍板)**:本期事实线 = 交易记录 + 持仓史 + 现价对照(无历史 K 线/分时);历史行情背景 Phase 3 复盘库时再评估;
- **决策日志预留(拍板)**:Phase 0 设计为"决策依据记录"留数据模型位置(时刻/理由/类别/当时快照/关联 round 或 holding),Phase 1 实现,不返工;
- **风格差异**:复盘口径按策略类型可扩展(手动/网格,未来情绪流预留策略类型维度)。
## 7. D 问题(AI 建议项,待老师拍板)
| # | 问题 | AI 建议 |
|---|---|---|
| D-1 | 注入条目的呈现形态 | 对话流顶部「数据依据」条目:默认折叠为一行(图标+策略+快照时间+行数摘要),点开看全文;不伪装成用户消息 |
| D-2 | 交易摘要聚合粒度 | 按持仓聚合(每持仓一段汇总 + 已清仓标注),不逐笔铺开(避免注入过长);如老师要"近期逐笔"可加近 N 笔小表 |
| D-3 | 依据选择是否跨刷新持久化 | 本期**会话级不持久化**(刷新需重选;历史注入条目仍在消息流),与 R-016 会话级偏好一致、不加存储;复盘管理未来再考虑 |
| D-4 | 选择控件挂载位置 | 对话视图输入框上方 accessory 行左侧(仿 DSH workspace chip 位置),仅聊天视图可见;替代方案=会话头部(与 QMT chip 并排)待老师定 |