forked from ChaiHao/BPOS-MVP
三面拆分⑲:审批点卸岗位 —— 负责人一律运营时分配,绑员工组,实例记 assignee
模型(用户定):审批点不绑岗位;节点负责人是运营时分配的,绑定到员工组。 - 契约:approval 节点删 approver(功能属性只剩驳回走向/催办/委托消息); CLOSURE_VIOLATION_KINDS 删 missing-owner-position(岗位不入编排,无岗可核); 治理审批列表删 approverPosition 字段 - 运行时统一口径(活动点=审批点):工作流绑了员工组按组轮值(组员并集最闲者先), 没绑组全员轮值;staffId 稳定排序保证确定性,组员全不在岗退回全员。 ADR-011「绑定先于策略」随岗位退场 —— 工作组快照的成员集合成为轮值池 - 实例记 assignee(迁移 0014 node_instance.assignee_id):分派结果是流转事实 —— 审批箱收件(i.assigneeId === me)、裁决权(同一判据)、员工面链条报实际承接人、 治理台审批列表报人,全部按它认,不再有岗位比对 - closure 卸 positions 入参;desk/desk-approval/governance-ops 三路由改口; web 属性卡删「审批岗位」选择与警示、positions 管线拆除;种子 A5 卸 PM; 导出依赖文件审批段只留编排语义 测试:closure 25、save-package 6、seed 8、graph-to-pkg 5、端到端八例真库全绿; 五闸退出码全过。库:迁移 + v4 就地同步(唯一生效版)。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KeDBx2PHLavbURXB8LJJ7m
This commit is contained in:
@@ -498,7 +498,6 @@ export const listApprovalsRoute = {
|
||||
workflowSubject: z.string(),
|
||||
title: z.string(),
|
||||
approverName: z.string(),
|
||||
approverPosition: z.string(),
|
||||
state: z.enum(['pending', 'passed', 'rejected']),
|
||||
issuedAt: z.string(),
|
||||
}),
|
||||
|
||||
@@ -165,8 +165,11 @@ export const processNodeSchema = z.discriminatedUnion('kind', [
|
||||
z.object({
|
||||
...nodeBase,
|
||||
kind: z.literal('approval'),
|
||||
/** 审批点功能属性四件:审批岗位 / 输入装配映射 / 驳回走向 / 催办阶梯 */
|
||||
approver: ownerSpecSchema,
|
||||
/*
|
||||
* **不绑岗位**(产品决策 2026-07-28 第五轮):审批人也是运营时分配 ——
|
||||
* 有员工组按组轮值,无组全员轮值,与活动点同一口径。
|
||||
* 审批点的功能属性只剩编排语义三件:驳回走向 / 催办阶梯 / 委托消息。
|
||||
*/
|
||||
/** 驳回走向:声明式,不由临场决定 */
|
||||
reject: z.discriminatedUnion('kind', [
|
||||
z.object({ kind: z.literal('reopen'), nodeId: nodeIdSchema, mapping: z.array(fieldMappingSchema).default([]) }),
|
||||
@@ -235,7 +238,6 @@ export const CLOSURE_VIOLATION_KINDS = [
|
||||
'multi-default-edge',
|
||||
'tolerate-required-dependency',
|
||||
'unknown-activity',
|
||||
'missing-owner-position',
|
||||
] as const;
|
||||
export const closureViolationKindSchema = z.enum(CLOSURE_VIOLATION_KINDS);
|
||||
export type ClosureViolationKind = z.infer<typeof closureViolationKindSchema>;
|
||||
|
||||
Reference in New Issue
Block a user