feat: Refactor DpmOverlays to use ShowCard for rendering cards and add ToolStatusToast for operation status notifications
- Moved card rendering logic from DpmOverlays to a new ShowCard component for better reusability. - Introduced ToolStatusToast to display real-time operation statuses in the top right corner. - Updated PageHeader to conditionally render credits based on the current path. - Modified PromptPanel to change tool names and update prompt titles. - Enhanced ScreenLayout to include ToolStatusToast. - Updated styles for new components and adjusted existing styles for consistency. - Implemented statusBus utility for dispatching tool status events. - Updated useMqttControl to integrate tool status notifications during navigation and card display actions.
This commit is contained in:
@@ -12,6 +12,12 @@ from datetime import datetime
|
||||
log = logging.getLogger("dpm.tools")
|
||||
|
||||
|
||||
def _trunc(s, n=800):
|
||||
"""日志用截断:超长内容只留前 n 字并标注总长。"""
|
||||
s = str(s)
|
||||
return s if len(s) <= n else s[:n] + f"...(共{len(s)}字)"
|
||||
|
||||
|
||||
# ── 工具实现 ────────────────────────────────────────────────────────────
|
||||
|
||||
def _get_park_overview(args):
|
||||
@@ -127,7 +133,8 @@ def exec_tool(name: str, args: dict):
|
||||
return json.dumps({"error": f"未知工具: {name}"}, ensure_ascii=False)
|
||||
try:
|
||||
result = t["fn"](args or {})
|
||||
log.info("tools: %s args=%s -> %s", name, json.dumps(args, ensure_ascii=False)[:120], str(result)[:120])
|
||||
log.info("tools: 执行工具 %s args=%s", name, json.dumps(args, ensure_ascii=False))
|
||||
log.info("tools: 结果 -> %s", _trunc(result, 1000))
|
||||
return result
|
||||
except Exception as e: # noqa: BLE001
|
||||
log.error("tools: %s 执行失败 %s", name, e, exc_info=True)
|
||||
|
||||
Reference in New Issue
Block a user