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:
qinglong
2026-06-13 11:05:56 +08:00
parent f402af58d0
commit 2d0a37ba19
3 changed files with 144 additions and 11 deletions
+14 -1
View File
@@ -10,6 +10,7 @@ import argparse
from services.project_engine import ProjectEngine
from services.pyenv_manager import PyEnvManager
from services.proxy_service import ProxyService
from services.web_panel.utils.system_info import SystemInfoCollector
import os
from pathlib import Path
@@ -62,6 +63,10 @@ class SenSuFramework:
# 2.5 自动启动脚本 (日志服务就绪后)
await init_service.start_auto_scripts()
# 2.6 系统信息采集器 (共享实例,TUI + Web面板共用)
sys_collector = SystemInfoCollector()
self.service_manager.register_service("sys_collector", sys_collector)
# 3. 核心桥接服务
core_bridge = CoreBridge()
await core_bridge.start()
@@ -94,7 +99,10 @@ class SenSuFramework:
self.service_manager.register_service("tui", self._create_fallback_tui())
else:
try:
tui_service = TuiService(base_config, log_service, command_service)
tui_service = TuiService(
base_config, log_service, command_service,
sys_collector=sys_collector,
)
await tui_service.start()
self.service_manager.register_service("tui", tui_service)
logger.info("TUI服务启动成功")
@@ -122,6 +130,11 @@ class SenSuFramework:
await plugin_service.start()
self.service_manager.register_service("plugin", plugin_service)
# 将 plugin_service 注入 TUI 插件状态面板
tui = self.service_manager.get_service("tui")
if hasattr(tui, 'tui_app') and tui.tui_app:
tui.tui_app.plugin_panel.set_plugin_service(plugin_service)
# === 🟢 新增: 11.5 Web管理面板初始化 (必须在网络服务启动前!) ===
# 原因: aiohttp 启动后会“冻结”路由器,之后再挂载子应用会报错
logger.info("> 初始化 Web 管理面板 中...")