新增大量渠道适配器相关的协议、策略、工具类与基础设施代码,包括: 1. 多协议定义:认证、消息、配置、网关等核心接口 2. 策略模块:上下文、群聊、去重、防抖等业务策略 3. 工具集:重试、去重、文本分块、消息格式化等SDK工具 4. 基础设施:外部进程管理、事件广播、熔断机制等 5. 账户与管道系统:账户管理、消息处理管道实现 6. 运行时服务:状态收集、维护任务、日志等后台服务
53 lines
1.3 KiB
Python
53 lines
1.3 KiB
Python
from __future__ import annotations
|
|
|
|
import time
|
|
from collections import deque
|
|
from dataclasses import dataclass, field
|
|
|
|
|
|
@dataclass
|
|
class WsLogEntry:
|
|
conn_id: str
|
|
session_id: str
|
|
channel_id: str | None = None
|
|
account_id: str | None = None
|
|
address: str = ""
|
|
timestamp: float = field(default_factory=time.time)
|
|
action: str = ""
|
|
details: dict = field(default_factory=dict)
|
|
|
|
|
|
class WsLogger:
|
|
def __init__(self, max_entries: int = 1000):
|
|
self.entries: deque[WsLogEntry] = deque(maxlen=max_entries)
|
|
|
|
def log(
|
|
self,
|
|
*,
|
|
conn_id: str = "",
|
|
session_id: str = "",
|
|
channel_id: str | None = None,
|
|
account_id: str | None = None,
|
|
address: str = "",
|
|
action: str = "",
|
|
details: dict | None = None,
|
|
) -> None:
|
|
self.entries.append(
|
|
WsLogEntry(
|
|
conn_id=conn_id,
|
|
session_id=session_id,
|
|
channel_id=channel_id,
|
|
account_id=account_id,
|
|
address=address,
|
|
action=action,
|
|
details=details or {},
|
|
)
|
|
)
|
|
|
|
def recent(self, n: int = 100) -> list[WsLogEntry]:
|
|
entries = list(self.entries)
|
|
return entries[-n:]
|
|
|
|
def clear(self) -> None:
|
|
self.entries.clear()
|