Files
2026-08-09 12:34:02 +08:00

5.1 KiB
Raw Permalink Blame History

补充策略执行结果查询接口和前端页面

Goal

为已完成的知行 B1 历史选股逻辑提供可使用的查询入口,让研究人员能够在 Web 页面选择目标交易日并查看策略命中的股票及子信号结果。

Background and confirmed facts

  • 上一个任务 08-08-migrate-zhixing-b1 已完成 zhixing_b1 策略领域逻辑、历史 qfq 行情读取适配器和单只股票评估用例。
  • 当前领域入口是 EvaluateZhixingB1.execute(ts_code, target_trade_date),返回 SelectionEvaluation,状态包括 selected、no_signal、insufficient_history、 missing_target_bar 和 data_error。
  • SelectionSignal 已包含股票代码、名称、目标交易日、策略标识、七种独立子信号 分类、收盘价和可序列化详情;稳定身份为 (ts_code, target_trade_date, strategy, category)。
  • 当前没有选股结果数据库表、结果持久化、全市场批量执行用例或 selection HTTP 路由;selection presentation 包仍为空。
  • 后端 HTTP 通过 /api/v1 统一挂载,稳定响应使用 Pydantic 模型;前端按 feature 组织 API 类型、Query hook 和页面,并通过同源 /api/v1/... 请求后端。
  • 当前前端首页侧栏的“选股策略”入口仍是禁用按钮,路由树只有 / 首页。

Product decisions

  • 结果按每日策略批次持久化;页面查询已保存的策略执行批次,不在查询请求中重新 计算策略。
  • 策略执行通过 HTTP 触发,不新增 CLI 作为本任务的主要入口。
  • 当用户重复执行或重试失败批次时,服务端必须先清空指定目标交易日、指定策略的 旧结果,再执行一次;前端在每次重执行前弹窗确认,确认后才发起 HTTP 请求。
  • 执行接口需要能区分首次执行、已有结果的重复执行和执行中的冲突,不能因重复点击 产生重复信号或多个互相冲突的当前结果。
  • HTTP 采用异步批次模式:POST 只创建/清空并启动批次,返回 202 和 run_id; 前端通过 GET 轮询批次状态,完成后展示持久化结果。全股票池计算不得要求浏览器 长时间保持原始执行请求。

Requirements

  • 策略执行结果必须按目标交易日和策略批次持久化,并可被后续 HTTP 查询读取。
  • zhixing_b1 的多种独立子信号必须分别保存,不能因同一股票同日多分类而覆盖或 合并;结果身份继续遵循 (ts_code, target_trade_date, strategy, category)。
  • 查询页面展示已保存批次的执行状态、目标交易日、参与数量、命中数量以及股票和 子信号明细;查询失败、执行失败和无命中必须有可区分的用户可见状态。
  • 同一策略同一目标交易日重复执行必须具备幂等语义,不能产生重复信号或多个互相 冲突的“最新结果”;按用户确认的重跑规则,重跑前清空该日该策略旧结果。
  • 结果应关联产生它所依赖的市场数据同步批次,并保留实际参与股票数和数据覆盖率, 以便判断结果是否完整。
  • HTTP 应提供策略执行触发接口,支持指定目标交易日和策略;首次执行、重跑确认、 执行中冲突和失败重试应有明确响应语义。
  • HTTP 响应使用稳定的 Pydantic 契约;前端使用 feature API 类型、React Query 和 独立的策略结果页面,不在页面中直接发起 fetch。

Acceptance Criteria

  • 已执行的 zhixing_b1 批次及其信号结果可以写入 PostgreSQL,并能通过稳定 唯一身份幂等重跑;重跑不会残留上一次执行的信号。
  • HTTP 可以查询最新批次和/或指定目标交易日的持久化结果,响应包含批次状态、 覆盖率、命中统计和全部独立子信号明细。
  • HTTP 可以触发指定目标交易日和策略的执行;已有结果重跑和失败重试遵循清空后 重算规则,并对执行中的重复请求返回可识别冲突。
  • 前端“选股策略”入口可进入结果页面,能够查看加载中、无数据、执行失败、查询 失败、无命中和正常结果状态。
  • 前端每次重跑/失败重试都会先展示确认弹窗;取消不会发起执行请求,确认后能显示 执行中状态并刷新持久化结果。
  • 执行触发接口返回异步批次标识,前端可通过状态查询感知运行中、成功、无命中和 失败,并在结束后读取同一批次结果。
  • 结果页面的股票明细能区分同一股票同日命中的多个子信号,并展示目标交易日、 股票代码/名称、收盘价及关键详情。
  • 后端迁移、应用用例、HTTP 契约和前端页面测试覆盖成功、重复执行、无结果和 失败场景。

Out of scope

  • 不迁移其他选股策略,不改变 zhixing_b1 公式语义或市场数据同步规则。
  • 不实现收益率、持仓、交易撮合或实盘交易能力;本任务展示的是选股信号结果。
  • 不把执行调度扩展为独立任务队列或跨进程工作流;本期只提供 HTTP 触发和项目现有 运行边界内的异步批次执行机制。

Open questions

无。