- dashboards.py: 新增实时指标(直查llmusage,无ETL延迟) + 分销商专用API + scope过滤版 - init.py: 角色检测(_resolve_view),实时卡片J2函数,分销商API端点 - index.ui: 7个实时卡片(15s刷新)替换旧stat_*卡片 - 新增rt_card_*.ui(7个)+api端点(2个) - load_path.py: 注册新UI路径
49 lines
1.3 KiB
Python
49 lines
1.3 KiB
Python
#!/usr/bin/env python3
|
|
"""sage_datamart load_path — register RBAC permissions"""
|
|
import os, subprocess
|
|
|
|
MOD = "sage_datamart"
|
|
SAGE_ROOT = os.path.expanduser("~/repos/sage")
|
|
PYTHON = os.path.join(SAGE_ROOT, "py3", "bin", "python")
|
|
SET_PERM = os.path.join(SAGE_ROOT, "set_role_perm.py")
|
|
|
|
# cron endpoints — called via curl from localhost crontab, IP-checked in dspy
|
|
PATHS_ANY = [
|
|
f"/{MOD}/cron/etl_sync.dspy",
|
|
f"/{MOD}/cron/etl_aggregate.dspy",
|
|
f"/{MOD}/cron/etl_provider_cost.dspy",
|
|
|
|
]
|
|
|
|
PATHS_LOGINED = [
|
|
f"/{MOD}",
|
|
f"/{MOD}/index.ui",
|
|
f"/{MOD}/menu.ui",
|
|
f"/{MOD}/provider_roi.ui",
|
|
f"/{MOD}/api/%",
|
|
f"/{MOD}/stat_avg_ttft.ui",
|
|
f"/{MOD}/stat_success_rate.ui",
|
|
f"/{MOD}/stat_total_calls.ui",
|
|
f"/{MOD}/stat_total_users.ui",
|
|
f"/{MOD}/stat_fail_calls.ui",
|
|
f"/{MOD}/stat_today_usage.ui",
|
|
f"/{MOD}/stat_today_amount.ui",
|
|
f"/{MOD}/rt_card_calls.ui",
|
|
f"/{MOD}/rt_card_amount.ui",
|
|
f"/{MOD}/rt_card_users.ui",
|
|
f"/{MOD}/rt_card_active.ui",
|
|
f"/{MOD}/rt_card_online.ui",
|
|
f"/{MOD}/rt_card_success.ui",
|
|
f"/{MOD}/rt_card_fail.ui",
|
|
]
|
|
|
|
def run(role, path):
|
|
subprocess.run([PYTHON, SET_PERM, role, path], capture_output=True)
|
|
|
|
for p in PATHS_ANY:
|
|
run("any", p)
|
|
for p in PATHS_LOGINED:
|
|
run("logined", p)
|
|
|
|
print(f"[{MOD}] {len(PATHS_ANY)} any + {len(PATHS_LOGINED)} logined paths registered")
|