- Add hotspot/init.py: load_hotspot() registers run_fetch/run_analysis/get_stats on ServerEnv - Rewrite .dspy files: only import json, use get_sor_context + env.*() delegation - Update db.py/engine.py/analysis.py: accept optional sor parameter for DSPY context - Add scripts/load_path.py: per-module RBAC permission registration - Follows sage-dspy-development + rbac-permission-initialization-pattern skills
71 lines
1.8 KiB
Python
71 lines
1.8 KiB
Python
"""
|
|
热点雷达模块 — 独立权限注册脚本
|
|
在 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()
|