feat(v0.4): TUI 系统监控面板 + 插件状态面板
v0.4.1 系统监控面板: - 复用共享 SystemInfoCollector (TUI + Web面板同一数据源) - CPU/MEM 彩色进度条 + 网络实时速率 - 2 秒刷新,set_interval 驱动 v0.4.2 插件状态面板: - 展示已加载插件的名称/版本/命令数 - 3 秒刷新,PluginService 延迟注入 SystemInfoCollector: - 注册为共享服务 (sys_collector) - Web panel status.py 优先从 service_manager 获取 - 零重复数据采集 TUI 布局升级: 3行 → 4行 (monitor + log + message + input) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -47,8 +47,21 @@ async def get_framework(req):
|
||||
return web.json_response({"error": "Missing"}, status=500)
|
||||
return web.json_response(_get_framework_data(sm))
|
||||
|
||||
def _get_collector(req):
|
||||
"""获取共享的 SystemInfoCollector(优先从 service_manager),fallback 到模块级实例"""
|
||||
sm = req.app.get('service_manager')
|
||||
if sm:
|
||||
try:
|
||||
shared = sm.get_service("sys_collector")
|
||||
if shared:
|
||||
return shared
|
||||
except Exception:
|
||||
pass
|
||||
return collector
|
||||
|
||||
async def get_system(req):
|
||||
return web.json_response(collector.get_all())
|
||||
c = _get_collector(req)
|
||||
return web.json_response(c.get_all())
|
||||
|
||||
async def sys_ws_handler(req):
|
||||
"""WebSocket push endpoint: system+framwork stats every 2s (no logging per message)"""
|
||||
@@ -60,9 +73,10 @@ async def sys_ws_handler(req):
|
||||
"""Send one snapshot to this client (silent on error)"""
|
||||
try:
|
||||
sm = req.app.get('service_manager')
|
||||
c = _get_collector(req)
|
||||
payload = json.dumps({
|
||||
"type": "sys",
|
||||
"system": collector.get_all(),
|
||||
"system": c.get_all(),
|
||||
"framework": _get_framework_data(sm)
|
||||
}, ensure_ascii=False)
|
||||
if not ws.closed:
|
||||
|
||||
Reference in New Issue
Block a user