Compare commits
No commits in common. "89a1e1eb599d299310655215cdb7055203ec0833" and "6ae20954f3fcbef8d5512a25e769bc80180bc795" have entirely different histories.
89a1e1eb59
...
6ae20954f3
4
.gitignore
vendored
4
.gitignore
vendored
@ -1,4 +0,0 @@
|
|||||||
*.egg-info/
|
|
||||||
__pycache__/
|
|
||||||
*.pyc
|
|
||||||
.pytest_cache/
|
|
||||||
45
README.md
45
README.md
@ -1,45 +1,2 @@
|
|||||||
# Dashboard for Sage
|
# bashboard_for_sage
|
||||||
|
|
||||||
Sage 数据看板模块,基于 bricks-framework 的 ECharts 扩展控件实现。
|
|
||||||
|
|
||||||
## 功能
|
|
||||||
|
|
||||||
1. **今日调用笔数和交易金额** - 每10秒自动刷新 llmusage 数据
|
|
||||||
2. **用户总数** - 系统中注册用户数
|
|
||||||
3. **当前并发用户数** - 近5分钟内有活跃记录的用户数
|
|
||||||
4. **Top 3 模型排名** - 按当天调用数量和交易金额排名
|
|
||||||
|
|
||||||
## 目录结构
|
|
||||||
|
|
||||||
```
|
|
||||||
dashboard_for_sage/
|
|
||||||
├── dashboard_for_sage/
|
|
||||||
│ ├── __init__.py
|
|
||||||
│ └── init.py # 模块注册
|
|
||||||
├── wwwroot/
|
|
||||||
│ ├── index.ui # 主看板页面
|
|
||||||
│ ├── menu.ui # 菜单
|
|
||||||
│ ├── api/
|
|
||||||
│ │ ├── get_today_usage.dspy # 今日用量API
|
|
||||||
│ │ ├── get_user_stats.dspy # 用户统计API
|
|
||||||
│ │ └── get_top_models.dspy # Top模型API
|
|
||||||
│ └── scripts/
|
|
||||||
│ └── dashboard_refresh.js # 10秒自动刷新脚本
|
|
||||||
├── pyproject.toml
|
|
||||||
└── build.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
## 部署
|
|
||||||
|
|
||||||
```bash
|
|
||||||
cd ~/repos/dashboard_for_sage
|
|
||||||
bash build.sh
|
|
||||||
# 设置RBAC权限(在生产服务器上执行)
|
|
||||||
cd ~/repos/sage && ./py3/bin/python set_role_perm.py logined /dashboard_for_sage/%
|
|
||||||
# 重启Sage
|
|
||||||
./stop.sh && ./start.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
## 访问地址
|
|
||||||
|
|
||||||
`/dashboard_for_sage/index.ui`
|
|
||||||
|
|||||||
24
build.sh
24
build.sh
@ -2,26 +2,14 @@
|
|||||||
set -e
|
set -e
|
||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||||
MODULE_NAME="dashboard_for_sage"
|
SAGE_ROOT="$(cd "$SCRIPT_DIR/../.." 2>/dev/null && pwd || echo "$SCRIPT_DIR")"
|
||||||
|
VENV_PYTHON="$SAGE_ROOT/py3/bin/python"
|
||||||
# Try to find Sage root
|
|
||||||
for candidate in "$SCRIPT_DIR/../.." "$SCRIPT_DIR/../../../sage" "$HOME/repos/sage"; do
|
|
||||||
if [ -d "$candidate/wwwroot" ] && [ -d "$candidate/py3/bin" ]; then
|
|
||||||
SAGE_ROOT="$(cd "$candidate" && pwd)"
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
if [ -z "$SAGE_ROOT" ]; then
|
|
||||||
echo "ERROR: Cannot find Sage root. Run this script from within a Sage environment."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
VENV_PIP="$SAGE_ROOT/py3/bin/pip"
|
VENV_PIP="$SAGE_ROOT/py3/bin/pip"
|
||||||
WWWROOT="$SAGE_ROOT/wwwroot"
|
WWWROOT="$SAGE_ROOT/wwwroot"
|
||||||
|
|
||||||
|
MODULE_NAME="dashboard_for_sage"
|
||||||
|
|
||||||
echo "=== Building $MODULE_NAME ==="
|
echo "=== Building $MODULE_NAME ==="
|
||||||
echo "Sage root: $SAGE_ROOT"
|
|
||||||
|
|
||||||
# Install the module
|
# Install the module
|
||||||
cd "$SCRIPT_DIR"
|
cd "$SCRIPT_DIR"
|
||||||
@ -32,7 +20,7 @@ MODULE_WWWROOT="$SCRIPT_DIR/wwwroot"
|
|||||||
SAGE_MODULE_WWWROOT="$WWWROOT/$MODULE_NAME"
|
SAGE_MODULE_WWWROOT="$WWWROOT/$MODULE_NAME"
|
||||||
|
|
||||||
echo "Linking wwwroot..."
|
echo "Linking wwwroot..."
|
||||||
mkdir -p "$SAGE_MODULE_WWWROOT/api" "$SAGE_MODULE_WWWROOT/scripts"
|
mkdir -p "$SAGE_MODULE_WWWROOT"
|
||||||
|
|
||||||
# Link all .ui files
|
# Link all .ui files
|
||||||
for f in "$MODULE_WWWROOT"/*.ui; do
|
for f in "$MODULE_WWWROOT"/*.ui; do
|
||||||
@ -40,11 +28,13 @@ for f in "$MODULE_WWWROOT"/*.ui; do
|
|||||||
done
|
done
|
||||||
|
|
||||||
# Link api/ directory
|
# Link api/ directory
|
||||||
|
mkdir -p "$SAGE_MODULE_WWWROOT/api"
|
||||||
for f in "$MODULE_WWWROOT/api"/*.dspy; do
|
for f in "$MODULE_WWWROOT/api"/*.dspy; do
|
||||||
[ -f "$f" ] && ln -sf "$f" "$SAGE_MODULE_WWWROOT/api/"
|
[ -f "$f" ] && ln -sf "$f" "$SAGE_MODULE_WWWROOT/api/"
|
||||||
done
|
done
|
||||||
|
|
||||||
# Link scripts/ directory
|
# Link scripts/ directory
|
||||||
|
mkdir -p "$SAGE_MODULE_WWWROOT/scripts"
|
||||||
for f in "$MODULE_WWWROOT/scripts"/*.js; do
|
for f in "$MODULE_WWWROOT/scripts"/*.js; do
|
||||||
[ -f "$f" ] && ln -sf "$f" "$SAGE_MODULE_WWWROOT/scripts/"
|
[ -f "$f" ] && ln -sf "$f" "$SAGE_MODULE_WWWROOT/scripts/"
|
||||||
done
|
done
|
||||||
|
|||||||
@ -1,7 +0,0 @@
|
|||||||
Metadata-Version: 2.4
|
|
||||||
Name: dashboard_for_sage
|
|
||||||
Version: 1.0.0
|
|
||||||
Summary: Dashboard module for Sage - LLM usage and user statistics
|
|
||||||
Requires-Python: >=3.8
|
|
||||||
Requires-Dist: sqlor
|
|
||||||
Requires-Dist: bricks_for_python
|
|
||||||
@ -1,9 +0,0 @@
|
|||||||
README.md
|
|
||||||
pyproject.toml
|
|
||||||
dashboard_for_sage/__init__.py
|
|
||||||
dashboard_for_sage/init.py
|
|
||||||
dashboard_for_sage.egg-info/PKG-INFO
|
|
||||||
dashboard_for_sage.egg-info/SOURCES.txt
|
|
||||||
dashboard_for_sage.egg-info/dependency_links.txt
|
|
||||||
dashboard_for_sage.egg-info/requires.txt
|
|
||||||
dashboard_for_sage.egg-info/top_level.txt
|
|
||||||
@ -1 +0,0 @@
|
|||||||
|
|
||||||
@ -1,2 +0,0 @@
|
|||||||
sqlor
|
|
||||||
bricks_for_python
|
|
||||||
@ -1 +0,0 @@
|
|||||||
dashboard_for_sage
|
|
||||||
Loading…
x
Reference in New Issue
Block a user