# WinRacing V46 Chairman Gateway Presenter

## Root Cause Fixed
舊 renderer 以為 endpoint 回傳：
resp.payload.payload

實際 SafeLoader endpoint 直接回傳：
resp.counts
resp.top_by_race
resp.ranking
resp.summary

因此 Backend 已有 103 Ranking / 9 Summary，但畫面錯誤解包後變成 0。

## V46 修正
- Frontend 自動識別 direct / nested payload。
- 正確顯示 Summary、Ranking、Top By Race。
- 新增 V46 Presenter service。
- 新增 Presenter API。
- 新增獨立 Presenter Dashboard。
- 保留 V45.1 Dedup / Latest Run。

## 測試
1. Presenter API：
Chairman/api/api_gateway_presenter_v46.php?race_date=2026-07-08

2. Presenter Dashboard：
Chairman/ui/gateway_presenter_v46.php?race_date=2026-07-08

3. Analysis：
analysis_chairman_v46_gateway_presenter.php?review_date=2026-07-08&date=2026-07-08&race_id=86
