Commit Graph

5 Commits

Author SHA1 Message Date
ryan 3251831118 feat(钉钉通知): 增强标题生成逻辑以优先使用内容首行
Changes:
* 新增 dingtalkTitle 函数,优先使用内容的第一行作为标题,若内容为空则回退到默认标题
* 更新 Send 方法以使用新的标题生成逻辑
* 添加单元测试以验证标题生成的正确性
2026-08-28 10:30:52 +08:00
ryan 219a850d93 fix(钉钉通知): 修复 Markdown 消息换行被折叠导致排版错乱的问题
Motivation:
钉钉 Markdown 渲染时会将单个换行符折叠为空格,导致推送的通知内容被压缩成一行,严重影响消息可读性。

Changes:

* 发送前将消息正文中的单个换行统一转换为段落分隔(\n\n),确保模板换行在钉钉中正确渲染
* 归一化 \r\n 与 \r 换行,并合并已有连续换行,避免产生多余空行
* 新增换行转换逻辑的单元测试
2026-08-27 16:58:41 +08:00
ryan c7e154d7cc feat(钉钉通道): 支持仅使用 access_token 配置钉钉机器人
Motivation:
钉钉机器人的 webhook 前缀固定不变,要求用户填写完整 URL 冗余且容易出错。简化通道配置项,降低接入配置成本,同时保证存量配置不受影响。

Changes:

* 钉钉通道配置改用 access_token,webhook 前缀由内部固定拼接
* 保留对旧 webhook_url 配置的兼容,access_token 存在时优先生效
* 新增 webhook 地址解析逻辑的单元测试,覆盖优先级与回退场景
* 同步更新 README、HTTP 请求示例及设计文档中的配置示例
* E2E 测试改用 E2E_DINGTALK_ACCESS_TOKEN 环境变量并按新格式创建通道
2026-08-19 15:14:38 +08:00
ryan 39f3774940 feat: 配置列表分页与钉钉机器人分钟级排队限流
统一 sources/templates/channels/rules 列表为分页响应,避免配置增多时全量返回;按钉钉 access_token 限制每分钟发送并在超限时等待下一分钟,降低触发官方封禁风险。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-10 00:34:26 +08:00
ryan 414c8c7cbf feat: channel adapters — dingtalk, wecom, bark 2026-06-27 13:15:57 +08:00