""" 热点雷达模块 — 独立权限注册脚本 在 Sage 环境中执行: python scripts/load_path.py """ import os, sys, subprocess # 查找 Sage 根目录 (从当前模块位置推断) def find_sage_root(): for candidate in [ os.path.expanduser('~/repos/sage'), os.path.expanduser('~/sage'), os.path.expanduser('~/py/sage'), ]: if os.path.isdir(os.path.join(candidate, 'py3', 'bin')): return candidate # Fallback: 通过导入路径查找 try: import load_path as _ # Sage 自己的 load_path.py sage_root = os.path.dirname(os.path.abspath(_.__file__)) return sage_root except ImportError: pass print('ERROR: Sage root not found. Set SAGE_ROOT env var.') sys.exit(1) SAGE_ROOT = os.environ.get('SAGE_ROOT', find_sage_root()) PY = os.path.join(SAGE_ROOT, 'py3', 'bin', 'python') SET_ROLE_PERM = os.path.join(SAGE_ROOT, 'set_role_perm.py') MOD = 'hotspot' PATHS_LOGINED = [ f'/{MOD}', f'/{MOD}/index.ui', f'/{MOD}/stats.dspy', f'/{MOD}/fetch_now.dspy', f'/{MOD}/analyze.dspy', # 6 张表的 CRUD f'/{MOD}_source', f'/{MOD}_source/%', f'/{MOD}_schedule', f'/{MOD}_schedule/%', f'/{MOD}_fetch_log', f'/{MOD}_fetch_log/%', f'/{MOD}_item', f'/{MOD}_item/%', f'/{MOD}_analysis', f'/{MOD}_analysis/%', f'/{MOD}_alert', f'/{MOD}_alert/%', ] def set_perm(role, path): env = os.environ.copy() env['SAGE_RBAC_DB'] = 'sage' subprocess.run( [PY, SET_ROLE_PERM, role, path], cwd=SAGE_ROOT, capture_output=True, env=env ) def main(): total = 0 for p in PATHS_LOGINED: set_perm('logined', p) total += 1 print(f'Registered {total} hotspot paths') print('Note: restart Sage for permissions to take effect') if __name__ == '__main__': main()