2026-10-20 TUE UTC 12:42 PM TPE 8:42 PM 每小時自動更新 中文 EN
LIVE 快訊
← 返回網站更新紀錄 Site Changelog

提交原始紀錄

Merge pull request #223 from nnneeeooo-nnneeeooo/codex/optional-radar-snapshot 雷達來源暫時無資料時仍可發布快報網站

SHA
c39b2f5bb6d941f8c06a1a8bbf120df543543759
提交時間
作者
nnneeeooo-nnneeeooo
提交者
web-flow

變更檔案 (5)

  • .github/workflows/briefing.yml modified · +1 / −1
  • .github/workflows/hourly.yml modified · +1 / −1
  • .github/workflows/manual-article-deploy.yml modified · +1 / −1
  • pipeline/radar_snapshot.py modified · +9 / −1
  • tests/test_radar_snapshot.py modified · +14 / −0

完整差異

@@ -110,7 +110,7 @@ jobs:\n             python pipeline/briefing.py --edition "${{ steps.ed.outputs.edition }}"\n           fi\n           python pipeline/build.py\n-          python pipeline/radar_snapshot.py\n+          python pipeline/radar_snapshot.py --optional\n \n       - name: Scan build output and committed data for secrets/reasoning\n         run: |\n@@ -146,7 +146,7 @@ jobs:\n           git fetch origin "${GITHUB_REF_NAME}"\n           git checkout "origin/${GITHUB_REF_NAME}" -- data/briefings || true\n           python pipeline/build.py\n-          python pipeline/radar_snapshot.py\n+          python pipeline/radar_snapshot.py --optional\n \n       # Audit the pipeline output after images.py has had a chance to remove\n       # stale or misleading cached photos. This still fails closed before any\n@@ -66,7 +66,7 @@ jobs:\n           python pipeline/image_captions.py\n           python tests/test_image_captions.py\n           python pipeline/build.py\n-          python pipeline/radar_snapshot.py\n+          python pipeline/radar_snapshot.py --optional\n \n       - name: Scan publishable output\n         run: |\n@@ -54,8 +54,16 @@ def write_snapshot(output: Path) -> dict:\n def main() -> int:\n     parser = argparse.ArgumentParser()\n     parser.add_argument("--output", type=Path, default=DEFAULT_OUTPUT)\n+    parser.add_argument("--optional", action="store_true",\n+                        help="Skip a missing provider snapshot during site builds")\n     args = parser.parse_args()\n-    payload = write_snapshot(args.output)\n+    try:\n+        payload = write_snapshot(args.output)\n+    except adsb.ProviderDown as exc:\n+        if not args.optional:\n+            raise\n+        print(f"radar snapshot: unavailable ({exc}); continuing site build")\n+        return 0\n     print(\n         f"radar snapshot: {len(payload['ac'])} public / "\n         f"{payload['source_total']} source rows")\n@@ -60,14 +60,28 @@ def main() -> None:\n     assert "emergency" not in serialized\n \n     original = adsb.adsb_lol_point\n+    original_argv = sys.argv\n     try:\n         adsb.adsb_lol_point = lambda *_: [row()]\n         with tempfile.TemporaryDirectory() as tmp:\n             output = Path(tmp) / "assets" / "radar.json"\n             written = radar_snapshot.write_snapshot(output)\n             assert json.loads(output.read_text(encoding="utf-8")) == written\n+            adsb.adsb_lol_point = lambda *_: []\n+            sys.argv = ["radar_snapshot.py", "--output", str(output),\n+                        "--optional"]\n+            assert radar_snapshot.main() == 0\n+            assert json.loads(output.read_text(encoding="utf-8")) == written\n+            sys.argv = ["radar_snapshot.py", "--output", str(output)]\n+            try:\n+                radar_snapshot.main()\n+            except adsb.ProviderDown:\n+                pass\n+            else:\n+                raise AssertionError("strict snapshot must fail on provider outage")\n     finally:\n         adsb.adsb_lol_point = original\n+        sys.argv = original_argv\n     print("test_radar_snapshot: OK")\n \n 

你發現了隱藏主題!

8-bit 主題已解鎖。重新整理後,就能在主題選單選擇 8-bit。