sage_datamart/scripts/load_path.py
yumoqing 05584d8871 feat: 实时数据Dashboard+客户/分销商角色视图
- 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路径
2026-07-21 12:03:28 +08:00

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")