V10.514 新增 Webcrumbs host data API
All checks were successful
CD Pipeline / deploy (push) Successful in 1m10s

This commit is contained in:
OoO
2026-05-31 20:56:14 +08:00
parent 89d8c454bb
commit f3a3cfe52a
8 changed files with 52 additions and 6 deletions

View File

@@ -39,9 +39,14 @@ def test_external_tool_bridge_pages_are_diagnostic_not_blank():
assert "external-tool-diagnostics" in template
assert "external-tool-action-grid" in template
assert "def webcrumbs_status()" in route_source
assert "@system_public_bp.route('/api/webcrumbs/marketplace-host-data')" in route_source
assert "def webcrumbs_marketplace_host_data_api()" in route_source
assert "build_webcrumbs_seed_data(limit=limit)" in route_source
assert "'allowed_match_contract': 'exact/total_price/price_alert_exact'" in route_source
assert "def webcrumbs_asset_proxy(asset_path)" in route_source
assert "WEBCRUMBS_ASSET_ALLOWED_PREFIXES" in route_source
assert "Webcrumbs 共用 UI Runtime" in service_source
assert "def build_webcrumbs_seed_data(limit: int = 5)" in service_source
assert "build_webcrumbs_marketplace_host_data" in service_source
assert "plugin_previews" in service_source
assert "finance.market-ticker-strip/0.1.0" in service_source

View File

@@ -65,3 +65,19 @@ def test_webcrumbs_host_data_uses_empty_state_without_risks(monkeypatch):
assert payload["marketSnapshot"][0]["freshness_status"] == "no_current_exact_risk"
assert payload["aiCandidate"]["release_status"] == "blocked"
assert "非同款、單位價或變體候選" in payload["aiCandidate"]["thesis"]
def test_webcrumbs_seed_data_fallback_does_not_expose_demo_values(monkeypatch):
from services import external_tool_payload_service as payload_service
def boom(limit):
raise RuntimeError("db unavailable")
monkeypatch.setattr(payload_service, "build_webcrumbs_marketplace_host_data", boom)
payload = payload_service.build_webcrumbs_seed_data(limit=5)
assert payload["marketSnapshot"][0]["freshness_status"] == "diagnostic_unavailable"
assert payload["aiCandidate"]["release_status"] == "blocked"
assert "fallback demo" in payload["aiCandidate"]["thesis"]
assert "TAIEX" not in str(payload)