Files
one_divine_lot/docs/04-迭代记录/17-策略会话/UI交互设计.md
T

76 lines
5.8 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 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. 交互细节
1. **选择策略(F1 主流程)**
- 点击 chip → 下拉菜单(与 QmtConnectionChip 同一套 Menu 视觉):
- 标题区「以哪个策略讨论?」;
- 策略项:每项 = 策略名 + 副行「当前 N 只持仓 · 最近交易 …」;
- 底部「清除依据」(仅已选时出现);当前依据项前打 ✓;
- 点击某策略 → chip 进入生成中 → 服务端取摘要 → 注入会话 + 对话流顶部出现依据条目 → toast.success(`已载入「做T」数据依据:3 持仓 / 42 笔交易(快照 14:32:05`)。
2. **注入条目(D-1 建议形态)**
- 视觉:淡色卡片/引用样式(bg-layer 弱化 + 左侧竖条 accent),标题行「⛭ 神之一手数据依据」+ `做T · 快照 2026-09-08 14:32:05`,行 2 摘要「当前持仓 3 只 / 历史交易 42 笔(含已清仓)」;
- 默认折叠,点击展开全文(markdown 摘要内容);
- 多依据/多刷新并存时按时间堆叠,最近一次在消息流最新处;不伪装用户/助手消息(若通道仅支持文本消息,则呈现为最顶部一段普通消息文本——实现以调研为准)。
3. **换策略**:chip 下拉选另一策略 → 同"生成中→注入"流程;chip 文案与已注入条目更新。
4. **刷新依据**:点 chip 右侧 ↻ → 生成新快照并注入新条目(含新快照时间);toast「已更新依据(快照 14:35:10)」。不会删除旧条目。
5. **清除依据**:下拉「清除依据」→ chip 复位「请选择」;不清除历史注入条目。
6. **键盘/可及**:Esc 或外点关闭下拉;chip 提供 title 提示「以某个策略的数据为依据开始讨论(只读)」。
7. **只读表达**:选择器下拉仅含策略与其状态信息,无任何写/操作入口;文案提示"会话只读,不执行交易操作"(依赖尾注与依据条目样式即可,不打断输入)。
## 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 并排 |