131 lines
11 KiB
Markdown
131 lines
11 KiB
Markdown
# 迭代 17 产品逻辑设计:策略会话
|
||
|
||
> 依据:R-021(合并原 R-019+R-021,已定稿)| 日期:2026-09-08 | 状态:**设计稿(D 问题待老师拍板后定稿)**
|
||
|
||
## 0. 一句话逻辑
|
||
|
||
> 会话 = 用户选定「讨论策略」→ 系统把该策略**当前数据**(当前持仓 + 全历史关联交易摘要)作为会话依据注入 → 之后人机围绕该数据复盘/分析;依据可随时更换/刷新;只读。
|
||
|
||
## 1. 概念与数据域
|
||
|
||
| 概念 | 定义 | 数据来源 |
|
||
|---|---|---|
|
||
| 策略 | settings 中的策略定义(id/name,做T、网格超市…) | settings.strategies(现有) |
|
||
| 策略当前持仓(活动行) | 该策略账本中未清仓的 holding(shares>0 活动) | SqliteStore strategy_holdings(R-018 数据域:账本为唯一权威) |
|
||
| 行情现价/涨跌 | holding code 的实时价格 | QuoteHub 内存快照(读穿透;不可得=—) |
|
||
| 关联交易记录 | 归属该策略/持仓的委托(含已清仓历史,trade_orders 归属列 + 历史库) | SqliteStore trade_orders/trade_fills(R-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-021,2026-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 并排)待老师定 | |