feat: add carrier-aware signature retirement alerts
This commit is contained in:
@@ -1982,16 +1982,36 @@
|
||||
- 上述连接请求日志必须在认证响应返回前持久化,日志写入失败时不得把未经审计的连接当作认证成功。系统与操作日志列表继续直接显示`ipAddress`,并为`cmpp_connection.connect_requested`提供“查看详情”按钮,展示上述结构化参数。
|
||||
- 供应商通道的既有连接操作日志仍保留;客户入站连接使用`cmpp_downstream_connection`资源区分方向。本功能不改变CMPP认证算法、IP白名单、最大连接数或客户连接状态。
|
||||
|
||||
## 暂缓需求:通道支持运营商多选(2026-08-09)
|
||||
## 通道运营商多选与运营商级签名报备(2026-08-10,本地实现完成、待验收与分阶段发布)
|
||||
|
||||
- 本需求当前只记录、不实施,不改变现行`SmsChannel.carrier`单值模型、通道创建/编辑交互、通道组校验、发送选路、报备或生产数据;后续重新启动时必须另行完成影响评估、生产数据迁移方案和兼容发布计划。
|
||||
- 2026-08-09暂缓需求已重新纳入“签名清退预警”的前置设计,并已在本地完成兼容实现:`SmsChannel.carriers`保存运营商能力集合,通道管理、通道组校验、发送选路和签名报备均兼容运营商维度。当前修改仍未提交、未推送、未部署,生产数据和生产行为未改变;完整实施步骤和发布门禁见`docs/signature-retirement-alert-design.md`。
|
||||
- 目标交互为取消“移动、联通、电信、三网”四选一,将通道能力改为“移动、联通、电信”三个复选项,至少选择一个;同时勾选三个运营商等价于现行“三网”,允许只勾选其中两个运营商。
|
||||
- 该变化只作用于通道本体的运营商能力集合。`SmsChannelGroup.carrier`、`SmsChannelGroupItem.carrier`、`ChannelRouteRule.carrier`及短信号码实际运营商仍保持移动/联通/电信单值;一个通道只有在能力集合包含对应运营商时,才允许加入该运营商通道组并参与选路。
|
||||
- 同一通道勾选多个运营商时继续共用一个通道单价,不增加分运营商单价;如未来出现分运营商计价需求,必须另立需求并升级为通道运营商明细模型,不能在本需求中隐式扩展。
|
||||
- 完整、理想的报备模型为“签名 × 通道 × 运营商”,用于分别记录同一通道在不同运营商下的报备状态;该模型本期明确暂不设计、不实施,现有“签名 × 通道”报备任务及历史记录保持不变。未来启动运营商多选实施前,必须再次确认是否同步升级报备粒度,不得把一个运营商的报备结果无依据地复制为其他运营商结果。
|
||||
- 未来生产数据迁移原则为:`mobile→[mobile]`、`unicom→[unicom]`、`telecom→[telecom]`、`all→[mobile,unicom,telecom]`,已删除通道也要保留并迁移历史能力;不得根据当前通道组关联、通道名称或近期流量自动缩减旧`all`通道的能力范围。
|
||||
- 未来取消某个已勾选运营商时,如果该通道仍被对应运营商的活动通道组引用,后端必须返回真实影响并阻止保存,不得自动删除通道组成员、路由、报备任务或历史发送记录;新增运营商能力也不得自动加入通道组或自动视为报备通过。
|
||||
- 未来迁移必须采用向前兼容的分阶段发布:先增加新能力集合、回填并让后端兼容读取,再开放多选写入。出现两个运营商组合后,旧单值代码无法无损解释该数据,回滚下限必须是已经支持新集合的兼容版本,不能直接回滚到仅识别`mobile/unicom/telecom/all`的旧版本。
|
||||
- 签名报备模型同步从“签名 × 通道”升级为“签名 × 通道 × 运营商”。继续以`ChannelSignatureReportTask`保存当前事实、以`ChannelSignatureReportRecord`保存状态轨迹,不另建重复事实表;任务进入`approved`时记录当前连续通过时间,离开通过状态时结束该连续周期。`reportType`和`drainageItemId`只是共享表技术字段,不属于本需求维度;本需求不改造引流信息报备。
|
||||
- 历史通道级任务进入人工拆分弹窗时,三个运营商状态必须默认未选择,不得继承原通道级状态;操作人必须逐项选择真实状态,选择“已通过”时必须填写该运营商真实通过时间,前后端都要阻止缺失或非法时间提交。
|
||||
- 生产数据迁移原则为:`mobile→[mobile]`、`unicom→[unicom]`、`telecom→[telecom]`、`all→[mobile,unicom,telecom]`,已删除通道也要保留并迁移历史能力;不得根据当前通道组关联、通道名称或近期流量自动缩减旧`all`通道的能力范围。对历史空值使用旧系统实际兼容口径回填为移动,禁止回填为空集合或伪造为三网。
|
||||
- 取消某个已勾选运营商时,如果该通道仍被对应运营商的活动通道组引用,后端必须返回真实影响并阻止保存,不得自动删除通道组成员、路由、报备任务或历史发送记录;新增运营商能力也不得自动加入通道组或自动视为报备通过。
|
||||
- 发布迁移必须采用向前兼容的分阶段顺序:先增加新能力集合、回填并让后端兼容读取,再开放多选写入。出现两个运营商组合后,旧单值代码无法无损解释该数据,回滚下限必须是已经支持新集合的兼容版本,不能直接回滚到仅识别`mobile/unicom/telecom/all`的旧版本。
|
||||
|
||||
## 签名清退预警(2026-08-10,本地实现完成、待验收与分阶段发布)
|
||||
|
||||
- 企业预警按“企业签名 × 运营商”每天检测,通道预警按“签名 × 通道 × 运营商”每天检测。运营商只要存在当前真实报备通过任务就进入对应监控名单,不等待三网全部成功;历史通道级结果未按运营商确认前不得伪造运营商通过事实。
|
||||
- 企业预警支持移动、联通、电信通用X天/Y条规则和企业应用特殊规则,特殊规则优先;通道预警支持通用规则和通道特殊规则,特殊规则优先。规则修改从下一检测日生效,预警快照保存命中的规则版本和阈值。
|
||||
- 清退活跃量按至少有一次上游接受的业务短信去重统计。企业维度同一业务短信只计一次;通道维度按`messageRecordId + channelId`去重,同一通道断连、超时或重试产生多次提交只计一次,切换到不同通道后各通道分别计一次。提交尝试、上游接受和最终送达必须分开展示,不把`SubmitResp status=0`称为最终送达成功。
|
||||
- 每天按北京时间完整自然日检测`T-X`至`T-1`。当前连续报备通过时间不足X个完整日时不预警;恢复达标后关闭当前预警周期,以后再次低于阈值形成新周期。每日检测必须以数据库唯一维度保证幂等,多实例或重启不得重复生成消息或Webhook。
|
||||
- 自动任务每天北京时间04:00生成检测快照并冻结当日规则版本、标题和消息正文,北京时间08:00才生成站内消息并进入Webhook投递。服务在04:00或08:00之后启动时必须按当前时点补偿对应阶段,仍由数据库唯一键保证幂等;运营页面不提供“执行今日检测”按钮,管理API也不暴露手动检测入口,避免人为提前发消息或混淆自动任务口径。
|
||||
- 临时抑制支持常用天数和自定义天数;永久抑制可在“抑制管理”中取消,取消必须二次确认、填写原因并写操作日志。抑制只停止站内提醒和Webhook,不停止每日检测快照;取消后从下一检测日恢复,不补发历史通知。
|
||||
- 右上角新增预警铃铛,数字只统计今日未读且未抑制消息;原待审核铃铛更换为任务图标,但原有计数、弹层和跳转不得丢失。安全控制新增“签名清退预警”,展示规则、今日企业/通道预警数量、分页消息列表、日期范围和抑制管理。
|
||||
- “今日预警”页签和区块统一更名为“预警消息”。消息列表包含历史消息,默认日期区间的开始、结束均为北京时间今日并只查询今日;支持修改日期区间,并分别按企业、企业应用、签名名称和通道查询。所有条件由真实后端共同作用于分页结果和总数,默认及筛选变化后回到第1页,每页10条,不得前端全量截取伪分页。
|
||||
- 预警消息“抑制”必须使用平台自研弹窗,在同一弹窗中选择临时或永久抑制:临时抑制直接选择截止日期,永久抑制不显示日期;两种方式都必须填写原因。抑制管理的“取消抑制”也必须使用自研确认弹窗并填写取消原因,禁止调用浏览器`confirm`或`prompt`。
|
||||
- 企业微信和飞书可配置多个Webhook。地址必须加密保存、脱敏显示并经过安全目标校验;投递使用异步队列、幂等键、有限重试和投递日志,企业预警按企业汇总,通道预警按检测批次汇总,不逐条轰炸。
|
||||
- “签名质量检测”增加企业“企业签名 × 运营商”和通道“签名 × 通道 × 运营商”近30日方格。页面日期为T,展示`T-1`至`T-30`的提交尝试数、上游接受业务短信数、最终成功数和成功率;尚未报备或早于当前连续通过时间显示“不适用”,无真实提交显示灰色,其余复用现有六档色阶。
|
||||
- 页面模块顺序固定为“签名通道发送质量”在最上方,其后依次为企业、通道热力图。两张热力图按维度行各自独立分页,每页10行;翻动其中一张不得改变另一张页码,30日日期列继续在各自表格内横向滚动。
|
||||
- 两张热力图的日期列从左到右按日期由大到小展示,即从`T-1`依次到`T-30`。行首主信息只展示签名名称;通道热力图保留识别维度所必需的通道名称和运营商标签,企业名称与企业应用名称不在行内常驻,鼠标悬停签名时再展示。每张热力图内部提供独立搜索框,可按企业名称、企业应用名称或签名名称筛选,并在筛选后回到第一页,不影响另一张热力图。
|
||||
- 热力图有真实检测快照的发送量格子悬停文案必须明确区分“提交条数”和“发送成功条数”,同时可补充上游接受条数、成功率和阈值;不得把上游接受或`SubmitResp status=0`写成发送成功。报备前仍显示“不适用”,没有检测快照仍显示当日无快照。
|
||||
- 页面最下方增加“未报备签名”模块,按所选北京时间自然日统计已提交到平台且有签名的真实`SmsMessageRecord`。当短信号码运营商没有匹配到该签名当前可用的运营商级报备成功事实,且也没有仍处于通过状态的历史通道级兼容报备事实时,计入未报备短信;运营商级事实可位于任一未删除通道,历史兼容事实仅用于避免把旧系统真实通过误报为未报备。结果按“签名 × 实际企业应用”聚合业务短信条数,展示签名、企业、企业应用,支持按三者搜索和每页10行独立分页;无签名的异常消息不在该模块伪造成签名。
|
||||
- 数据统计菜单改名为“签名质量检测”,并删除企业应用发送排行、通道占比、当天发送量和当天成功率模块。本项删除已确认,不作为后续可选项保留。
|
||||
|
||||
## 通道组按通道筛选(2026-08-09)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user