任务转交与自动交接
本文面向组织管理员,说明任务转交、默认交接人和组织级自动交接配置的使用方式、按钮开关、匹配顺序和边界行为。
功能范围以当前实现为准。人员变更记录、离职事件监听和通知配置仍由人员变更记录插件负责;任务转交和自动交接解析由主服务负责。
功能概览
任务转交用于把原处理人的进行中环节和离职用户关联的项目范围交给新的处理人。系统会先生成预览,再创建后台批次执行,批次可以查看处理中、成功、部分失败和失败等状态。
自动交接用于在系统运行时为离职、禁用或删除的负责人解析接收人。它不会直接替代任务转交页面的批量执行,而是作为负责人重新分配、重新开启环节等场景中的接收人解析规则。
相关入口
| 入口 | 用途 | 权限 |
|---|---|---|
/task_transfer | 查看任务转交批次、搜索历史记录、进入创建页或自动交接配置页 | 由任务转交页面权限控制 |
/task_transfer/create | 创建一次任务转交批次 | 组织管理员 |
/task_transfer/handover-setting | 配置组织级自动交接策略 | organization.admin |
| 用户资料编辑页 | 为单个用户配置默认交接人 | 具备用户资料编辑权限的管理员 |
任务转交与自动交接配置的页面入口属于任务转交模块;用户管理页面中的默认交接人配置只影响单个用户的运行时解析。

图:任务转交列表示例。管理员可以使用筛选条件查询历史批次,并从右侧操作区进入详情、重试失败项或删除记录;也可以从页面右上角进入创建页和自动交接配置。截图中的用户、项目和数量以实际环境为准。
任务转交流程
| 步骤 | 管理员操作 | 系统校验或结果 |
|---|---|---|
| 1 | 选择原处理人 | 允许选择正常、禁用、离职或已删除用户 |
| 2 | 确认新处理人 | 默认交接人有效时自动带出;无效时由管理员手动选择 |
| 3 | 配置转交范围 | 分别处理“进行中环节”和“相关项目”两个 Tab |
| 4 | 搜索并预览 | 服务端生成预计范围和数量 |
| 5 | 确认提交 | 检查范围、预计数量和开关后创建批次 |
| 6 | 后台执行 | 固化范围并分块执行,逐项记录成功、跳过或失败原因 |
提交前后不是同一次校验
预览只是提交时的预计结果。后台任务领取执行时会重新校验组织、项目、环节、原负责人和新处理人状态;数据已经发生变化的明细会被跳过,不会强行覆盖。
范围 Tab 与选择模式
进行中环节
“进行中环节”展示原处理人当前仍负责的有效环节,选择粒度是项目 + 环节。执行时只处理仍然存在且原处理人仍是负责人明细。
相关项目
“相关项目”仅对离职来源展示,用于处理原处理人发起、担任项目负责人或存在已处理环节的项目关联范围。它主要服务于项目查看授权和可选的项目负责人修改,不会补写历史环节负责人。
两种选择模式
| 模式 | 语义 | 提交内容 |
|---|---|---|
| 勾选记录 | 只处理管理员明确勾选的记录,可跨页累计选择 | 环节记录键或项目 ID |
| 当前筛选全部 | 处理当前筛选命中的全部结果,不依赖当前页 | 筛选条件快照 |
两个 Tab 独立保存筛选和选择状态。切换原处理人会清空新处理人、筛选结果、跨页选择和旧预览。
当前筛选全部适合离职用户的关联项目范围;如果范围为空,不能进入确认提交。预览和执行阶段仍以服务端重新查询和固化结果为准。

图:任务转交创建页示例。页面包含原处理人和新处理人选择、范围筛选、进行中环节与相关项目两个 Tab,以及勾选记录和当前筛选全部两种选择模式;截图中的空态和数量以实际环境为准。
创建页按钮与开关
开关快速对照
| 开关 | 开启时做什么 | 不会做什么 | 失败或边界 |
|---|---|---|---|
| 发送飞书消息 | 转交成功后通知相关新旧处理人 | 不改变负责人结果、项目授权或项目负责人 | 关闭后仍执行转交,只是不发送通知 |
| 将新处理人设为项目负责人 | 将本次范围内由原处理人担任项目负责人的项目,改由新处理人负责 | 不修改范围外项目,也不替换环节负责人 | 执行时原处理人已不再担任项目负责人的项目会跳过 |
| 全匹配 | 将本次选中的进行中环节负责人收敛为新处理人 | 不影响未选环节、历史已处理环节或相关项目 Tab | 关闭时只移除原处理人,保留其他共同负责人 |
| 数据集刷新(系统行为) | 批次结束后按受影响项目去重刷新项目数据 | 管理员不能关闭,不增加实时关联查询或定时扫描 | 包含项目查看授权时强制执行;失败只记录独立日志 |
| 更新默认交接人 | 将本次新处理人设为原处理人未来自动交接时的默认接收人 | 不改变本次转交范围,也不替代组织级策略或项目关系 | 只影响后续自动交接;批次受理失败时恢复原配置 |
全匹配只作用于管理员在“进行中环节”中选中的环节负责人,不会扩展到整个项目或其他范围。假设某个选中环节原本由 A、C 共同负责,现在把 A 交给 B:
| 设置 | 交接后该环节负责人 | 对 C 的影响 |
|---|---|---|
| 关闭全匹配(默认) | B、C | 保留 C |
| 开启全匹配 | 仅 B | 移除 C |
如果只是把原处理人 A 替换为 B,应保持关闭;只有希望该环节最终只保留 B,并移除其他共同负责人时,才开启全匹配。它与“将新处理人设为项目负责人”是两个独立开关:前者处理选中环节的负责人集合,后者处理本次范围内的项目负责人。
需要特别注意
数据集刷新是系统自动执行的固定后处理,页面不提供关闭选项。包含项目查看授权时会被系统强制刷新;刷新失败只记录独立日志,不回滚已经完成的负责人转交。
更新默认交接人只影响原处理人未来触发自动交接时的接收人解析。关闭该开关时,仍会执行当前批次,但不会改变原处理人的后续默认接收人。
自动交接配置
自动交接配置页面位于 /task_transfer/handover-setting,配置按组织生效。页面提供四种策略:

图:自动交接配置页示例。管理员可以选择接收人策略并配置对应参数,右侧摘要展示当前生效规则;截图中的策略和配置状态以实际环境为准。
| 策略 | 作用 | 必要配置 |
|---|---|---|
| 团队负责人 | 按原处理人所属团队查找有效负责人 | 可选开启沿父团队查找 |
| 组织角色 | 在当前组织中查找指定角色的有效成员 | 选择未删除的组织角色 |
| 固定用户 | 始终尝试交给指定用户 | 选择当前组织内正常用户 |
| 脚本规则 | 根据解析上下文动态返回接收人 UID | 脚本不超过 20,000 字符 |
团队负责人模式
| 配置 | 查找范围 | 找不到有效负责人时 |
|---|---|---|
| 关闭沿父团队继续查找 | 仅查原处理人直属团队负责人 | 继续直属上级兜底 |
| 开启沿父团队继续查找 | 直属团队无结果时,按组织层级逐级查找父团队 | 继续直属上级兜底 |
父团队查找有循环保护;组织树异常不会导致无限循环。
组织角色和固定用户模式
| 类型 | 有效条件 | 无效时 |
|---|---|---|
| 组织角色 | 属于当前组织且未删除 | 拒绝策略配置或候选结果 |
| 固定用户 | 属于当前组织、状态正常且未删除 | 拒绝策略配置或候选结果 |
保存时服务端会再次校验组织隔离和用户状态,前端展示不能替代服务端校验。
脚本规则模式
脚本可以读取当前解析上下文,并返回接收人 UID。CodeEditor 中的“示例”用于填充示例代码,不会自动保存实际配置。
常用上下文包括:
| 字段 | 含义 |
|---|---|
ctx.user_id | 原处理人 UID |
ctx.organization_id | 组织 UID |
ctx.project_id | 项目 UID;新建项目分配阶段可能为 0 |
ctx.flow_type / ctx.flow_key | 流程类型和流程标识 |
ctx.step_id | 当前环节 ID |
ctx.flow_step_id | 流程配置中的环节 ID |
ctx.trigger_scene | owner_assignment、reopen_step、add_sign 或 manual_handover |
脚本返回有效的同组织正常用户 UID 时,系统使用该用户;返回空值、无效 UID 或目标用户失效时,继续直属上级兜底。脚本执行异常记录 SCRIPT_ERROR。
| 脚本结果 | 系统处理 | 最终结果 |
|---|---|---|
| 返回同组织正常用户 UID | 接受脚本结果 | 使用脚本返回的接收人 |
| 返回空值 | 不接受脚本结果 | 继续直属上级兜底 |
| 返回不存在、禁用、删除或跨组织 UID | 校验失败 | 继续直属上级兜底 |
| 执行抛出异常 | 记录 SCRIPT_ERROR | 不把异常当作有效接收人,进入失败/人工介入 |
系统自动递进匹配逻辑
系统按以下顺序为离职或禁用负责人解析接收人:
候选接收人必须满足:同一组织、未删除、未禁用、不是原处理人本人。项目级人工关系和用户绑定默认交接人都未命中时,才进入组织级策略。
组织级策略只返回候选接收人和解析决策,不直接写负责人、待办、项目查看授权或数据集;这些写入和后处理仍由任务转交与负责人服务负责。
用户资料中的离职交接人
用户资料编辑页中的“离职交接人”是单个用户的默认接收人配置,保存时会校验:
| 校验项 | 规则 | 不满足时 |
|---|---|---|
| 组织归属 | 接收人与原用户属于同一组织 | 不允许保存 |
| 用户状态 | 接收人状态正常且未删除 | 不允许保存 |
| 不能自交接 | 接收人不能是原用户本人 | 不允许保存 |
| 空值 | 空值表示未配置 | 运行时继续组织级策略和直属上级兜底 |
作用范围
该配置优先于组织级团队负责人、角色、固定用户和脚本策略,但只影响未来触发的自动解析,不会立即转移已有任务。已有任务需要通过 /task_transfer/create 创建任务转交批次。
如果默认交接人后来被禁用、删除或跨组织失效,系统不会继续使用该配置,而会进入组织级策略和直属上级兜底。
边界与失败处理
提交前先看这张表
只要遇到“不可提交、跳过、失败或数据不同步”,先按阶段定位,不要把前端校验、后台执行和数据集刷新当成同一个失败。
| 阶段 | 条件或问题 | 系统处理 | 管理员应关注什么 |
|---|---|---|---|
| 选择接收人 | 新处理人不是当前组织内正常且未删除用户 | 禁止选择或提交 | 更换为同组织有效用户 |
| 选择接收人 | 原处理人与新处理人相同 | 校验失败 | 不能把自己作为接收人 |
| 配置策略 | 角色、固定用户或脚本返回值跨组织、已删除或已禁用 | 拒绝候选人 | 检查组织归属和用户状态 |
| 配置策略 | 脚本超过 20,000 字符或执行异常 | 校验失败或记录 SCRIPT_ERROR | 异常不会静默转成有效接收人 |
| 配置范围 | 两个范围 Tab 都为空 | 页面禁止进入二次确认 | 至少选择一个有效范围 |
| 后台执行 | 项目、环节或负责人状态在提交后发生变化 | 明细跳过并记录原因 | 以执行时状态为准,不强行覆盖 |
| 批次重试 | 批次包含失败明细 | 只重试失败明细 | 成功和跳过项不会重复执行 |
| 后处理 | 项目查看授权、负责人写入、待办更新、数据集刷新分别执行 | 各自记录结果 | 一项失败不代表其他边界自动回滚 |
| 数据集刷新 | 刷新失败 | 记录独立日志 | 不回滚已经完成的负责人转交 |
记忆这条边界
| 处理层 | 负责回答的问题 |
|---|---|
| 前端校验 | 能不能提交? |
| 后台执行 | 当前明细能不能处理? |
| 后处理刷新 | 项目列表和授权是否同步? |
常见问题与排查
为什么原处理人已选择,但没有自动带出新处理人?
检查原处理人的默认交接人是否为空、是否已禁用/删除,以及是否与原处理人属于同一组织。无有效绑定时,页面会保留空的接收人选择,管理员可以手动选择。
为什么组织策略配置了接收人,运行时仍然使用直属上级?
检查角色、固定用户或脚本返回的 UID 是否仍然有效;检查团队负责人模式是否只查直属团队;再检查组织级策略是否保存成功。所有组织策略候选人失效时,系统会进入直属上级兜底。
“全匹配”开启后为什么其他负责人被移除了?
全匹配会替换选中环节的全部负责人集合。如果需要保留同环节中的其他共同负责人,请关闭全匹配。
如何区分任务转交和自动交接?
任务转交是管理员主动创建的批次,处理已有范围;自动交接是系统在负责人分配、重开、加签等运行时场景中解析接收人。两者可以共享默认交接人和组织策略,但职责不同。
相关功能入口
| 模块 | 说明 |
|---|---|
用户和组织架构 | 用户、团队、角色和用户资料管理 |
任务转交列表 | 运行环境中的任务转交入口 |
自动交接配置 | 运行环境中的组织级配置入口 |
用户资料编辑 | 配置单个用户的默认离职交接人 |
| 流程负责人脚本说明 | 说明脚本规则可使用的上下文和返回要求 |
