fix: enforce drainage uniqueness and carrier-specific reporting
This commit is contained in:
@@ -177,3 +177,19 @@ Gateway 每个分片等待可用连接后通过仅本机直连的 POST /api/gate
|
||||
新增迁移 20260910130000_drainage_send_gate 只加列、索引、决策表及锁触发器,不改既有批准/客户/余额/短信记录。测试发布按标准工具执行,包含此前九项运营修复提交;回退旧程序会失去本门禁,不能未经评估恢复发送。原治理工具草稿和备份/候选均保留。
|
||||
|
||||
验证:独立本机 PostgreSQL 克隆库完成新迁移,真实规则/API验证 NFKC号码、全部目标交集、审核撤销、报备撤销、并发锁等待、URL三种伪装拒绝、决策持久化及报备SQL。真实浏览器连接该API验证拦截详情、刷新、路由切换和1600×1000、1366×768、390×844;无Browser插件,使用既有Playwright/Edge。发送Worker与Gateway传输未启动,不以这些证据替代供应商零Submit、客户回执ACK、长短信物理发送、费用对账或容量测试,以上须专项发送授权后验证。自动回归及发布结果以 testing-progress.md 最新记录为准。
|
||||
|
||||
|
||||
## 11. 2026-09-14 引流唯一性与通道运营商报备设计
|
||||
|
||||
状态:本地实现与隔离验收完成;线上未部署,版本状态以 testing-progress.md 本轮记录为准。此节替代引流报备只按channelId及carrier=null通配的新增配置方式;域名匹配、平台审核、多目标交集、计费和Gateway复核协议保持。
|
||||
|
||||
1. 新增/修改及恢复引流:同一signatureId下未删除资料的引流值不得重复。按登记值trim比较,不把不同URL路径、协议或电话号码格式擅自合并;不同签名可相同。修改自身原值允许,已有重复记录不自动删除或合并,变更为其他已占用值拒绝。共同使用既有签名advisory事务锁,检查和写入同事务,覆盖管理端/客户端及并发请求;返回可读400。
|
||||
2. 新引流报备任务键为signatureId+drainageItemId+channelId+carrier,carrier为通道支持的mobile/unicom/telecom;复用已有carrier/approvalScope字段,无新表。页面与签名一样三网分组,按通道与运营商编辑;后端校验通道范围、引流归属及审核状态,返回相同维度并参与统计。新增或修改材料后,各适用运营商独立回到pending,移出通道/运营商及旧无运营商任务不继续保留旧授权。
|
||||
3. 历史carrier=null任务不批量迁移或猜测运营商;在尚无明确运营商任务时保留原通道级兼容读法,并在页面标记历史通道级继承。某运营商已有明确任务时,无论通过/失败/未报备均优先,不回落旧通过状态;运营人员保存后建立明确三网任务。旧记录保留审计,跨运营商不能互相覆盖。
|
||||
4. 路由、最终Gateway授权、签名卡片汇总、通道报备明细、批次目标/导出及按批次状态更新共用运营商语义。每个引流目标的通道交集按本条短信运营商计算;显式失败不得被旧carrier=null通过记录放行。批次按carrier业务键生成,旧all/legacy批次只保留原范围兼容,不把单运营商导出/状态结果扩散到其他运营商。
|
||||
5. 本次另外核验HTTP IP白名单英文逗号已受支持,补输入说明和回归;发送详情仅展示敏感词命中/明确异常,不展示正常零命中快照。数据库审计不删除,实际失败原因保持。
|
||||
6. 验收:并发同值新增/修改、自身/其他签名/已删除值、混合三网状态与历史覆盖、材料修改全部状态失效、真实PG/API与浏览器三尺寸、API/前端定向与全量、类型构建/质量门禁。无发送、重投、线上配置修改、推送或部署授权;本地隔离真实后端可验证配置及只读路由判断,物理短信链路不冒称通过。
|
||||
|
||||
### 11.1 实际数据库约束补核
|
||||
|
||||
真实隔离库复现原ChannelSignatureReportTask_drainage_target_key是签名+引流+通道部分唯一索引(Prisma模型未声明此部分约束)。必须新增20260914093000_drainage_carrier_reports,在同事务建立carrier非空四维唯一索引及carrier为空历史三维唯一索引,再移除旧三维索引;不改旧数据/状态。新索引同样防止状态保存与导出并发产生重复任务。迁移仅在独立验收库执行,发布后方能启用新代码;不能回退旧程序继续发送并把三网任务当通道级读取。应用回退需暂停发送并评估三网事实,不能删除新任务或直接重建旧唯一索引。
|
||||
|
||||
Reference in New Issue
Block a user