Skip to content

[P3] approvals: OOO auto-skip + self-service delegation (community core) #1322

Description

@xuyushun441-sys

来源:docs/PLATFORM_GAPS_FROM_TEMPLATES.md 第 20 条(与 #5 强关联)。

范围调整(2026-07): 原 issue 混装了 delegation / OOO / proxy。经代码盘点(见下),委派的权威原语已在开源核心(ADR-0091 职务代理 + ApprovalService.reassign),而治理 / 合规 / 代办访问(act-as)属企业版,已拆分至 objectstack-ai/cloud#855。本 issue 收敛为社区版必备的“审批不冻结”连续性底线。

现象

审批人是具体的人,休假 / 出差 / 离岗会让流程冻结、客户 SLA 跳水。

平台现状(已在 OSS 核心)

  • 审批人解析中枢 ApprovalService.expandApprovers()(plugin-approvals/src/approval-service.ts:300)
  • 任务级转交 reassign()(plugin-approvals/src/approval-service.ts:1036),已带审计 + 通知
  • 职位限时委派(ADR-0091 职务代理):delegatable 职位 + sys_user_position.{delegated_from, valid_from, valid_until, reason},isGrantActive() 解析时过滤;explain-engine 已能显示 “via delegation from A until Y”
  • 审计(sys_approval_action)+ 通知(service-messaging)基础设施

建议范围(社区版)

M1 · OOO 自动跳过 + 候补

  • 新增自助 OOO / 委派状态对象(仿 sys_user_position,独立对象,valid_from / valid_until + delegate_to + reason + trackHistory),挂在锁定的 sys_user 标量上
  • expandApprovers 解析出具体 user 后,命中生效中 OOO → 替换 / 追加候补人;覆盖 type: user / manager / field(职位路径 ADR-0091 已覆盖)
  • 复用 core/src/security/grant-validity.tsisGrantActive() 做时间窗判定

M2 · 临时委派(单任务)

  • 引擎能力已在(reassign);补“委派人自助声明”语义 + 前端按钮(objectui)

M4 · 审计 + 通知(布线)

  • 替换 / 委派发生时写 sys_approval_action(如 action=ooo_substitute,记 A → B + reason),保证社区版“谁替了谁、为什么”可追溯;通知双方

语义注记:expandApprovers请求开启时快照具体 user id,故“请求开启后才生效的 OOO”不追溯(职位 / tier 路径实时重算)——需显式决定。

不在本 issue 范围(→ 企业版 objectstack-ai/cloud#855)

代办访问 / act-as 收件箱 · 委派治理 / SoD · 组织级 OOO/代理管理控制台(代管他人) · 委派合规报表 / 导出 / 认证复核

验收

  • OOO 自动跳过对 type: user / manager / field 生效,窗口外恢复
  • 自助临时委派单任务可用,保留审计
  • procurement / compliance 审批流:审批人休假不再冻结
  • 替换 / 委派事件入审计 + 通知双方
  • 缺陷库 gap chore(ci)(deps): bump actions/configure-pages from 4 to 5 #20 标记为已解决(社区版部分)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions