docs: 更新 README 與 INFRA.md 記錄 RADAR_TARGETS 多點掃描

- README env 表格加入 RADAR_TARGETS、RADAR_ZOOM 備註(zoom 11 單點 vs zoom 15 多點的差異)
- INFRA.md 加 3.13.5 多點 union 掃描節,記錄 root cause(單點 zoom 11 密度過低)、解法、生產設定、二階段優化方向

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-20 11:38:13 +08:00
parent c428566c9a
commit e2710bcd24
2 changed files with 15 additions and 1 deletions

View File

@@ -53,7 +53,8 @@ Secrets 放 `.env`gitignore。本機與生產共用同一份格式、只
| `SCRIPT_PATH` | fetcher | `twpk_radar.mjs` | JS worker 檔名 | | `SCRIPT_PATH` | fetcher | `twpk_radar.mjs` | JS worker 檔名 |
| `STATE_PATH` | fetcher | `state.json` | twpkinfo.com 登入快照,**最常壞的地方** | | `STATE_PATH` | fetcher | `state.json` | twpkinfo.com 登入快照,**最常壞的地方** |
| `UA_FROM_STATE` | fetcher | `true` | 是否從 state 帶 UA / langs | | `UA_FROM_STATE` | fetcher | `true` | 是否從 state 帶 UA / langs |
| `RADAR_LAT` / `RADAR_LNG` / `RADAR_ZOOM` | fetcher | `25.0478` / `121.5170` / `11` | 掃描中心 | | `RADAR_LAT` / `RADAR_LNG` / `RADAR_ZOOM` | fetcher | `25.0478` / `121.5170` / `11` | 單點掃描中心fallback`RADAR_TARGETS` 未設才用) |
| `RADAR_TARGETS` | fetcher | 空 | 多點掃描,格式 `name:lat,lng;name2:lat2,lng2;...`;搭配 `RADAR_ZOOM=15` 街區級密度 |
| `MIN_REMAINING` | fetcher | `300` | 寫入前先做一輪粗篩,低於此值不進 Redis | | `MIN_REMAINING` | fetcher | `300` | 寫入前先做一輪粗篩,低於此值不進 Redis |
| `MIN_IV` / `PERFECT_ONLY` / `SPECIES` | fetcher | 空 / `false` / 空 | fetcher 端篩選(通常留空,由 API 端即時篩) | | `MIN_IV` / `PERFECT_ONLY` / `SPECIES` | fetcher | 空 / `false` / 空 | fetcher 端篩選(通常留空,由 API 端即時篩) |
| `REDIS_HOST` / `REDIS_PORT` / `REDIS_DB` / `REDIS_PASSWORD` | 全部 | 本機 `127.0.0.1` / 生產 `192.168.42.211` | 預設本機無密碼 | | `REDIS_HOST` / `REDIS_PORT` / `REDIS_DB` / `REDIS_PASSWORD` | 全部 | 本機 `127.0.0.1` / 生產 `192.168.42.211` | 預設本機無密碼 |

View File

@@ -230,6 +230,19 @@ ALLOWED_HOST_LIST = external,192.168.42.0/24,loopback
這次的 push 也是 **webhook pipeline 第一次真實使用**push → Gitea 觸發 webhook → 42.104 自動 rsync → caddy 下次 request 即新版。之前都是用 Gitea API 的 test endpoint 模擬。 這次的 push 也是 **webhook pipeline 第一次真實使用**push → Gitea 觸發 webhook → 42.104 自動 rsync → caddy 下次 request 即新版。之前都是用 Gitea API 的 test endpoint 模擬。
### 3.13.5 多點 union 掃描zoom 調整)
原設計 `RADAR_ZOOM=11` 是給舊 pipelinescp spots.json 給 caddy用的想一次抓整個北台灣。新 pipeline 前端會聚焦特定街區zoom=11 下單位面積密度太低(實測 twpk 某 1km² 街區顯示 98 marker我們 API 在同範圍為 0
改成 **多點 union**
- `radar_fetcher.py` 支援 `RADAR_TARGETS=name:lat,lng;...` 環境變數
- 主流程 loop 每個 target 呼叫 Function Server`(id, lat, lng, expire_time)` dedupe 後 union
- 單點失敗不阻斷其他 target
- 建議搭配 `RADAR_ZOOM=15` 街區級密度zoom 越大單點範圍越小但回傳密度越高)
- `FETCH_LOCK_TTL` 拉高到 `400`5 點序列跑總耗時 ~50s但要留餘裕
目前生產設定 5 個 target台北車站 / 內湖南港 / 板橋 / 新竹 / 宜蘭。測試 twpk 內湖那個 1km² 街區0 → 2 筆。還不理想但方向對;可加 target 或降 `MIN_REMAINING` 進一步補密度。
### 3.13 UI 顯示資料更新時間 ### 3.13 UI 顯示資料更新時間
使用者想看到「這份資料什麼時候抓的」: 使用者想看到「這份資料什麼時候抓的」: