*/ public function broadcastOn(): array { return [new Channel('lottery-hall')]; } public function broadcastAs(): string { return 'risk.warning'; } /** * @return array{draw_id: int, draw_no: string, normalized_number: string, usage_ratio: float, usage_percent: int, warning_threshold: float, emitted_at_ms: int} */ public function broadcastWith(): array { return [ 'draw_id' => $this->drawId, 'draw_no' => $this->drawNo, 'normalized_number' => $this->normalizedNumber, 'usage_ratio' => round($this->usageRatio, 4), 'usage_percent' => (int) round($this->usageRatio * 100), 'warning_threshold' => 0.8, // 80% 阈值 'emitted_at_ms' => $this->emittedAtMs, ]; } }