feat: refine template deletion and channel group filters
This commit is contained in:
@@ -1631,8 +1631,8 @@
|
||||
## 2026-07-21 UI/UX A5删除治理补充
|
||||
|
||||
- 通道、签名和模板删除前必须由后端返回对象身份、活动依赖数量与对象摘要、影响范围、`allowedActions`、`blockedReasons`、状态版本和可恢复说明;前端不得自行推断或只显示通用风险文案。
|
||||
- 删除提交必须包含预检版本、8位以上幂等键和至少4字符原因。后端在Serializable事务中重新以`updatedAt`和未删除状态做条件更新,并写入包含原因、依赖、影响及幂等键的`OperationLog`,返回操作单号和重放标识。
|
||||
- 客户端只能预检和删除当前会话企业的签名/模板,不得删除运营通道;通道被活动通道组/路由/连接/未结束报备引用,签名被模板/引流/未结束报备引用,模板被未结束发送/批量任务引用时,后端必须阻断。
|
||||
- 删除提交必须包含预检版本和8位以上幂等键,删除原因选填。后端在Serializable事务中重新以`updatedAt`和未删除状态做条件更新,并写入包含原因、依赖、影响及幂等键的`OperationLog`,返回操作单号和重放标识。
|
||||
- 客户端只能预检和删除当前会话企业的签名/模板,不得删除运营通道;通道的活动通道组/路由/连接依赖以及签名级联安全规则继续按专项口径处理。单独删除模板不得因已创建发送或批量任务而阻断。
|
||||
- 删除采用逻辑删除,历史发送、回执、计费、审核和审计数据继续保留;恢复需有审计依据。所有旧删除入口必须委托同一治理服务,禁止保留绕过路径。
|
||||
|
||||
## 2026-07-21 UI/UX A6人工充值治理补充
|
||||
@@ -1945,7 +1945,9 @@
|
||||
- 删除通道时,若存在未结束报备任务,必须提供“同时结束关联的报备任务”勾选项;勾选后在同一事务中将任务置为`abandoned`并逻辑删除通道。已有活动通道组引用、直接路由规则或活动网关连接仍属于不能由该勾选项解决的硬依赖,必须先处理后再删除。
|
||||
- 运营端可以看到未结束报备任务的真实ID和状态;客户端也允许勾选“同时结束关联的报备任务”,但客户端专用预检响应和页面不得展示任务ID、状态、通道或其他内部详情,只展示统一说明:“发现关联的未结束报备任务。勾选后将全部置为‘放弃报备’,历史任务和报备记录继续保留。”
|
||||
- 每一条被放弃的报备任务必须写`ChannelSignatureReportRecord`,保留变更前状态、`abandoned`变更后状态、操作人、原因和`deletion_governance`来源;级联删除的模板和引流信息必须留下子对象审计记录。删除通道并结束任务后,受影响的未删除签名必须在同一事务内按剩余有效通道重算报备汇总。
|
||||
- 关联模板若仍存在真实未结束发送或批量任务,不得仅靠“同时删除关联的模板”绕过发送安全约束;模板本身删除也使用同一活动任务口径。`SmsSendTask`的`approved/rejected`按已结束审核任务处理,`SmsBatchTask`至少将`finished/canceled/rejected/failed/completed/cancelled`按终态处理,避免已结束历史被误判为活动任务。
|
||||
- 删除签名时,关联模板若仍存在真实未结束发送或批量任务,不得仅靠“同时删除关联的模板”绕过签名和报备安全约束;该签名级联阻断与单独删除模板的规则分开。
|
||||
- 单独删除模板只阻止之后新建发送任务,不阻断也不改写已创建的`SmsSendTask`、`SmsBatchTask`和`SmsMessageRecord`。模板保持逻辑删除,历史`templateId`关联、短信内容、分类、计费与审核快照继续保留。
|
||||
- 已接受的定时任务到点时必须使用创建时持久化的内容快照继续处理,不得因模板后续逻辑删除而失败;但仍必须重新校验企业、应用及签名当前可用性,防止绕过停用和签名安全控制。
|
||||
|
||||
## 发送质量矩阵与成功率色阶统一(2026-08-09)
|
||||
|
||||
@@ -1979,3 +1981,20 @@
|
||||
- 连接请求详情保存客户实际发送或由Gateway从报文解析的诊断参数,包括远端IP、`Source_Addr`账号、`AuthenticatorSource`、时间戳、协议版本及原始版本值,并保存认证结果、应用ID和失败原因。标准CMPP CONNECT不传输明文密码,页面必须明确说明这一事实,不得把平台配置的密码或密钥伪造成客户请求密码;仅兼容调用真实携带`password`字段时原样保存和展示该字段。
|
||||
- 上述连接请求日志必须在认证响应返回前持久化,日志写入失败时不得把未经审计的连接当作认证成功。系统与操作日志列表继续直接显示`ipAddress`,并为`cmpp_connection.connect_requested`提供“查看详情”按钮,展示上述结构化参数。
|
||||
- 供应商通道的既有连接操作日志仍保留;客户入站连接使用`cmpp_downstream_connection`资源区分方向。本功能不改变CMPP认证算法、IP白名单、最大连接数或客户连接状态。
|
||||
|
||||
## 暂缓需求:通道支持运营商多选(2026-08-09)
|
||||
|
||||
- 本需求当前只记录、不实施,不改变现行`SmsChannel.carrier`单值模型、通道创建/编辑交互、通道组校验、发送选路、报备或生产数据;后续重新启动时必须另行完成影响评估、生产数据迁移方案和兼容发布计划。
|
||||
- 目标交互为取消“移动、联通、电信、三网”四选一,将通道能力改为“移动、联通、电信”三个复选项,至少选择一个;同时勾选三个运营商等价于现行“三网”,允许只勾选其中两个运营商。
|
||||
- 该变化只作用于通道本体的运营商能力集合。`SmsChannelGroup.carrier`、`SmsChannelGroupItem.carrier`、`ChannelRouteRule.carrier`及短信号码实际运营商仍保持移动/联通/电信单值;一个通道只有在能力集合包含对应运营商时,才允许加入该运营商通道组并参与选路。
|
||||
- 同一通道勾选多个运营商时继续共用一个通道单价,不增加分运营商单价;如未来出现分运营商计价需求,必须另立需求并升级为通道运营商明细模型,不能在本需求中隐式扩展。
|
||||
- 完整、理想的报备模型为“签名 × 通道 × 运营商”,用于分别记录同一通道在不同运营商下的报备状态;该模型本期明确暂不设计、不实施,现有“签名 × 通道”报备任务及历史记录保持不变。未来启动运营商多选实施前,必须再次确认是否同步升级报备粒度,不得把一个运营商的报备结果无依据地复制为其他运营商结果。
|
||||
- 未来生产数据迁移原则为:`mobile→[mobile]`、`unicom→[unicom]`、`telecom→[telecom]`、`all→[mobile,unicom,telecom]`,已删除通道也要保留并迁移历史能力;不得根据当前通道组关联、通道名称或近期流量自动缩减旧`all`通道的能力范围。
|
||||
- 未来取消某个已勾选运营商时,如果该通道仍被对应运营商的活动通道组引用,后端必须返回真实影响并阻止保存,不得自动删除通道组成员、路由、报备任务或历史发送记录;新增运营商能力也不得自动加入通道组或自动视为报备通过。
|
||||
- 未来迁移必须采用向前兼容的分阶段发布:先增加新能力集合、回填并让后端兼容读取,再开放多选写入。出现两个运营商组合后,旧单值代码无法无损解释该数据,回滚下限必须是已经支持新集合的兼容版本,不能直接回滚到仅识别`mobile/unicom/telecom/all`的旧版本。
|
||||
|
||||
## 通道组按通道筛选(2026-08-09)
|
||||
|
||||
- 运营端“短信通道组管理”在通道组名称条件之外增加“通道”筛选。选定一个通道后,只展示成员配置中真实包含该`channelId`的未删除通道组;与通道组名称同时输入时按两个条件取交集。
|
||||
- 通道选项必须来自真实通道API,不使用静态列表、Mock或localStorage。页面首次加载时通道组与通道两个独立请求并行执行;选项同时展示通道名称和编码,已删除通道明确标记“已删除”。未加入任何通道组的真实通道仍可选择,选中后结果为零而不得隐藏该选项。
|
||||
- 通道选择控件必须为通用下拉可搜索控件,支持按通道名称或编码搜索;“全部通道”表示不按通道限制,点击“重置”必须同时清空通道组名称和通道条件并回到第一页。
|
||||
|
||||
Reference in New Issue
Block a user