Files
T

5.0 KiB
Raw Blame History

收紧选股执行状态交互与页面布局

Goal

让选股策略页面把“未完成评估”从主工作区移出,改成由执行状态触发的右侧抽屉;抽屉内用紧凑表格查看明细。同时收紧页面各模块的内外间距,让桌面工作台填满可用高度,移动端保持可操作性。

本任务只修改前端交互和布局,不新增或修改后端接口。现有 API 返回的 SelectionResults.failures 作为抽屉数据源,接口扩展留给后续业务需求迭代。

Confirmed Facts

  • 当前 selection-results-page.tsx 在 ResultState 下方直接渲染 FailureList,标题为“未完成评估”,每条记录是独立卡片(约第 458–491 行)。
  • 当前 ResultMetrics 已展示“执行状态”,但它只是 Badge,不承担交互(约第 290–315 行)。
  • 当前选股结果工作台使用 min-h-[420px] shrink-0 包裹,导致桌面端数据面板不能填满页面剩余高度(约第 430–441 行)。
  • 当前项目已有基于 Base UI Dialog 的可访问弹层 primitive,可复用其焦点管理、Escape 和遮罩行为;尚无 Drawer/Sheet primitive。
  • 当前 SelectionResults 已包含 failures,字段为股票代码、名称、状态和原因;本任务不需要后端改契约。
  • 当前分页、筛选和主从详情已经存在,本任务保留其行为。

Requirements

R1. 执行状态抽屉

  • 主页面不再直接渲染“未完成评估”卡片或明细列表。
  • “执行状态”成为可操作入口;点击后从右侧打开执行状态抽屉,并把当前结果的未完成评估列表传入抽屉。
  • 抽屉标题和说明要明确表达当前策略、目标交易日、执行状态及未完成数量。
  • 桌面端抽屉宽度固定为 600px;视口小于该宽度时退化为不产生水平溢出的全宽/近全宽布局。
  • 抽屉支持关闭按钮、遮罩点击、Escape 和焦点返回;打开后焦点进入抽屉。
  • 没有未完成评估时仍可查看执行状态,抽屉显示空表状态,不创建无意义的空卡片。

R2. 未完成评估表格

  • 抽屉中的明细必须使用语义化 table 组件,不使用逐条卡片替代。
  • 表格至少展示:股票名称、股票代码、评估状态、失败原因。
  • 表头、单元格和行间距使用紧凑密度;长原因可换行,不撑破抽屉宽度。
  • 表格提供 caption/可访问名称;无数据时显示可读的空状态。
  • 表格属于 selection feature,不把策略字段或业务格式化下沉到 shared/ui。

R3. 页面紧凑布局

  • 收紧 PageLayout 的页面 gutter、操作区/指标区内边距和纵向间距;页面内容在桌面端尽量使用主区域宽度。
  • 收紧选股页执行工具栏、指标区、筛选栏、详情面板、分页和各状态卡的 padding/margin/gap。
  • 修复 bounded workspace 的连续高度链:操作区、指标区、筛选栏、分页不参与数据滚动,主表格数据区占满剩余高度并独立滚动。
  • 保留移动端至少 44px 的主要触控命中区域;移动端改为自然页面滚动,不引入嵌套水平滚动。
  • 不改变现有路由、筛选 URL 状态、分页行为、策略执行/轮询行为和主从选中行为。

R4. 页面状态边界

  • 请求加载、请求错误、无结果和执行失败等请求级状态仍可在主页面就地表达。
  • 仅将“未完成评估”的结果明细从主页面迁移至抽屉,不把后端接口缺失伪装成前端数据。

Out of Scope

  • 不新增或修改 FastAPI endpoint、Pydantic response model、数据库表或策略执行逻辑。
  • 不实现行情数据、同步任务、全局搜索、个股研究详情或新的置信度接口。
  • 不改变 SelectionResults API 的字段含义,不为“信号置信度”虚构数据。
  • 不重写原型 HTML 的交互状态;原型继续作为视觉基线,正式页面以本任务的紧凑布局为准。

Acceptance Criteria

  • 有失败结果时,主页面不出现“未完成评估”明细卡片;执行状态入口可见且可操作。
  • 点击执行状态后,右侧打开宽度为 600px 的抽屉;抽屉内存在可访问的 table,并正确展示所有失败记录。
  • 抽屉可以通过关闭按钮、遮罩、Escape 关闭,关闭后焦点返回执行状态入口。
  • 无失败记录时,执行状态入口仍能打开抽屉,表格显示空状态。
  • 1440×900 桌面视口下,选股工作台的数据面板填满操作区/指标区后的剩余高度,分页固定在面板底部,只有数据行区域滚动。
  • 390×844 与 375×812 移动视口下无页面级水平溢出,底部导航不遮挡可滚动内容,主要控件命中区域不低于 44px。
  • 前端格式、lint、类型检查、单元测试和构建通过;浏览器验证覆盖抽屉交互、紧凑布局和桌面/移动视口。

Open Questions

无。抽屉触发入口采用现有“执行状态”指标;本次不扩展后端接口。