WechatOnCloud/bridge/woc_bridge/models/status.py
Kris ed2ee086de refactor: 重构UI操作调度,引入优先级调度与监控
主要变更:
1. 新增UIActionScheduler实现优先级UI任务调度,支持CRITICAL/HIGH/NORMAL/LOW四级优先级
2. 替换原有SendQueue为UIActionScheduler,统一所有UI操作的调度逻辑
3. 为截图、登录、重启等API添加调度器封装,支持超时、限流与fast-fail机制
4. 新增Prometheus监控指标,统计UI任务执行、等待耗时、超时、限流与快速失败情况
5. 为QrCapture添加命令执行超时保护,避免X11操作卡死
6. 扩展StatusResponse与状态接口,暴露调度器指标
7. 新增完整的单元测试覆盖调度器功能
8. 为看门狗注入调度器,实现kill前队列清空与快速失败窗口
2026-07-18 03:43:28 +08:00

57 lines
3.1 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""状态域模型bridge 状态响应。"""
from __future__ import annotations
from typing import Optional
from pydantic import BaseModel, Field
from woc_bridge.models.login import LoginState
# ---------------------------------------------------------------------------
# 状态接口GET /api/status
# ---------------------------------------------------------------------------
class StatusResponse(BaseModel):
"""bridge 状态响应。
新增字段1.1.0
- db_error_codeDB 不可达时的具体原因encrypted / not_found / unreadable
db_accessible=true 时为 None
- send_queue_pending发送队列当前积压任务数客户端据此决定是否退避
- media_supported图片/文件发送是否已实现真实传输(与 BRIDGE_CAPABILITIES
中 image_send/file_send 同步)
- bridge_capabilities当前 bridge 支持的能力集合,客户端据此协商
- ui_schedulerUI 调度器指标(仅 UIActionScheduler 实例才有,含
executed_total/executed_by_priority/pending_count 等)
"""
bridge_version: str = Field(description="bridge 版本号")
wechat_running: bool = Field(description="微信进程是否运行")
wechat_window_found: bool = Field(description="是否找到微信窗口")
login_state: LoginState = Field(description="登录态")
db_accessible: bool = Field(description="微信本地 DB 是否可读")
db_error_code: Optional[str] = Field(
default=None,
description="DB 不可达原因not_found / unreadable / encrypted_no_key / encrypted_key_ok / key_extract_failed / need_init / init_in_progress / key_invaliddb_accessible=true 时为 None",
)
init_in_progress: bool = Field(default=False, description="是否正在进行后台 DB 初始化(密钥提取/预解密)")
init_progress_pct: Optional[float] = Field(default=None, description="初始化进度百分比 0-100")
init_message: Optional[str] = Field(default=None, description="初始化阶段描述")
current_wxid: str = Field(default="", description="当前登录 wxid未登录时为空")
current_nickname: str = Field(default="", description="当前登录昵称,未登录时为空")
uptime_seconds: float = Field(description="bridge 已运行秒数")
display: str = Field(description="当前 DISPLAY 环境变量值")
max_batch_size: int = Field(default=50, description="客户端单次拉取建议上限")
poll_interval_ms: int = Field(default=2000, description="客户端轮询建议间隔(毫秒)")
send_queue_pending: int = Field(default=0, description="发送队列积压任务数")
media_supported: bool = Field(default=False, description="图片/文件真实传输是否已实现")
bridge_capabilities: list[str] = Field(
default_factory=list,
description="bridge 支持的能力集合,如 ['text_send','image_send','long_poll']",
)
ui_scheduler: Optional[dict] = Field(
default=None,
description="UI 调度器指标(仅 UIActionScheduler 实例才有,含 executed_total/executed_by_priority/pending_count 等)",
)