fix(lottery): 增加广播任务时效保护并强化命令异常处理
- 为多个广播事件添加 retryUntil 方法,设置派发后 30 秒内必须执行,否则丢弃 - 修改 LotteryDrawTickCommand handle,添加异常捕获及错误日志,保证失败时返回 FAILURE - 修改 LotteryHallCountdownCommand handle,添加异常捕获及错误日志,超时情况写入警告日志 - 针对 SettlementOrchestrator 和 DrawHallSnapshotBuilder 查询结果添加限制,防止数据量过大 - 调整计划任务 withoutOverlapping 调用,增加 expiresAt 参数避免任务锁死 - 更新 .env.example,完善本地开发与生产环境部署说明及日志配置说明 - 移除 e2e 相关测试代码、配置及依赖,精简项目体积
This commit is contained in:
@@ -111,8 +111,17 @@ final class SettlementOrchestrator
|
||||
->where('status', 'pending_draw')
|
||||
->with(['combinations', 'order'])
|
||||
->orderBy('id')
|
||||
->limit(10_000)
|
||||
->get();
|
||||
|
||||
if ($ticketItems->count() >= 10_000) {
|
||||
\Illuminate\Support\Facades\Log::warning('SettlementOrchestrator: ticket_items hit safety cap', [
|
||||
'draw_id' => $locked->id,
|
||||
'draw_no' => $locked->draw_no,
|
||||
'loaded_count' => $ticketItems->count(),
|
||||
]);
|
||||
}
|
||||
|
||||
/** @var list<array{item: TicketItem, gross_win: int, matched_tier: ?string, net_win: int, match_detail: mixed}> $prepared */
|
||||
$prepared = [];
|
||||
foreach ($ticketItems as $item) {
|
||||
|
||||
Reference in New Issue
Block a user