5.8 KiB
5.8 KiB
迭代 17 UI 交互设计:策略会话(讨论依据控件)
依据:R-021(合并原 R-019+R-021,已定稿)+ 产品逻辑设计(同迭代)| 日期:2026-09-08 | 状态:设计稿(D 问题待拍板) 视觉基线:UI约束-004(--dsw-* token)/ UI约束-001(头部 chip 形态)/ 现有 QmtConnectionChip 交互模式;复用 Toast、外点关闭、RPC(useRpc) 机制。
1. 交互总览(一句话)
对话视图输入区上方有一枚**「讨论依据」chip**(仿 DSH workspace chip:未选=「讨论依据:请选择 ▾」;已选=「依据:做T ▾」+刷新);选择策略 → 服务端生成数据摘要 → 注入并在对话流顶部出现一条数据依据条目,之后即可基于该策略数据讨论。
2. 控件布局(示意)
┌─ 对话视图 ──────────────────────────────┐
│ …对话消息流… │
│ [数据依据条 ▾ 做T · 快照 14:32 · 3仓/42笔] ← 选后注入显示(可展开全文)
│ ─────────────────────────────────────── │
│ [依据:做T ▾] [↻] │ ← accessory 行(输入框上方左侧)
│ ┌ 输入框(composer)────────────────┐ │
│ └────────────────────────────────────┘ │
└─────────────────────────────────────────┘
3. chip 状态机
| 状态 | 外观 | 交互 |
|---|---|---|
| 未加载 | 不显示(静默,与 QMT chip 一致) | — |
| 未选择 | 讨论依据:请选择 ▾(tertiary 色) |
点开 → 策略下拉(空态见 §5) |
| 生成中 | 依据:做T …(opacity .6,右侧小 spinner/省略) |
不可再点(防抖) |
| 已选择 | 依据:做T ▾ + 右侧「↻ 刷新」小钮 |
点 chip 换策略;点 ↻ 刷新注入 |
| 策略已删除 | 依据:做T(已删除)▾(warning 色) |
下拉选其它/清除 |
| 错误 | toast 错误 + chip 保留原态 | 可重试 |
4. 交互细节
- 选择策略(F1 主流程)
- 点击 chip → 下拉菜单(与 QmtConnectionChip 同一套 Menu 视觉):
- 标题区「以哪个策略讨论?」;
- 策略项:每项 = 策略名 + 副行「当前 N 只持仓 · 最近交易 …」;
- 底部「清除依据」(仅已选时出现);当前依据项前打 ✓;
- 点击某策略 → chip 进入生成中 → 服务端取摘要 → 注入会话 + 对话流顶部出现依据条目 → toast.success(
已载入「做T」数据依据:3 持仓 / 42 笔交易(快照 14:32:05))。
- 点击 chip → 下拉菜单(与 QmtConnectionChip 同一套 Menu 视觉):
- 注入条目(D-1 建议形态)
- 视觉:淡色卡片/引用样式(bg-layer 弱化 + 左侧竖条 accent),标题行「⛭ 神之一手数据依据」+
做T · 快照 2026-09-08 14:32:05,行 2 摘要「当前持仓 3 只 / 历史交易 42 笔(含已清仓)」; - 默认折叠,点击展开全文(markdown 摘要内容);
- 多依据/多刷新并存时按时间堆叠,最近一次在消息流最新处;不伪装用户/助手消息(若通道仅支持文本消息,则呈现为最顶部一段普通消息文本——实现以调研为准)。
- 视觉:淡色卡片/引用样式(bg-layer 弱化 + 左侧竖条 accent),标题行「⛭ 神之一手数据依据」+
- 换策略:chip 下拉选另一策略 → 同"生成中→注入"流程;chip 文案与已注入条目更新。
- 刷新依据:点 chip 右侧 ↻ → 生成新快照并注入新条目(含新快照时间);toast「已更新依据(快照 14:35:10)」。不会删除旧条目。
- 清除依据:下拉「清除依据」→ chip 复位「请选择」;不清除历史注入条目。
- 键盘/可及:Esc 或外点关闭下拉;chip 提供 title 提示「以某个策略的数据为依据开始讨论(只读)」。
- 只读表达:选择器下拉仅含策略与其状态信息,无任何写/操作入口;文案提示"会话只读,不执行交易操作"(依赖尾注与依据条目样式即可,不打断输入)。
5. 空态与边界 UI
| 场景 | UI |
|---|---|
| 无策略可配置 | 下拉空态:「暂无策略,请到 设置 → 神之一手 → 策略分组 添加」+「去设置」快捷键位 |
| 策略持仓为空 | 摘要条目持仓区显示「当前无持仓」;交易摘要照常 |
| 行情缺失 | 摘要中现价列显示 —,条目副行提示「部分行情缺失(--)」,不阻塞 |
| 生成失败/服务不可用 | toast.error(原因);chip 回原态可重试 |
| 已在数据 tab(.odl-root) | 不显示该控件(现状 CSS 隐藏 composer 的区域一致,仅聊天视图展示) |
6. 组件落点(初拟,技术方案细化)
- 客户端新组件
StrategyBasisChip.jsx(chip + 下拉 + 刷新),复刻 QmtConnectionChip 的结构(rootRef/外点关闭/useRpc/useToast); - 注入条目组件
DataBasisCard.jsx(折叠/展开 markdown 展示); - 服务端新只读端点(
one-divine-lot/strategies/basis-summary)生成摘要(产品逻辑 §4 规格); - 挂载位置:D-4(对话 accessory vs 会话头部)拍板后确定 slot 与可见性策略。
7. D 问题(AI 建议项,与产品逻辑设计共享,待老师拍板)
| # | 问题 | AI 建议 |
|---|---|---|
| D-1 | 注入条目呈现形态 | 折叠「数据依据」卡片,点开全文(见 §4.2) |
| D-2 | 交易摘要聚合粒度 | 按持仓聚合 + 已清仓标注;如需近期逐笔再加近 N 笔 |
| D-3 | 依据跨刷新持久化 | 会话级不持久化(重开重选) |
| D-4 | chip 位置 | 对话视图输入框上方 accessory 行左侧(仿 workspace chip 位置);备选=会话头部与 QMT chip 并排 |