背景(来源:调度员 2026-09-04 用销售经理账号在最新 main 上的填报走查;维护者拍板立单)
一张 3 行填报单从登录到提交实测 11 次点击、5 次输入、3 次跳页,其中真正填数只有 3 击,其余 8 击是导航与确认。三条路径实测:
| 路径 |
结果 |
| ① 填报单 → 打开本部门单 → 「相关」页签的填报明细 |
死路:明细列表只显示指标方向、计分方式、来源下达等配置列,没有目标、权重、实际值、得分,也不能行内改 |
| ② 同上,行菜单「编辑」弹表单 |
报错「您没有权限保存这条记录」:表单把只读的得分字段一并提交,被字段权限拒绝(平台问题 objectstack-ai/objectstack#15259);接口只发实际值是成功的 |
| ③ 菜单「填报明细」→ 行内编辑 → 全部保存 → 回「填报单」→ 行菜单「提交填报」 |
通,11 击 |
目标:填报人打开自己那张填报单,在一屏内填完、看分、提交;把 3 行单的点击数压到 7 击以内、跳页 1 次;堵住两条死路。
范围(全部是视图/应用元数据改动,不碰计分与状态机)
- 填报单表单嵌可编辑明细网格(核心):利用平台表单的
subforms(主从子表,@objectstack/spec FormViewSchema.subforms:子对象 kpi_entry_line,外键 sheet,列只放 指标名称、计量单位、目标值、权重(%)、实际值、完成率(%)、得分率(%)、最终得分、备注,其中仅 实际值、备注 可编辑,其余列只读)。开工第一步先做可行性验证:以部门填报人员账号在主从表单里改一格实际值并保存,确认 (a) 不会因表单提交只读字段撞上 #15259 的 403,(b) 保存后 entry-line.hook 仍逐行触发即时算分,(c) 不允许在子表里新增/删除明细行(明细只由发布生成)。任一条不成立即停手,把现象与平台能力缺口写进「需拍板事项」,改走备选方案 B(见下)。
- 备选 B(子表不可行时):在填报单详情「相关」页签的填报明细列表上配置列(指标名称、目标值、权重、实际值、完成率、得分率、最终得分)并开行内编辑(若平台相关列表支持
inlineEdit),做不到再如实记录。
- 工作台改成待办入口:
src/pages/index.ts 的 kpi_home 页增加「我的填报单」区块(平台页面组件能力允许时:按当前用户可见的填报单列表,或至少一个跳到「填报单」列表「填报中」页签的按钮),把说明文字收成一行。若页面组件不支持按用户过滤的记录列表,退为按钮 + 一句话,如实记录。
- 填报明细列表瘦身:
src/views/index.ts 的 EntryLineViews.list 与 unfilled 列改为 指标名称、计量单位、目标值、权重(%)、实际值、完成率(%)、得分率(%)、最终得分、已调整、备注;所属填报单、指标方向、计分方式、调整类型、调整后得分从列表列移除(记录页仍可见)。
- 堵死路:填报单详情「相关」页签的填报明细列表列按第 3 条同样配置;填报明细的编辑表单(
EntryLineViews.formViews.form)去掉「计分」分区里的只读字段(完成率、得分率、指标得分、调整后得分、已调整、调整类型、最终得分、最近调整),只留 实际值、备注 可编辑,其余业务字段标 readonly;部门填报人员权限集中 kpi_entry_line.allowCreate 改为 false(明细只由发布生成;导入路径保留)。
- 文案:填报明细编辑表单与网格保存的拒绝提示沿用 hook 三段式;不处理
KpiError: 前缀(平台 toast 拼接,已上报)。
不做
不改 src/lib/scoring.ts、src/hooks/sheet.hook.ts、src/hooks/entry-line.hook.ts 的规则;不新建自定义页面(kind: 'react'/'html');不改流程按钮;不改手册。
方案分级与放行(调度员)
改已有视图与权限集一处(allowCreate)= 中风险。放行方向 = 上述范围;开发子 agent 开工前在本单评论输出「需求理解 + 子表可行性验证结果 + 每处视图改动的前后对照」,验证通过即开工;验证不通过按备选 B 走并写进需拍板事项。方案要点、符合度清单、测试报告一律挂本单评论。
验收标准
- 部门填报人员(软件档案的 sales.manager@kpi.demo 或 rd.engineer@kpi.demo)从登录到提交一张 3 行填报单:≤ 7 次点击、≤ 1 次页面跳转(登录后从工作台入口进入本部门填报单,在同一页面填 3 格、保存、提交、确认),测试报告逐步列出点击数。
- 保存后 3 行的完成率、得分率、最终得分即时出现在同一页面,数值与
src/lib/scoring.ts 口径一致(与直接走填报明细列表路径的结果相同)。
- 填报单详情「相关」页签的填报明细列表能看到目标、权重、实际值、得分;填报明细编辑表单对填报人员保存不再报权限错误(只提交实际值/备注)。
- 填报人员在填报明细列表与子表里都看不到「新建」;已提交/已归档的单在新入口改数仍被 hook 拦下(拦截提示截图)。
- 管理员、人力审核在填报单表单里的原有字段与动作不受影响;
scripts/software-flow.mjs 54/54、scripts/e2e-flow.mjs 全 PASS;pnpm verify 绿(含 i18n 门禁,新增 label 须 pnpm i18n:extract 重新生成)。
- 测试报告(前后点击数对照 + 岗位账号截图)与需求符合度清单挂本单评论,截图走
acceptance-evidence 40 位 SHA 图链。
测试计划草稿
T1 子表可行性(改一格保存 200、即时算分、无新增/删除入口) | T2 工作台入口 → 本部门填报单 1 跳 | T3 3 行填完保存出分 | T4 提交 + 确认,状态推进 | T5 全程点击计数 ≤ 7 | T6 相关页签列 & 编辑表单不再 403 | T7 已提交/已归档改数被拦 | T8 管理员/人力审核表单不受影响 | T9 两脚本全 PASS + verify
依赖与风险
- 依赖:无(基线 main f20269f)。
- 风险:平台主从子表可能同样把只读列一并提交(#15259 同源)→ 已设可行性验证与备选 B;页面组件可能不支持按用户过滤的记录列表 → 退为按钮入口。
背景(来源:调度员 2026-09-04 用销售经理账号在最新 main 上的填报走查;维护者拍板立单)
一张 3 行填报单从登录到提交实测 11 次点击、5 次输入、3 次跳页,其中真正填数只有 3 击,其余 8 击是导航与确认。三条路径实测:
目标:填报人打开自己那张填报单,在一屏内填完、看分、提交;把 3 行单的点击数压到 7 击以内、跳页 1 次;堵住两条死路。
范围(全部是视图/应用元数据改动,不碰计分与状态机)
subforms(主从子表,@objectstack/specFormViewSchema.subforms:子对象kpi_entry_line,外键sheet,列只放 指标名称、计量单位、目标值、权重(%)、实际值、完成率(%)、得分率(%)、最终得分、备注,其中仅 实际值、备注 可编辑,其余列只读)。开工第一步先做可行性验证:以部门填报人员账号在主从表单里改一格实际值并保存,确认 (a) 不会因表单提交只读字段撞上 #15259 的 403,(b) 保存后entry-line.hook仍逐行触发即时算分,(c) 不允许在子表里新增/删除明细行(明细只由发布生成)。任一条不成立即停手,把现象与平台能力缺口写进「需拍板事项」,改走备选方案 B(见下)。inlineEdit),做不到再如实记录。src/pages/index.ts的kpi_home页增加「我的填报单」区块(平台页面组件能力允许时:按当前用户可见的填报单列表,或至少一个跳到「填报单」列表「填报中」页签的按钮),把说明文字收成一行。若页面组件不支持按用户过滤的记录列表,退为按钮 + 一句话,如实记录。src/views/index.ts的EntryLineViews.list与unfilled列改为 指标名称、计量单位、目标值、权重(%)、实际值、完成率(%)、得分率(%)、最终得分、已调整、备注;所属填报单、指标方向、计分方式、调整类型、调整后得分从列表列移除(记录页仍可见)。EntryLineViews.formViews.form)去掉「计分」分区里的只读字段(完成率、得分率、指标得分、调整后得分、已调整、调整类型、最终得分、最近调整),只留 实际值、备注 可编辑,其余业务字段标readonly;部门填报人员权限集中kpi_entry_line.allowCreate改为 false(明细只由发布生成;导入路径保留)。KpiError:前缀(平台 toast 拼接,已上报)。不做
不改
src/lib/scoring.ts、src/hooks/sheet.hook.ts、src/hooks/entry-line.hook.ts的规则;不新建自定义页面(kind: 'react'/'html');不改流程按钮;不改手册。方案分级与放行(调度员)
改已有视图与权限集一处(allowCreate)= 中风险。放行方向 = 上述范围;开发子 agent 开工前在本单评论输出「需求理解 + 子表可行性验证结果 + 每处视图改动的前后对照」,验证通过即开工;验证不通过按备选 B 走并写进需拍板事项。方案要点、符合度清单、测试报告一律挂本单评论。
验收标准
src/lib/scoring.ts口径一致(与直接走填报明细列表路径的结果相同)。scripts/software-flow.mjs54/54、scripts/e2e-flow.mjs全 PASS;pnpm verify绿(含 i18n 门禁,新增 label 须pnpm i18n:extract重新生成)。acceptance-evidence40 位 SHA 图链。测试计划草稿
T1 子表可行性(改一格保存 200、即时算分、无新增/删除入口) | T2 工作台入口 → 本部门填报单 1 跳 | T3 3 行填完保存出分 | T4 提交 + 确认,状态推进 | T5 全程点击计数 ≤ 7 | T6 相关页签列 & 编辑表单不再 403 | T7 已提交/已归档改数被拦 | T8 管理员/人力审核表单不受影响 | T9 两脚本全 PASS + verify
依赖与风险