修复
This commit is contained in:
@@ -57,9 +57,8 @@ async function processEvent(body) {
|
||||
const approvalCode = event.approval_code;
|
||||
const status = event.status; // APPROVED / REJECTED / PENDING
|
||||
|
||||
// 只处理"已通过"的审批(即审批人同意后触发自动化)
|
||||
// 根据你的流程设计,也可能是 PENDING 时触发(机器人自动审批)
|
||||
if (status !== 'APPROVED' && status !== 'PENDING') return;
|
||||
// 只处理进行中的审批(办理任务到达时 instance 仍为 PENDING)
|
||||
if (status !== 'PENDING' && status !== 'APPROVED') return;
|
||||
|
||||
// 防重复处理
|
||||
if (isApprovalProcessed(instanceCode)) {
|
||||
@@ -67,7 +66,23 @@ async function processEvent(body) {
|
||||
return;
|
||||
}
|
||||
|
||||
logger.info(`[飞书事件] 收到审批事件: code=${approvalCode}, instance=${instanceCode}, status=${status}`);
|
||||
// 检查当前 PENDING 任务是否分配给办理人(过滤掉上级审批阶段)
|
||||
const handlerId = config.feishu.handlerUserId;
|
||||
if (handlerId) {
|
||||
try {
|
||||
const instance = await feishu.getApprovalInstance(approvalCode, instanceCode);
|
||||
const taskList = instance.task_list || [];
|
||||
const pendingTask = taskList.find(t => t.status === 'PENDING');
|
||||
if (!pendingTask || pendingTask.user_id !== handlerId) {
|
||||
logger.info(`[飞书事件] 当前待办非本程序办理任务,跳过: instance=${instanceCode}`);
|
||||
return;
|
||||
}
|
||||
} catch (e) {
|
||||
logger.warn(`[飞书事件] 获取实例详情失败,继续处理: ${e.message}`);
|
||||
}
|
||||
}
|
||||
|
||||
logger.info(`[飞书事件] 办理任务到达: code=${approvalCode}, instance=${instanceCode}`);
|
||||
|
||||
// 根据审批定义 code 路由到不同工作流
|
||||
if (approvalCode === config.feishu.approvalCodes.fileIn) {
|
||||
@@ -113,7 +128,7 @@ async function processFileIn(approvalCode, instanceId) {
|
||||
const result = await handleFileIn(approvalData, logId);
|
||||
updateLog(logId, 'success');
|
||||
|
||||
// 提交审批意见
|
||||
// 以办理人身份完成办理任务
|
||||
await feishu.approveInstance(approvalCode, instanceId, result.message);
|
||||
logger.info(`[文件传入] 完成: ${result.detail}`);
|
||||
} catch (err) {
|
||||
|
||||
Reference in New Issue
Block a user