feat(flow): 回调信封升级——事件携带操作人身份(operatorUserId/operatorName)

在飞工作合入:FlowEvent 增操作人字段(可空),引擎/推进监听/回调派发全程透传,
对齐 SDK FlowCallbackEvent 的 taskId/operator 字段(规范 §6.4)。
This commit is contained in:
chenxing
2026-09-22 16:54:02 +08:00
parent 695e20ab52
commit d2395c20ce
9 changed files with 102 additions and 32 deletions
@@ -197,6 +197,16 @@ class CallbackDispatchIT extends FlowTestSupport {
assertTrue(payload.get("instanceVersion").asInt() >= 1, "instanceVersion 应为办件乐观锁版本");
assertNotNull(payload.get("eventId"));
assertNotNull(payload.get("occurredTime"));
// 2026-09-20 信封升级:taskId + 操作人(发起直达链路 → 操作人=发起人快照)
assertEquals("201", payload.get("operatorUserId").asText(), "operatorUserId 应为发起人");
assertEquals("张三", payload.get("operatorName").asText(), "operatorName 应为发起人");
if ("flow.task.created".equals(event)) {
assertTrue(payload.get("taskId") != null && payload.get("taskId").isNumber(),
"task.created 必带顶层 taskId");
} else if ("flow.submitted".equals(event)) {
assertTrue(payload.get("taskId") == null || payload.get("taskId").isNull(),
"办件级事件 taskId 应为 null");
}
// 签名断言:Base64(HmacSHA256(secret, ts.nonce.body))
String expected = hmac(reg.getSecret(), r.timestamp, r.nonce, r.body);
assertEquals(expected, r.signature, "推送必须带合法 X-Flw-Signature");