Skip to content

多行选择从未投递进 action input:REST 无任何合法形状携带 selectedIds,console 工具栏在客户端就拦下多行(17.0.0-rc.2) #5568

Description

@yinlianghui

Part of objectstack-ai/hotcrm#508

现象

一个在列表视图上按 bulk 语义接线的 script action(hotcrm 的 mass_update_stage,opportunity 列表),在 17.0.0-rc.2 上不存在任何能把多行选择送达 action input 的派发路径input.selectedIds 在所有已知形状下都为空。

证据(hotcrm@0899b4f + @objectstack/* 17.0.0-rc.2,独立 dev server、全新种子库、admin token)

# A. 顶层 selectedIds(2 行)
POST /api/v1/actions/crm_opportunity/mass_update_stage
     {"selectedIds":["22EA…","3DD_…"],"params":{"stage":"needs_analysis"}}
→ 400 {"code":"VALIDATION_ERROR","message":"mass_update_stage: no opportunity selected"}
     (顶层键未投递进 body 的 input,action 自己的「未选中」校验命中)

# B. params.selectedIds
→ 400 "Invalid action params: Unknown action param \"selectedIds\" — not declared on this action"
     (新参数校验器按声明拒绝,选择集不属于 declared params——它本该走 input,而 input 收不到)

# C. Console 工具栏,选中 2 行后填参提交
→ 客户端红 toast「This action runs on a single record — select exactly one row.」,零网络请求
     (选择集根本不出客户端)

每次尝试后 re-GET 记录:stage 保持不变。失败均为显式 400 / 显式 toast,rc.0 时代的假成功路径已不存在(那半已修,好)。

对照组:单行 {"recordId":…,"params":{…}} 派发到达服务器并执行到 action body(hotcrm 侧 body 内另有一个与本单无关的签名缺陷,hotcrm 自修)。即 recordId 通道是通的,缺的只是多行选择这一通道。

期望

以 bulk 语义接线的 action 至少有一条有文档的派发形状能把当前选择集送达 action input(例如 input.selectedIds):REST 一条 + console 选择栏/工具栏一条。

关联

  • hotcrm 侧的选择栏 bulk 按钮在 rc.0 假成功时代被 app 侧摘除(hotcrm#588);平台交付多选投递后,hotcrm 会恢复 opportunity.view.ts 的 bulkActions 一行并以「选择栏 POST 携带 selectedIds」为验收条件(记录在 hotcrm#508)。
  • 三轮 rc.2 复核证据(API 全形状 + 浏览器走查 + 截图/抓包文件)见 hotcrm#508 的 2026-08-05 评论。

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions