You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
Repository navigation
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
Activity
fix(detail): the approval band honors the node's `lockRecord` instead…
baozhoutao commentedon Jul 28, 2026
定位完成,修复已提 PR。补充两条查证结论,其中一条要更正 issue 里的定位线索。
一、「band 可以从同一来源读出 lockRecord,不需要额外接口」—— 这条不成立
node_config_json里确实有lockRecord,但它到不了客户端。framework 的rowFromRequest(packages/plugins/plugin-approvals/src/approval-service.ts:236)是一份显式白名单投影:它解析了node_config_json,只从里面挑__flowLabel/__nodeLabel/__round/escalation.timeoutHours/decisionOutputs出来,lockRecord一个字都没往外发;ApprovalRequestRow上也没有其它字段承载锁信息。所以
GET /api/v1/approvals/requests的消费方能拿到的最强事实就是「存在一条 pending 请求」,Console 单独改修不了。修复跨两个仓库,framework 先行。二、是 bug,且是「从来没接出来」,不是回归
lockRecord是 spec 里正式的节点配置项(ApprovalNodeConfigSchema,z.boolean().default(true)),服务端严格执行 —— 平台自己定义、自己执行的开关,UI 不读,属于平台内部行为不一致。git 追溯确认不是回归:objectui 的
approvalLocked由 #2572 引入时就是「approval_status或有 pending request」的二值判断,#2618 只是补了第二个来源,从未有过节点粒度;framework 侧的行投影也从第一版起就没带过锁信号。这个能力自诞生起就是 server-only。三、影响面比 issue 描述的更大
issue 只提了 band 文案和撤回按钮,但同一个信号还掐着
canEdit(RecordDetailView.tsx):所以
lockRecord: false的节点上行内编辑被 Console 整个禁掉 —— 铅笔不出现、enter()空转。你们是从独立的「编辑」表单路由进去才存成功的,那条路没接这个门。也就是说「审批人可以在审批时补充内容」这个能力,比 issue 里描述的更彻底地不存在。修复
lockRecord,客户端只能假定「有 pending 就是锁死」 objectstack#3814 / PR feat(approvals): expose the pending node'slockRecordpolicy on the request row (#3814, objectui#2902) objectstack#3815 ——ApprovalRequestRow增加lock_record,取自钩子读的同一份快照、同一个!== false默认,标志与规则不可能漂移lockRecordinstead of assuming every approval locks (#2902) #2906 —— 审批状态拆成approvalPending(有审批在跑,管 band + 撤回)与locked(还禁编辑)两个信号;band 两态(琥珀锁「审批中已锁定」/ 天蓝钟「审批中 · 可编辑」);撤回移出锁分支;老后端不返回字段时 fail closed 保持现状两条建议路径都做了:既按节点区分是否渲染锁定 band,也让文案区分两种状态,这样对老后端也能优雅降级。
真机实测
showcase 上推了一条真实审批走完两个节点(Manager Review
lockRecord:false→ Executive ReviewlockRecord:true):lock_record: false→ band「审批中 · 可编辑」,撤回按钮在,编辑可用lock_record: true)→ band 当场翻成「审批中已锁定」正是 issue 里那个「两个节点长得一模一样」的场景,现在两态可区分了。
baozhoutao commentedon Jul 28, 2026
已与另一条相关问题合并到单条 issue,便于一起看:objectstack-ai/objectstack#3794
合并原因:这条(
lockRecord: false的节点仍显示「审批中已锁定」band)与「readonlyWhen字段被静默丢弃却返回 200」是同一个用户旅程里两个相反方向的失真 —— 能改的说锁了、改不了的说成功了,分开看都不完整。本条的修复落点仍在 objectui
packages/plugin-detail,详见合并后 issue 的「问题一」小节。fix(detail): the approval band honors the node's `lockRecord` instead…
Merge origin/main into fix/issue-3794-approval-band