feat(p3.2): bizType 方案B——常量换终值 svc-hall + 双值双查 + P1-02 行级绑定校验 + P1-03 R4 时序修复
build / build-push (push) Successful in 48s
build / build-push (push) Successful in 48s
- SvcFlowCallbackHandler.BIZ_TYPE → SvcBizTypes.CURRENT(svc-hall,H-1 实核 appKey=100008 注册行 app_code);yml 回调白名单双值 [svc-hall, svc_item](收敛条件=另一类型不再可能 产生事件,本轮不收敛;回滚也保双值) - 双值双查补丁(先终值后存量,S0-H2 实测中心 svc_item 存量=0,次查为防御性兼容): ApplyViewGuard 办理人分支 / FlowReconcileJob 对账(命中判据=内容非空,兼容 miss 空载体)/ progress 空态出参 / S2 审批代理 byBiz·todo(S2 已落) - P1-02 行级事件绑定校验:事件 schId 与行一致、行有镜像实例时事件 instanceId 必须一致; 不匹配 200 消费但不推进+告警日志(不抛 5xx 防重推风暴);行无值(首发回调早于回填)放行, doFlowApply 回填侧对实例不一致告警留痕(方案B 书面接受第二实例降级) - P1-03 R4 时序修复:markResubmitted 清旧 flowResultJson(保留 lastInstanceVersion 跨轮 乱序防护);Handler 终态守卫改版本感知(事件版本>已消费版本=新轮竞态窗口放行,不再以 旧结果非空一刀切拒绝);非终态推进清残留 finishTime;三场景测试静态化注入 (新轮回调先于 apply 响应/新轮快速终态/旧轮迟到重复) - 测试断言按新语义更新:新件出站断言 svc-hall×3;全量 163/163 绿(Stage S3/P3.2)
This commit is contained in:
@@ -135,7 +135,7 @@ class ServiceApplyFlowSubmitTest {
|
||||
ApplyVo vo = service.submit(user(9, 1), request());
|
||||
assertEquals(ApplyFlowStatusEnum.PENDING.getCode(), vo.getFlowStatus(), "提交响应=PENDING 行,状态异步翻转");
|
||||
ArgumentCaptor<String> bizId = ArgumentCaptor.forClass(String.class);
|
||||
verify(flowClient).apply(eq(1L), eq("fg-1"), eq("svc_item"), bizId.capture(),
|
||||
verify(flowClient).apply(eq(1L), eq("fg-1"), eq("svc-hall"), bizId.capture(),
|
||||
anyString(), any(), any(), eq(9), eq("张三"), any());
|
||||
assertEquals("42", bizId.getValue(), "bizId=办件 id(uk 幂等键)");
|
||||
verify(applyRepository).markApproving(eq(42), eq(9011L), any(LocalDateTime.class));
|
||||
@@ -148,7 +148,7 @@ class ServiceApplyFlowSubmitTest {
|
||||
// router.replace 同形);路径参数 /apply-detail/{id} 会 no-match 空白页(走查 BP-R3-2)
|
||||
service.submit(user(9, 1), request());
|
||||
ArgumentCaptor<String> bizUrl = ArgumentCaptor.forClass(String.class);
|
||||
verify(flowClient).apply(eq(1L), eq("fg-1"), eq("svc_item"), eq("42"),
|
||||
verify(flowClient).apply(eq(1L), eq("fg-1"), eq("svc-hall"), eq("42"),
|
||||
anyString(), bizUrl.capture(), any(), eq(9), eq("张三"), any());
|
||||
assertEquals("/apply-detail?id=42", bizUrl.getValue());
|
||||
}
|
||||
@@ -249,7 +249,7 @@ class ServiceApplyFlowSubmitTest {
|
||||
when(applyRepository.findByIdAndSchId(42, 1L)).thenReturn(Optional.of(apply));
|
||||
service.resubmit(user(9, 1), 42);
|
||||
// 同 bizId=42(flow-center R4 命中 30/40 → 复用同一办件行重启推进)
|
||||
verify(flowClient).apply(eq(1L), eq("fg-1"), eq("svc_item"), eq("42"),
|
||||
verify(flowClient).apply(eq(1L), eq("fg-1"), eq("svc-hall"), eq("42"),
|
||||
anyString(), anyString(), any(), eq(9), eq("张三"), any());
|
||||
verify(applyRepository).markResubmitted(eq(42), eq(9011L), any(LocalDateTime.class));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user