← 返回导航

通知渠道模块表结构

ntc_channels — 渠道配置(每平台一行)

字段 类型 说明
id varchar(36) PK
platform varchar(20) wecom / dingtalk / feishu,唯一
company_name varchar(120) 企业名称(平台侧)
app_config text JSON:凭证与基础信息,secret 字段加密存储(Fernet 对称加密,密钥经 settings 环境变量注入)
scenes text JSON:启用的推送场景清单
enabled bool 渠道总开关
verify_status varchar(20) unverified / ok / failed
last_verified_at datetime 最近一次验证时间
审计字段 — created_by/updated_by/created_at/updated_at

ntc_webhooks — 群机器人

字段 类型 说明
id varchar(36) PK
platform varchar(20) 平台
group_name varchar(120) 群名称
webhook_url text 完整 webhook(含 key/token),加密存储
security_mode varchar(20) sign(加签)/ keyword(关键词)/ none
security_secret text 加签密钥或关键词,加密存储
scenes text JSON:该群接收的推送内容范围
enabled bool
verify_status varchar(20) unverified / ok / failed
软删+审计 — 复用全局 Mixin

ntc_identities — 成员绑定

字段 类型 说明
id varchar(36) PK
user_id varchar(36) 系统用户 iam_users.id
platform varchar(20) 平台
platform_user_id varchar(80) 企微 userid / 钉钉 userid / 飞书 open_id
match_method varchar(20) auto_mobile(手机号自动)/ manual
bound_at datetime
唯一约束 (user_id, platform) 每用户每平台一条

ntc_send_logs — 发送记录

字段 类型 说明
id varchar(36) PK
idempotency_key varchar(255) 唯一 通知 id + 通道标识,防重复投递
platform varchar(20)
channel_type varchar(20) app / webhook
webhook_id varchar(36) 可空 群机器人时记录
target varchar(200) 接收方摘要(姓名/群名,不存明文敏感 ID)
title varchar(200) 消息标题/摘要
notification_id varchar(36) 可空 来源站内通知
status varchar(20) pending / sent / failed / skipped_no_permission
error_code varchar(60) 可空 平台错误码
retry_count int
sent_at datetime 可空
索引 (platform, status, created_at) 记录保留 90 天(定时清理)

场景路由(配置入系统配置,不建表)

通知场景 → 通道的映射存入系统配置(sys_configs,key=ntc.scene_routes)。场景 key = {biz_module}.{biz_type}(站内通知已有字段,业务侧无需打标;无 biz 三元组的通知回退 {notification_type})。结构示例:

{
  "work_order.workflow_approval": {"channels": [{"type": "app", "platform": "feishu"}]},
  "notification.system": {"channels": [{"type": "webhook", "webhook_id": "..."}]}
}