# 迭代 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 并排 |