ForcePilot/backend/package/yuxi/channels/contract/dtos/command.py
Kris b88c0ae29e feat(channels): 批量新增多渠道网关限界上下文基础代码与契约
新增完整的 channels 限界上下文模块,包含契约层、领域核心层、应用服务、管道编排、插件体系、基础设施组合根等全层级代码,新增飞书与微信 iLink 渠道插件基础结构,补充各类 DTO、端口协议与领域服务实现。
2026-07-02 03:22:12 +08:00

101 lines
2.6 KiB
Python
Raw 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.

"""命令 DTO。
定义渠道命令注册与执行的不可变值对象,包括命令权限、命令 ID、渠道命令、
命令响应与命令结果。所有 DTO 均为 ``dataclass(frozen=True)``,仅依赖
标准库,用于命令插件注册与命令执行结果回传。
"""
from __future__ import annotations
from dataclasses import dataclass
from enum import StrEnum
class CommandPermission(StrEnum):
"""命令权限。
标识渠道命令的可见性与执行权限层级,用于命令注册时声明与执行时校验。
继承 ``str, Enum`` 以支持 JSON 序列化与字符串比较。
取值:
PRIVATE: 仅私聊可用。
GROUP: 仅群聊可用。
ADMIN: 仅管理员可用。
ALL: 所有场景可用。
"""
PRIVATE = "private"
GROUP = "group"
ADMIN = "admin"
ALL = "all"
@dataclass(frozen=True)
class CommandId:
"""命令 ID。
标识一条已注册的渠道命令的全局唯一 ID用于命令路由与审计关联。
字段:
value: 命令 ID 字符串。
"""
value: str
@dataclass(frozen=True)
class ChannelCommand:
"""渠道命令。
描述渠道命令的元信息,由命令插件声明,用于命令注册、权限校验与帮助
文档生成。
字段:
name: 命令名称。
description: 命令描述。
permission: 命令权限(默认 ALL
is_silent: 是否静默执行(不回显响应,默认 False
"""
name: str
description: str
permission: CommandPermission = CommandPermission.ALL
is_silent: bool = False
@dataclass(frozen=True)
class CommandResponse:
"""命令响应。
描述命令执行后返回给渠道的内容,支持指定内容类型与回复目标。
字段:
content: 响应内容。
content_type: 内容类型text | markdown | rich默认 text
target: 回复目标None 表示原会话。
is_silent: 是否静默(不回显,默认 False
"""
content: str
content_type: str = "text"
target: str | None = None
is_silent: bool = False
@dataclass(frozen=True)
class CommandResult:
"""命令结果。
描述命令执行的最终结果,携带命令名、是否静默与可选的响应内容,用于
管道下游决策是否回显与审计记录。
字段:
command: 命令名。
is_silent: 是否静默执行(默认 False
response: 命令响应(无响应时为 None
"""
command: str
is_silent: bool = False
response: CommandResponse | None = None