feat(risk): show live countdown on freeze status badges
Expose freeze_until_ms from risk API and tick hub/instance badges with remaining 1h/4h/daily time. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -529,6 +529,7 @@ STATIC_DIR = DIR / "static"
|
||||
_REPO_STATIC = _REPO_ROOT / "static"
|
||||
_AI_REVIEW_RENDER_JS = _REPO_STATIC / "ai_review_render.js"
|
||||
_ACCOUNT_RISK_BADGE_CSS = _REPO_STATIC / "account_risk_badge.css"
|
||||
_ACCOUNT_RISK_BADGE_JS = _REPO_STATIC / "account_risk_badge.js"
|
||||
|
||||
|
||||
@app.get("/assets/account_risk_badge.css")
|
||||
@@ -542,6 +543,17 @@ def hub_account_risk_badge_css():
|
||||
)
|
||||
|
||||
|
||||
@app.get("/assets/account_risk_badge.js")
|
||||
def hub_account_risk_badge_js():
|
||||
"""与四所实例共用仓库根 static/account_risk_badge.js。"""
|
||||
if not _ACCOUNT_RISK_BADGE_JS.is_file():
|
||||
raise HTTPException(status_code=404, detail="account_risk_badge.js not found")
|
||||
return FileResponse(
|
||||
str(_ACCOUNT_RISK_BADGE_JS),
|
||||
media_type="application/javascript; charset=utf-8",
|
||||
)
|
||||
|
||||
|
||||
@app.get("/assets/ai_review_render.js")
|
||||
def hub_ai_review_render_js():
|
||||
"""与四所实例共用仓库根 static/ai_review_render.js(须在 /assets mount 之前注册)。"""
|
||||
|
||||
@@ -514,6 +514,7 @@
|
||||
|
||||
function formatRiskStatusBadge(riskStatus) {
|
||||
if (!riskStatus || typeof riskStatus !== "object") return "";
|
||||
if (window.AccountRiskBadge) return AccountRiskBadge.formatBadgeHtml(riskStatus, esc);
|
||||
const st = riskStatus.status || "normal";
|
||||
const label = esc(riskStatus.status_label || "正常");
|
||||
const title = esc(riskStatus.reason || "");
|
||||
@@ -4469,4 +4470,5 @@
|
||||
setActiveNav();
|
||||
});
|
||||
});
|
||||
if (window.AccountRiskBadge) AccountRiskBadge.startTicker();
|
||||
})();
|
||||
|
||||
@@ -16,7 +16,8 @@
|
||||
<link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600&family=Orbitron:wght@500;600;700&display=swap" rel="stylesheet" media="print" onload="this.media='all'" />
|
||||
<noscript><link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600&family=Orbitron:wght@500;600;700&display=swap" rel="stylesheet" /></noscript>
|
||||
<link rel="stylesheet" href="/assets/app.css?v=20260618-macro-calendar" />
|
||||
<link rel="stylesheet" href="/assets/account_risk_badge.css?v=1" />
|
||||
<link rel="stylesheet" href="/assets/account_risk_badge.css?v=3" />
|
||||
<script src="/assets/account_risk_badge.js?v=1"></script>
|
||||
<link rel="stylesheet" href="/assets/dashboard.css?v=20260612-dash-monitor-count" />
|
||||
</head>
|
||||
<body>
|
||||
@@ -689,6 +690,6 @@
|
||||
<script src="/assets/dashboard.js?v=20260612-dash-monitor-count"></script>
|
||||
<script src="/assets/ai_review_render.js?v=3"></script>
|
||||
<script src="/assets/time_close_ui.js?v=2"></script>
|
||||
<script src="/assets/app.js?v=20260618-macro-calendar"></script>
|
||||
<script src="/assets/app.js?v=20260618-risk-countdown"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user