- Replace non-existent bricks.app.find_widget_by_id() with bricks.getWidgetById(id, bricks.app) - Replace widget.el.textContent with widget.set_text() method - Fix getBaseUrl() to handle /modulename paths (no .ui suffix) returning /undefined - Remove chart refresh from JS — use ChartBar's built-in refresh_period: 10 - Update index.ui ChartBar widget with refresh_period: 10 - Also fixed all find_widget_by_id references across skills: * bricks-framework SKILL.md (2 occurrences) * bricks-framework references: auto-refresh-dashboard.md, auto-refresh-pattern.md, bar.md, line.md, websocket.md * module-development-spec references: read-only-module-pattern.md * harnessed-module-development SKILL.md (2 occurrences) * harnessed-module-development references: reasoning-visualization.md, bricks-ui-pitfalls.md * rbac-permission-initialization-pattern references: websocket-debugging.md
Dashboard for Sage
Sage 数据看板模块,基于 bricks-framework 的 ECharts 扩展控件实现。
功能
- 今日调用笔数和交易金额 - 每10秒自动刷新 llmusage 数据
- 用户总数 - 系统中注册用户数
- 当前并发用户数 - 近5分钟内有活跃记录的用户数
- 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
部署
cd ~/repos/dashboard_for_sage
git pull
bash build.sh
# 设置RBAC权限(在生产服务器上执行)
cd ~/repos/sage && git pull
./py3/bin/python load_path.py
# 重启Sage
./stop.sh && ./start.sh
访问地址
/dashboard_for_sage/index.ui
Description
Languages
Python
48.1%
CSS
33%
JavaScript
16.3%
Shell
2.6%