三面拆分⑩:工作组管理落员工区 —— ADR-011 欠账清账

建组/改组:逐岗位选人,留空即回落四策略。绑定先于策略,起单时快照进工作流;
实测改绑定后新起单的 work_group 快照即含新成员表,在途不受影响。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KeDBx2PHLavbURXB8LJJ7m
This commit is contained in:
2026-07-27 21:28:30 +08:00
co-authored by Claude Fable 5
parent a93f03f464
commit 6f36f8340a
8 changed files with 350 additions and 12 deletions
+39
View File
@@ -1493,6 +1493,44 @@ export declare const upsertTriggerRoute: {
}, z.core.$strip>;
}, z.core.$strip>;
};
/**
* 工作组 = 一组「岗位 → 员工」的绑定,**起单时装载、随工作流走**。
*
* 它是**绑定先于策略**,不是第五种负责人策略:起单人有组,整条流的岗位就按组指人;
* 没有组才回落四策略。装进工作流的是**快照** —— 改组不改已起的单。
*/
export declare const listWorkGroupsRoute: {
readonly method: "GET";
readonly path: "/api/gov/work-groups";
/** `ownerName` 是组长姓名的呈现补充,读表时一并带出,免得前端再对一次 id */
readonly output: z.ZodObject<{
groups: z.ZodArray<z.ZodObject<{
id: z.ZodString;
name: z.ZodString;
ownerId: z.core.$ZodBranded<z.ZodString, "StaffId", "out">;
members: z.ZodRecord<z.ZodString, z.core.$ZodBranded<z.ZodString, "StaffId", "out">>;
ownerName: z.ZodString;
}, z.core.$strip>>;
}, z.core.$strip>;
};
/** 一人一组:按 `ownerId` 落,已有即更新、没有即新建 */
export declare const saveWorkGroupRoute: {
readonly method: "PUT";
readonly path: "/api/gov/work-groups";
readonly body: z.ZodObject<{
ownerId: z.core.$ZodBranded<z.ZodString, "StaffId", "out">;
name: z.ZodString;
members: z.ZodRecord<z.ZodString, z.core.$ZodBranded<z.ZodString, "StaffId", "out">>;
}, z.core.$strip>;
readonly output: z.ZodObject<{
group: z.ZodObject<{
id: z.ZodString;
name: z.ZodString;
ownerId: z.core.$ZodBranded<z.ZodString, "StaffId", "out">;
members: z.ZodRecord<z.ZodString, z.core.$ZodBranded<z.ZodString, "StaffId", "out">>;
}, z.core.$strip>;
}, z.core.$strip>;
};
export declare const listActivitiesRoute: {
readonly method: "GET";
readonly path: "/api/gov/activities";
@@ -1905,6 +1943,7 @@ export declare const govMetricsRoute: {
}, z.core.$strip>;
};
export type GovTasksOutput = z.infer<typeof listGovTasksRoute.output>;
export type GovWorkGroupsOutput = z.infer<typeof listWorkGroupsRoute.output>;
export type GovApprovalsOutput = z.infer<typeof listApprovalsRoute.output>;
export type GovStaffOutput = z.infer<typeof listStaffRoute.output>;
export type GovGrantsOutput = z.infer<typeof listGrantsRoute.output>;