Skip to content

[downstream/hotcrm] Migrate approval approvers from { type: 'role' } to { type: 'position' } (ADR-0090 D3) #2777

Description

@os-zhuang

#2738 / #2767 之后,审批的正确路由方式已经存在,但下游应用(hotcrm 等)存量元数据还没迁移——{ type: 'role', value: 'sales_manager' } 仍然静默匹配不到任何人(role = better-auth 成员级别 owner/admin/member,不是岗位)。

待办(在 hotcrm 等下游仓库执行,等含 #2738/#2767 的版本发布后)

  • 升级 @objectstack/spec / @objectstack/plugin-approvals / @objectstack/lint 到含 position approver type 的版本
  • 全局排查审批 flow:{ type: 'role', value: '<非 owner/admin/member/guest>' } → 改为 { type: 'position', value: '<岗位名>' };escalation.escalateTo 同样按岗位语义复查(feat(approvals): SLA escalateTo resolves positions via sys_user_position (ADR-0090 D3 follow-up) #2767)
  • 确认租户内 sys_user_position 有对应岗位的分配行——岗位没人时会回退成 position:<名> 字面量,审批照样卡住
  • os lint:approval-role-not-membership-tier / approval-approver-type-unknown / approval-escalation-reassign-no-target 三条规则会把漏网项直接列出并给出 fix-it
  • 端到端验证一条审批流(开请求 → pending_approvers 是真实 user id → 决策/升级)

完成后

回到 framework 把 approval-role-not-membership-tier 从 warning 升为 error(见配套 issue)。

Refs: #2738, #2767, ADR-0090 D3, ADR-0057 D4。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Fields

    No fields configured for Task.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions