ForcePilot/backend/package/yuxi/channels/plugins/dingtalk/_constants.py
Kris c88afb79ce feat(dingtalk): 新增钉钉渠道插件完整实现
实现钉钉企业机器人全渠道能力,包含会话解析、消息收发、富消息卡片、命令适配、身份解析、状态回传、健康探测等功能,提供完整的Stream/HTTP双模式事件接入支持,遵循单真相源设计原则,以manifest.json作为配置唯一依据。
2026-07-08 22:55:00 +08:00

79 lines
3.1 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.

"""钉钉渠道插件共享常量。
集中定义在多个模块间共享的配置默认值、依赖标识与渠道标识,避免重复
定义导致的不一致风险P2-3 常量去重)。
仅汇集真正跨模块共享的常量;仅单一模块使用的常量仍保留在各自模块内。
所有常量值需与 ``manifest.json`` 中 ``config_schema`` 的 ``default`` 字段
及 ``resource_quota`` 保持一致F-03 manifest 单真相源),本模块的常量
作为 ConfigPort 未命中时的本地回退默认值。
依赖方向:仅标准库,不 import 任何框架层或同插件模块,避免循环依赖。
"""
from __future__ import annotations
# ---------------------------------------------------------------------------
# 渠道与依赖标识
# ---------------------------------------------------------------------------
# 渠道标识,用于 ConfigPort CHANNEL 作用域 target与 manifest.json
# channel_type / provides 对齐)
CHANNEL_TARGET = "dingtalk"
# 钉钉 API 依赖标识,统一用于 ``DependencyError.dep`` 字段
DINGTALK_API_DEP = "dingtalk_api"
# ---------------------------------------------------------------------------
# HTTP 客户端配置lifecycle 与 dingtalk_client 共享)
# ---------------------------------------------------------------------------
# HTTP 客户端默认超时(秒),对齐 manifest.json config_schema
# request_timeout_ms.default=30000
HTTP_TIMEOUT_SECONDS = 30.0
# HTTP 连接池最大连接数,对齐 manifest.json
# resource_quota.max_connections=50
HTTP_MAX_CONNECTIONS = 50
# HTTP 连接池 keepalive 连接数上限
HTTP_MAX_KEEPALIVE_CONNECTIONS = 10
# ---------------------------------------------------------------------------
# Stream 模式默认端点(与 manifest.json stream_endpoint_path.default 对齐)
# ---------------------------------------------------------------------------
# 钉钉 Stream 接入端点(由 /v1.0/gateway/connections/open 返回 WS connectionId
DEFAULT_STREAM_ENDPOINT_PATH = "/v1.0/gateway/connections/open"
# ---------------------------------------------------------------------------
# token 缓存与刷新策略
# ---------------------------------------------------------------------------
# token 缓存 key 前缀(完整 key: dingtalk:token:{client_id}
TOKEN_CACHE_KEY_PREFIX = "dingtalk:token:"
# token 提前刷新量(秒),对齐设计方案 §5.4(提前 300s 刷新)
TOKEN_REFRESH_LEAD_TIME_SEC = 300
# HTTP 模式签名时效窗口(秒),对齐设计方案 §3.360 分钟)
HTTP_SIGN_TIMESTAMP_TOLERANCE_SEC = 3600
# 钉钉互动卡片占位模板 IDv1 使用占位值,生产环境应从 account config 读取
# 或由 RichMessage.metadata["cardTemplateId"] 显式传入)
DEFAULT_CARD_TEMPLATE_ID = "DEFAULT_CARD_TEMPLATE"
__all__ = [
"CHANNEL_TARGET",
"DINGTALK_API_DEP",
"HTTP_TIMEOUT_SECONDS",
"HTTP_MAX_CONNECTIONS",
"HTTP_MAX_KEEPALIVE_CONNECTIONS",
"DEFAULT_STREAM_ENDPOINT_PATH",
"TOKEN_CACHE_KEY_PREFIX",
"TOKEN_REFRESH_LEAD_TIME_SEC",
"HTTP_SIGN_TIMESTAMP_TOLERANCE_SEC",
"DEFAULT_CARD_TEMPLATE_ID",
]