Archery
Archery copied to clipboard
[ bug ]消息通知错乱问题
现象描述
当语法严重错误,提交者还强制提交,archery状态为“自动审核不通过”,这时archery不会记录工单id的问题。 举个栗子:提交者提交了异常工单#41,被archery自动审核不通过。此后提交者又提交了正常工单,按理说应该是#42,但是archery发送的消息带的id依然是#41,也就是对于archery自动审核不通过的工单,不会记录工单id。
原因分析
代码中发送消息模块,取audit_id,如下: vim sql/notify.py if status == WorkflowDict.workflow_status['audit_wait']: # 申请阶段 msg_title = "[{}]新的工单申请#{}".format(workflow_type_display, audit_id)
打印日志: [2021-11-22 15:15:13,678][MainThread:140041469298496][task_id:default][notify.py:93][WARNING]- 审核notify_for_audit/audit_id: 41 [2021-11-22 15:15:13,679][MainThread:140041469298496][task_id:default][notify.py:94][WARNING]- 审核notify_for_audit/workflow_id: 42
本人分析,即使工单被自动审核不通过,工单id不应该被跳过。从日志看workflow_id是正确的id
简单修复
至于函数如何调用的过程,略。 简单修改目前可以规避这个问题,修改传入workflow_id参数,如下: vim sql/notify.py if status == WorkflowDict.workflow_status['audit_wait']: # 申请阶段 msg_title = "[{}]新的工单申请#{}".format(workflow_type_display, workflow_id)
这样发送消息带的id是正常的。
当前所有的推送使用的id应该都是审批流的id,如果使用工单id的话,由于采取的是自增类型,不同工单类型id会重复,不过消息有区分工单类型,倒也不错