lzh
c24b1eb641
fix(ops): 直接派发加空闲兜底 + 队列同步按活跃状态过滤
1. 直接派发空闲兜底(补 autoDispatchNext 之外的另一条派发入口)
DispatchEngineImpl.executeDispatch 在 DIRECT_DISPATCH/PUSH_AND_ENQUEUE
前增加 MySQL 兜底校验:若执行人仍挂活跃工单(Redis 判空闲但 MySQL
不一致的场景),强制降级为 ENQUEUE_ONLY 让任务进队列等待下一轮
autoDispatchNext 接力。避免同一设备再次出现并行多单。
2. 队列同步按活跃状态过滤
syncUserQueueToRedis / getTasksByUserId 的 MySQL 回填路径此前调用
selectListByUserId 不过滤状态,会把历史 REMOVED 记录一并同步到
Redis(线上观察到设备 31 的 Redis ZSet 塞了 206 条、其中 205 条是
REMOVED)。新增 OpsOrderQueueMapper.selectActiveListByUserId,只返
回 WAITING/PROCESSING/PAUSED,两条同步链路改走此方法。原 selectList
ByUserId 保留给审计/统计场景。
未清理历史 REMOVED 记录,保留审计追溯。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-20 11:22:18 +08:00
..
2026-04-20 10:54:54 +08:00
2025-12-31 16:49:44 +08:00
2026-04-13 23:18:30 +08:00
2026-04-20 11:22:18 +08:00
2026-04-05 15:26:43 +08:00
2026-03-27 16:37:30 +08:00
2025-12-31 16:49:44 +08:00
2025-12-31 16:49:44 +08:00