fix(ops): 修复事件重复发布问题并清理遗留代码
Some checks failed
Java CI with Maven / build (11) (push) Has been cancelled
Java CI with Maven / build (17) (push) Has been cancelled
Java CI with Maven / build (8) (push) Has been cancelled

1. 移除 OrderStateMachine 中重复的事件发布逻辑
   - OrderStateMachine 不再发布 OrderStateChangedEvent
   - 事件发布统一由 EventPublishHandler 处理

2. 删除 enqueueAndDispatch 遗留方法
   - 该方法已无用,被 DispatchEngine 策略模式替代
   - 删除接口声明、实现类和测试用例

3. 清理无调用的备用接口方法
   - enqueueOrderOnly、dispatchToCleaner、confirmOrder、
     startWorkingOnBeacon、autoCompleteOnSignalLost、
     playVoiceForNewOrder、playVoiceForQueuedOrder、
     playVoiceForNextTask、upgradePriorityToP0、
     calculateActualDuration
   - 保留接口但标记 @Deprecated

问题修复:
- 工单派发时 TTS 语音播报不再重复触发
- 调度逻辑统一走 DispatchEngine 策略模式

Co-Authored-By: Claude (MiniMax-M2.1) <noreply@anthropic.com>
This commit is contained in:
lzh
2026-01-29 21:38:50 +08:00
parent 13c9b6564f
commit 20ea25cf55
4 changed files with 3 additions and 124 deletions

View File

@@ -221,36 +221,6 @@ public class CleanOrderEndToEndTest {
verify(opsOrderMapper, times(1)).insert(any(OpsOrderDO.class));
}
// ==========================================
// DP-01 ~ DP-03: 智能调度测试 (模拟)
// ==========================================
@Test
void testDP03_P0UrgentInterrupt() {
injectField(cleanOrderService, "dispatchEngine", dispatchEngine);
injectField(cleanOrderService, "opsOrderMapper", opsOrderMapper);
// 准备一个 P0 紧急工单
Long orderId = 999L;
Long cleanerId = 2001L;
OpsOrderDO order = OpsOrderDO.builder()
.id(orderId)
.priority(PriorityEnum.P0.getPriority())
.build();
orderDB.put(orderId, order);
// 模拟调度引擎返回成功
when(dispatchEngine.urgentInterrupt(eq(orderId), eq(cleanerId)))
.thenReturn(DispatchResult.success("P0插队成功", cleanerId));
// 执行派单
cleanOrderService.enqueueAndDispatch(orderId, cleanerId, true);
// 验证
verify(dispatchEngine).urgentInterrupt(eq(orderId), eq(cleanerId));
}
// ==========================================
// AV-01 ~ AV-03: 到岗校验测试
// ==========================================