功能:SSL 憑證過期偵測與提醒、歷史戰績改為分頁載入

根本原因:
1. 憑證過期時瀏覽器只回 Failed to fetch,前端無法辨識原因,使用者誤以為是 DB 連不上(本次 7/1 憑證過期即是如此)。
2. 歷史戰績一次撈出全部資料(400+ 筆、逾 100KB),筆數持續成長會越來越慢。

影響:所有 API 的連線錯誤訊息、歷史戰績頁載入速度、Docker 憑證掛載路徑與檔名。

修法:
- 後端讀取 cert.pem 到期日(60 秒快取),由 /api/version 與 /api/health 回傳 certNotAfter
- 前端把到期日存進 localStorage;fetch 失敗時依離線、憑證已過期、其他連線問題分別顯示明確訊息
- 憑證到期前 7 天於頁面跳出「SSL 憑證提醒」通知,可手動關閉
- /api/history 支援 page/pageSize(預設 20 筆、上限 100),回傳 total 與 totalPages
- 歷史戰績頁加入分頁控制列(上一頁/頁碼含省略號/下一頁/總筆數),刪除後自動重新載入並修正超出範圍的頁碼
- 憑證掛載目錄改為 /volume1/docker/certs,檔名改為 cert.pem / chain.pem / privkey.pem,app 容器同步掛載以讀取到期日

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-13 15:44:44 +08:00
co-authored by Claude Fable 5
parent 13f3bf5198
commit 1bc42f5bf6
9 changed files with 356 additions and 31 deletions
+11 -5
View File
@@ -125,16 +125,22 @@ https://你的網域或 NAS IP:3501
Docker Compose 會掛載以下目錄:
```text
/volume1/homes/JianMiau/www/certificate/
/volume1/docker/certs/
```
需包含:
- `RSA-cert.pem`
- `RSA-chain.pem`
- `RSA-privkey.pem`
- `cert.pem`
- `chain.pem`
- `privkey.pem`
之後只要更新這個目錄內的憑證檔案,再重新部署容器即可套用新 SSL
nginx 容器會監看這個目錄,更新憑證檔案後會自動重新載入,不需要重啟容器
### 憑證到期偵測
- 後端會讀取 `cert.pem` 的到期日,透過 `/api/version``/api/health` 回報給前端。
- 前端會把到期日存在 localStorage;當 API 出現 `Failed to fetch` 時,若存下來的到期日已過,會明確顯示「SSL 憑證已於某日過期」而不是通用錯誤。
- 憑證到期前 `7` 天,頁面會跳出提醒更新憑證的通知。
## 資料表格式