ur94 issues
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 9m52s
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 9m52s
This commit is contained in:
@@ -0,0 +1,17 @@
|
|||||||
|
# 01 — 建立回调 ICCID 精确唯一性发布门禁
|
||||||
|
|
||||||
|
**What to build:** 发布人员可以在启用运营商回调前检查未删除卡的 19 位和 20 位 ICCID 是否存在冲突,并在数据安全时把现有普通部分索引升级为部分唯一索引。若发现重复,迁移必须安全中止并给出修复依据,避免回调把观测应用到任意一张卡。
|
||||||
|
|
||||||
|
**Blocked by:** 无——可立即开始。
|
||||||
|
|
||||||
|
**Status:** ready-for-agent
|
||||||
|
|
||||||
|
**架构通道:** Infrastructure。
|
||||||
|
|
||||||
|
**完整业务边界:** 本票收口运营商回调所需的 ICCID 精确唯一性检查、迁移、回滚和发布门禁。明确不改变 ICCID 展示、导入、模糊查询或现有卡识别规则,不清理或自动合并生产重复数据。
|
||||||
|
|
||||||
|
- [ ] 向上迁移在建立唯一约束前分别检查未删除卡的 19 位和非空 20 位 ICCID 重复组,发现冲突时安全失败且不留下半完成结构。
|
||||||
|
- [ ] 未删除卡的 19 位和非空 20 位 ICCID 均由部分唯一索引保证精确唯一,软删除记录不阻塞合法新记录。
|
||||||
|
- [ ] 向下迁移只恢复本需求触碰的索引形态,不删除 ICCID 列、不修改卡数据,也不影响其他表索引。
|
||||||
|
- [ ] 迁移测试覆盖无冲突升级、19 位冲突、20 位冲突、软删除重复和 down/up 重放,并验证失败后可恢复。
|
||||||
|
- [ ] 发布说明明确生产检查、冲突修复责任、停止条件和回滚步骤,不把开发库无重复当作生产事实。
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
# 02 — 交付实名观测的公共写入闭环
|
||||||
|
|
||||||
|
**What to build:** 轮询、手动同步和运营商回调可以提交类型明确的实名观测,由唯一公共用例锁定卡、应用首次实名与周期逆转规则,并在同一事务中保存卡状态、Audit Event 和 Outbox。有效但无变化的观测仍更新时间和 Integration Log,重复观测不会重复激活套餐或执行业务副作用。
|
||||||
|
|
||||||
|
**Blocked by:**
|
||||||
|
|
||||||
|
- `.scratch/tech-public-foundation/issues/02-transactional-public-outbox-write.md` — 02 — 在业务事务中可靠写入公共 Outbox
|
||||||
|
- `.scratch/tech-public-foundation/issues/03-outbox-at-least-once-delivery.md` — 03 — 完成 Outbox 到 Asynq 的至少一次投递闭环
|
||||||
|
- `.scratch/tech-global-audit/issues/01-audit-event-write-loop.md` — 01 — 交付不可变 Audit Event 写入闭环
|
||||||
|
- `.scratch/tech-global-audit/issues/02-integration-log-attempt-loop.md` — 02 — 交付可恢复的 Integration Log 尝试闭环
|
||||||
|
|
||||||
|
**Status:** ready-for-agent
|
||||||
|
|
||||||
|
**架构通道:** 复杂写;主链路为 Handler/Worker → Application → Domain → Repository/Infrastructure。
|
||||||
|
|
||||||
|
**完整业务边界:** 本票建立公共卡观测契约及实名观测的完整业务边界,包括首次实名、周期逆转确认、可靠事件和提交后缓存处理。明确不迁移流量、网络、套餐轮询、保护期轮询或未触碰的旧实名查询;运营商解除实名回调不进入逆转计数。
|
||||||
|
|
||||||
|
- [ ] 公共观测元数据和实名观测均使用类型明确的领域输入,包含来源、场景、观测时间、请求/关联标识及脱敏上游摘要,领域层不依赖 Gateway、Fiber、GORM、Redis 或 Asynq 类型。
|
||||||
|
- [ ] 应用用例在事务中锁定卡,首次从未实名变为已实名时只写一次首次实名时间,并可靠发布卡/设备套餐首次激活、设备实名投影和停复机评估所需事件。
|
||||||
|
- [ ] 周期查询的未实名观测保留连续三次确认和 10 分钟窗口,未达阈值不把已实名卡改为未实名;回调来源的解除实名观测不能增加该计数。
|
||||||
|
- [ ] 有效无变化观测更新时间并写 Integration Log,但不重复发布首次实名或状态变化事件;缺少关键字段的观测不以零值覆盖本地状态。
|
||||||
|
- [ ] 卡状态、Audit Event 和 Outbox 任一步失败均整体回滚;缓存失效或回填只在提交后执行,失败可观察且不伪造事务成功。
|
||||||
|
- [ ] 单元及 PostgreSQL 并发测试覆盖首次成功、重复成功、逆转阈值、窗口过期、无变化、无效载荷、同一卡串行、事务回滚和事件幂等。
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
# 03 — 交付流量观测的公共写入闭环
|
||||||
|
|
||||||
|
**What to build:** 所有卡流量查询结果可以通过公共观测用例串行应用,完整保留运营商重置、跨月归档、异常下降保护、正增量累计、使用记录、套餐流量扣减和停复机评估。重复或无变化读数不会重复扣减,失败不会留下部分卡状态或业务事件。
|
||||||
|
|
||||||
|
**Blocked by:** 02 — 交付实名观测的公共写入闭环
|
||||||
|
|
||||||
|
**Status:** ready-for-agent
|
||||||
|
|
||||||
|
**架构通道:** 复杂写;主链路为 Handler/Worker → Application → Domain → Repository/Infrastructure。
|
||||||
|
|
||||||
|
**完整业务边界:** 本票在已建立的公共卡观测边界内收口流量观测规则及副作用。明确不迁移套餐轮询、套餐领域其他用例、轮询调度或未触碰的旧流量读取接口。
|
||||||
|
|
||||||
|
- [ ] 流量观测使用类型明确的读数和公共元数据,同一卡实际应用保持串行,重复观测身份不会重复写入或扣减。
|
||||||
|
- [ ] 领域规则完整覆盖运营商重置日、跨月归档、非重置日读数下降保护、正增量累计和首次月份初始化,无效或异常读数不覆盖可信基线。
|
||||||
|
- [ ] 正增量可靠产生使用记录、套餐流量扣减和停复机评估事件;零增量和受保护的下降读数不发布重复扣减事件。
|
||||||
|
- [ ] 有效无变化观测仍更新时间和 Integration Log;卡流量事实、Audit Event 与 Outbox 保持事务一致,提交后缓存反映最终状态。
|
||||||
|
- [ ] 单元及 PostgreSQL 并发测试覆盖正增量、零增量、运营商重置、跨月、非重置日下降、并发观测、重复身份和事务失败回滚。
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
# 04 — 交付网络观测的公共写入闭环
|
||||||
|
|
||||||
|
**What to build:** 所有 Gateway 网络状态结果可以通过公共观测用例安全写入卡状态、扩展原因和 IMEI。未知状态不会覆盖本地网络状态,真实状态变化可靠触发停复机评估,独立风险卡仍能关闭后续轮询。
|
||||||
|
|
||||||
|
**Blocked by:** 02 — 交付实名观测的公共写入闭环
|
||||||
|
|
||||||
|
**Status:** ready-for-agent
|
||||||
|
|
||||||
|
**架构通道:** 复杂写;主链路为 Handler/Worker → Application → Domain → Repository/Infrastructure。
|
||||||
|
|
||||||
|
**完整业务边界:** 本票在公共卡观测边界内收口网络观测、运营商停机原因和风险卡行为。明确不重构停复机资格规则、保护期轮询、轮询调度或未触碰的设备状态写入。
|
||||||
|
|
||||||
|
- [ ] 网络观测使用类型明确的 Gateway 状态、扩展原因、IMEI 和公共元数据,领域层通过稳定映射决定是否可应用。
|
||||||
|
- [ ] 未知 Gateway 状态、缺少关键字段或无效结果不以零值覆盖网络状态;可安全保留的扩展字段按明确规则处理并记录失败结论。
|
||||||
|
- [ ] 网络状态变化时写入运营商停机原因并可靠发布停复机评估事件;状态不变时不重复发布网络变化事件。
|
||||||
|
- [ ] 独立卡命中风险停机或销户扩展状态后仍关闭轮询,绑定设备的卡和机卡分离停机不被错误终止。
|
||||||
|
- [ ] 卡状态、Audit Event 与 Outbox 保持事务一致,有效观测更新时间和 Integration Log,提交后缓存正确失效或回填。
|
||||||
|
- [ ] 单元及 PostgreSQL 并发测试覆盖全部已知映射、未知状态、扩展原因、IMEI、无变化、风险卡矩阵、重复身份和事务回滚。
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
# 05 — 一次性切换三个卡状态轮询入口
|
||||||
|
|
||||||
|
**What to build:** 现有实名、流量和网络轮询在 Gateway 查询成功后统一调用公共观测边界,不再直接更新卡或自行触发套餐、扣减和停复机副作用。切换前后的轮询配置、资格判断、Redis 分片队列、重排、并发、卡级开关、风险卡终止和监控统计保持一致。
|
||||||
|
|
||||||
|
**Blocked by:**
|
||||||
|
|
||||||
|
- 02 — 交付实名观测的公共写入闭环
|
||||||
|
- 03 — 交付流量观测的公共写入闭环
|
||||||
|
- 04 — 交付网络观测的公共写入闭环
|
||||||
|
- `.scratch/tech-global-audit/issues/09-manual-polling-task-integration-cutover.md` — 09 — 承接手动轮询状态并记录同步外部尝试
|
||||||
|
|
||||||
|
**Status:** ready-for-agent
|
||||||
|
|
||||||
|
**架构通道:** 主通道为复杂写,辅助通道为 Infrastructure。
|
||||||
|
|
||||||
|
**完整业务边界:** 本票以一个不可分割的切换收口三个轮询 Handler 查询成功后的状态应用和业务联动。明确不迁移套餐轮询、保护期轮询、调度基础设施、查询前资格判断或现有轮询策略,不允许新旧路径双写。
|
||||||
|
|
||||||
|
- [ ] 三个轮询 Handler 只负责既有调度编排、资格判断和 Gateway 查询,查询成功后的持久化与副作用全部交给公共观测用例。
|
||||||
|
- [ ] 实名首次激活、实名逆转、流量扣减、停复机评估、缓存更新和风险卡终止在切换后仅有一个权威实现,不发生直接写库与公共用例双写。
|
||||||
|
- [ ] 每次实际 Gateway 请求建立 Integration Log 并传播请求、关联、来源和场景标识;失败仍按原轮询重排策略处理。
|
||||||
|
- [ ] 固定同一组轮询配置、Redis 队列和卡级开关的回归测试证明下次入队时间、失败重排、并发控制、卡资格、风险卡终止和监控统计不变。
|
||||||
|
- [ ] 手动刷新继续直接执行一次同步并保持路由、权限和响应契约,不额外生成 0/3/5 序列。
|
||||||
|
- [ ] 删除或封闭三个 Handler 中已迁移的状态写入和副作用分支,套餐轮询、保护期轮询和其他旧模块保持原状。
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
# 06 — 交付可合并的 0/3/5 观测序列
|
||||||
|
|
||||||
|
**What to build:** 内部业务调用方可以为资源和同步类型建立立即、3 分钟、5 分钟三次独立观测任务。序列按场景合并、按尝试幂等,单次失败不取消后续任务;达到明确预期时提前完成剩余尝试,实际 Gateway 请求仍通过公共观测边界应用结果。
|
||||||
|
|
||||||
|
**Blocked by:**
|
||||||
|
|
||||||
|
- 02 — 交付实名观测的公共写入闭环
|
||||||
|
- 03 — 交付流量观测的公共写入闭环
|
||||||
|
- 04 — 交付网络观测的公共写入闭环
|
||||||
|
- `.scratch/tech-public-foundation/issues/03-outbox-at-least-once-delivery.md` — 03 — 完成 Outbox 到 Asynq 的至少一次投递闭环
|
||||||
|
- `.scratch/tech-public-foundation/issues/06-unified-async-task-contract.md` — 06 — 冻结统一异步任务五态和查询契约
|
||||||
|
- `.scratch/tech-global-audit/issues/02-integration-log-attempt-loop.md` — 02 — 交付可恢复的 Integration Log 尝试闭环
|
||||||
|
|
||||||
|
**Status:** ready-for-agent
|
||||||
|
|
||||||
|
**架构通道:** Application + Port/Adapter,辅助通道为 Infrastructure。
|
||||||
|
|
||||||
|
**完整业务边界:** 本票收口通用观测序列的创建、合并、任务执行、预期判断、互斥和尝试留痕,并为实名、流量、网络及设备信息提供扩展点。明确不批量修改各业务入口,不新增公开同步 API、全局冷却或新的同步运行表。
|
||||||
|
|
||||||
|
- [ ] 一次触发恰好建立立即、3 分钟、5 分钟三次独立任务,三次任务均为零自动重试,载荷以 struct 或 map 入队并传播稳定 `series_id + attempt`。
|
||||||
|
- [ ] 同一场景、资源类型、资源 ID 和同步类型的未结束序列被合并;不同场景互不压制,OpenAPI 场景不包含调用方身份且不会因重复查询延长序列。
|
||||||
|
- [ ] 有明确预期时任务执行前读取本地快照,达到预期后把当前和剩余尝试标记完成且不访问 Gateway;回调确认实名后可提前完成同卡实名序列。
|
||||||
|
- [ ] 实际 Gateway 请求期间按单卡、运营商接入和同步类型互斥,流量复用卡级锁;互斥命中只跳过当前尝试,不取消后续任务。
|
||||||
|
- [ ] 合并、互斥、限频、提前完成和实际请求均写 Integration Log;超频不建立额外退避,事件任务失败不改变现有轮询重排。
|
||||||
|
- [ ] 并发及链路测试覆盖重复触发、不同场景、重复投递、单次失败、预期提前完成、互斥、限频、零重试和三次结果连续可查询。
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
# 07 — 接入读取与实名入口的后台观测
|
||||||
|
|
||||||
|
**What to build:** C 端资产详情、后台资产实时状态、OpenAPI 卡和设备状态查询继续立即返回本地快照,同时 Best Effort 创建可合并的后台观测序列;后台和 C 端获取实名入口在运营商支持实名时创建以“已实名”为预期的序列。入队失败不改变原接口响应和耗时契约。
|
||||||
|
|
||||||
|
**Blocked by:** 06 — 交付可合并的 0/3/5 观测序列
|
||||||
|
|
||||||
|
**Status:** ready-for-agent
|
||||||
|
|
||||||
|
**架构通道:** 主通道为 Query,辅助通道为 Application + Port/Adapter。
|
||||||
|
|
||||||
|
**完整业务边界:** 本票收口 PRD 指定的读取型入口和获取实名入口的触发接入。明确不迁移原查询到聚合根、不改变公开响应、不新增同步按钮或 API,也不改变现有手动刷新直接同步行为。
|
||||||
|
|
||||||
|
- [ ] C 端资产详情、后台实时状态以及 OpenAPI 卡/设备的流量、网络和实名查询按被查询资源与同步类型创建无预期序列,并先返回现有本地快照。
|
||||||
|
- [ ] 连续 OpenAPI 查询同一资源使用稳定、调用方无关的场景码合并到未结束序列,不会每次新增三任务或不断续建序列。
|
||||||
|
- [ ] 后台和 C 端获取实名入口仅在运营商实名能力不是 `none` 时创建实名序列,预期状态为已实名。
|
||||||
|
- [ ] Best Effort 入队失败只记录中文安全日志和关联标识,不改变原接口状态码、响应结构或业务结果。
|
||||||
|
- [ ] 现有后台和 C 端手动刷新仍直接执行一次同步,不生成后台序列;读接口不等待 Gateway,也不伪造已收敛状态。
|
||||||
|
- [ ] HTTP 集成与压测覆盖响应契约、延迟、序列合并、`realname_link_type=none`、入队失败降级和手动刷新不建序列。
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
# 08 — 接入停复机与购包业务的状态收敛序列
|
||||||
|
|
||||||
|
**What to build:** 后台、C 端、OpenAPI 和自动任务的停复机成功后,系统可靠创建以目标网络状态为预期的观测序列;订单支付、钱包购包和套餐激活成功后,可靠创建实名、流量和网络观测序列。业务成功事实通过 Outbox 触发,不因即时队列故障永久丢失。
|
||||||
|
|
||||||
|
**Blocked by:** 06 — 交付可合并的 0/3/5 观测序列
|
||||||
|
|
||||||
|
**Status:** ready-for-agent
|
||||||
|
|
||||||
|
**架构通道:** 主通道为 Application + Port/Adapter,辅助通道为复杂写。
|
||||||
|
|
||||||
|
**完整业务边界:** 本票只把指定停复机和购包成功边界接入公共序列,不修改其领域资格、金额、库存、支付、套餐激活或 Gateway 调用规则,不借接入迁移未触碰的旧 Service。
|
||||||
|
|
||||||
|
- [ ] 后台、C 端、OpenAPI 和自动任务的停机成功创建网络观测序列并预期开机状态关闭,复机成功创建网络观测序列并预期开机状态正常。
|
||||||
|
- [ ] 订单支付、钱包购包和套餐激活成功创建实名、流量、网络三类无预期序列,失败或回滚的业务操作不产生同步触发。
|
||||||
|
- [ ] 写操作在原业务事务成功边界写入 Outbox,重复业务事件和至少一次投递不会创建重复未结束序列。
|
||||||
|
- [ ] 轮询观测到变化和序列执行结果不得反向创建新序列,停复机现有公开响应、权限和业务错误保持不变。
|
||||||
|
- [ ] 卡绑定、解绑、设备或卡分配与回收若没有实际调用上游,只保留业务事件,不创建 Gateway 观测序列。
|
||||||
|
- [ ] 集成测试覆盖各入口成功、失败、事务回滚、重复事件、明确预期提前完成及单次任务失败不影响后续尝试。
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
# 09 — 接入设备控制业务的状态收敛序列
|
||||||
|
|
||||||
|
**What to build:** 设备切卡、切模式、重启、恢复出厂和 WiFi 设置成功后,系统为设备信息及相关卡创建准确的后台观测序列。切卡和切模式可以目标 ICCID 为预期提前完成,其余操作不阻塞原业务响应。
|
||||||
|
|
||||||
|
**Blocked by:** 06 — 交付可合并的 0/3/5 观测序列
|
||||||
|
|
||||||
|
**Status:** ready-for-agent
|
||||||
|
|
||||||
|
**架构通道:** Application + Port/Adapter。
|
||||||
|
|
||||||
|
**完整业务边界:** 本票收口指定设备控制入口的观测触发,不迁移设备控制业务规则、绑定模型或 Gateway Adapter,不把没有上游调用的资产关系变化误建为同步序列。
|
||||||
|
|
||||||
|
- [ ] 切卡和切模式成功后创建设备信息、源卡与目标卡网络、目标卡流量序列,并以目标 ICCID 作为设备信息观测的明确预期。
|
||||||
|
- [ ] 设备重启、恢复出厂和 WiFi 设置成功后创建设备信息及绑定卡网络序列,不设置未经协议保证的预期状态。
|
||||||
|
- [ ] 失败、拒绝或事务回滚的设备操作不创建序列;重复事件按场景和资源合并,不重复产生三任务。
|
||||||
|
- [ ] 观测触发不增加原 Gateway 操作耗时,不改变现有路由、权限、响应结构和中文错误语义。
|
||||||
|
- [ ] 绑定、解绑、分配和回收等未实际调用上游的操作只记录业务事件,不创建设备或卡观测序列。
|
||||||
|
- [ ] 集成测试覆盖各控制入口、源卡/目标卡资源选择、预期 ICCID 提前完成、重复事件、入队恢复和无上游操作不建序列。
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
# 10 — 接入电信实名回调
|
||||||
|
|
||||||
|
**What to build:** 电信 XML 回调可以按真实协议识别实名补录成功,并通过公共实名观测幂等更新卡;同一路由收到实名信息清除时只留痕忽略。无效报文、未找到、冲突和重复成功均按安全规则记录并返回运营商约定应答。
|
||||||
|
|
||||||
|
**Blocked by:**
|
||||||
|
|
||||||
|
- 01 — 建立回调 ICCID 精确唯一性发布门禁
|
||||||
|
- 02 — 交付实名观测的公共写入闭环
|
||||||
|
- 06 — 交付可合并的 0/3/5 观测序列
|
||||||
|
|
||||||
|
**Status:** ready-for-agent
|
||||||
|
|
||||||
|
**架构通道:** 主通道为 Infrastructure Adapter,辅助通道为复杂写。
|
||||||
|
|
||||||
|
**完整业务边界:** 本票只实现已知电信 XML 报文的 Translator、成功应答、系统级精确查卡和实名观测接入。明确不创建电信独立解除实名路由,不验证来源真实性,不调用 Gateway 二次确认、旧第三方推送或删除实名接口。
|
||||||
|
|
||||||
|
- [ ] 回调仅在结果消息为成功且受理消息包含实名信息补录完成时生成已实名观测;实名信息清除只写 `ignored` Integration Log。
|
||||||
|
- [ ] ICCID 去除首尾空白后仅接受合法 19 或 20 位值,并分别精确查询对应列,禁止截断、补位、模糊匹配和跨列降级。
|
||||||
|
- [ ] 系统级 Repository 不应用登录账号数据范围;未找到记录 `not_found`,多匹配记录 `conflict`,均不任取卡写入。
|
||||||
|
- [ ] 重复成功回调幂等返回成功,不重复首次实名、套餐激活或领域事件,并提前完成同卡未执行实名序列。
|
||||||
|
- [ ] 报文级解析失败记录 `invalid_payload`;可安全识别的无效业务结果按运营商约定成功应答,日志和 Access Log 不保存完整报文或明文 ICCID。
|
||||||
|
- [ ] 新 Handler 完成路由注册和两个 OpenAPI 文档生成器接入;脱敏 XML fixture 契约测试覆盖成功、清除、业务失败、非法长度、未找到、冲突和重复成功。
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
# 11 — 接入移动实名成功回调
|
||||||
|
|
||||||
|
**What to build:** 移动 JSON 回调可以按真实协议识别实名成功并通过公共观测幂等更新卡。ICCID 为空或载荷无效时安全留痕和应答,系统不会登录旧管理平台补查,也不会保留任何旧平台凭证或抓取逻辑。
|
||||||
|
|
||||||
|
**Blocked by:**
|
||||||
|
|
||||||
|
- 01 — 建立回调 ICCID 精确唯一性发布门禁
|
||||||
|
- 02 — 交付实名观测的公共写入闭环
|
||||||
|
- 06 — 交付可合并的 0/3/5 观测序列
|
||||||
|
|
||||||
|
**Status:** ready-for-agent
|
||||||
|
|
||||||
|
**架构通道:** 主通道为 Infrastructure Adapter,辅助通道为复杂写。
|
||||||
|
|
||||||
|
**完整业务边界:** 本票只实现已知移动实名成功 JSON 报文的 Translator、成功应答、系统级精确查卡和实名观测接入。明确不实现移动解除实名,不验证来源真实性,不登录旧平台、不按 MSISDN 补查、不请求 Gateway 二次确认。
|
||||||
|
|
||||||
|
- [ ] 仅当外层状态为成功、消息为正确、首个结果实名状态为成功且携带 ICCID 时生成已实名观测。
|
||||||
|
- [ ] 空 ICCID 和无效业务载荷记录 `invalid_payload` 并按运营商约定应答,测试证明不会发起旧平台登录、MSISDN 查询或第三方抓取。
|
||||||
|
- [ ] ICCID 仅按合法 19/20 位精确查询对应列;未找到和冲突不更新卡,重复成功不重复首次实名、激活或领域事件。
|
||||||
|
- [ ] 成功回调可提前完成同卡未执行实名序列;回调本身不得反向创建新的 0/3/5 序列。
|
||||||
|
- [ ] Integration Log、应用日志和 Access Log 只保存脱敏摘要及必要解析字段,不保存完整报文、Cookie、Authorization、账号密码或明文 ICCID。
|
||||||
|
- [ ] 新 Handler 完成路由注册和两个 OpenAPI 文档生成器接入;脱敏 JSON fixture 契约测试覆盖成功、业务失败、空 ICCID、非法长度、未找到、冲突和重复成功。
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# 12 — 接入联通解除实名留痕回调
|
||||||
|
|
||||||
|
**What to build:** 联通解除实名 JSON 回调可以解析字符串字段中的 ICCID 和变更时间,建立脱敏 Integration Log 并按协议应答,但不会把已实名卡改为未实名、增加逆转计数或触发停机。
|
||||||
|
|
||||||
|
**Blocked by:**
|
||||||
|
|
||||||
|
- 01 — 建立回调 ICCID 精确唯一性发布门禁
|
||||||
|
- `.scratch/tech-global-audit/issues/02-integration-log-attempt-loop.md` — 02 — 交付可恢复的 Integration Log 尝试闭环
|
||||||
|
|
||||||
|
**Status:** ready-for-agent
|
||||||
|
|
||||||
|
**架构通道:** Infrastructure Adapter。
|
||||||
|
|
||||||
|
**完整业务边界:** 本票只实现已有联通解除实名报文的解析、精确资源识别、忽略留痕和成功应答。明确不实现联通实名成功,不调用公共未实名观测、不修改卡状态、不验证来源真实性或请求 Gateway 二次确认。
|
||||||
|
|
||||||
|
- [ ] Adapter 能解析外层 JSON 字符串字段中的 ICCID 和变更时间,报文或嵌套数据解析失败时记录 `invalid_payload`。
|
||||||
|
- [ ] 合法 ICCID 仅按 19/20 位精确查询对应列;未找到和冲突分别记录明确结果,不任取卡,也不跨列降级。
|
||||||
|
- [ ] 可识别的解除实名回调统一记录 `ignored`,不更新实名状态、首次实名时间和检查时间,不增加周期逆转计数,不发布停机或套餐事件。
|
||||||
|
- [ ] 重复回调幂等留痕并按运营商约定应答,日志和 Access Log 不保存完整报文或明文 ICCID。
|
||||||
|
- [ ] 新 Handler 完成路由注册和两个 OpenAPI 文档生成器接入;脱敏 fixture 契约测试覆盖成功解析、嵌套数据无效、非法长度、未找到、冲突和重复回调。
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
# 13 — 完成 UR#94 发布门禁与回归验收
|
||||||
|
|
||||||
|
**What to build:** 发布负责人可以通过一套端到端验收判断公共卡状态写入、0/3/5 观测序列和三个运营商回调是否可以灰度上线。验收对比改造前后的轮询事实,检查可靠事件、审计链路、敏感信息保护、运营商独立开关、停止条件和回滚路径。
|
||||||
|
|
||||||
|
**Blocked by:**
|
||||||
|
|
||||||
|
- 05 — 一次性切换三个卡状态轮询入口
|
||||||
|
- 07 — 接入读取与实名入口的后台观测
|
||||||
|
- 08 — 接入停复机与购包业务的状态收敛序列
|
||||||
|
- 09 — 接入设备控制业务的状态收敛序列
|
||||||
|
- 10 — 接入电信实名回调
|
||||||
|
- 11 — 接入移动实名成功回调
|
||||||
|
- 12 — 接入联通解除实名留痕回调
|
||||||
|
|
||||||
|
**Status:** ready-for-agent
|
||||||
|
|
||||||
|
**架构通道:** 主通道为 Infrastructure 与集成验收,辅助通道为 Application、Domain 和 Query 契约。
|
||||||
|
|
||||||
|
**完整业务边界:** 本票收口 UR#94 的端到端发布验证、文档、灰度和回滚门禁。明确不新增同步按钮、公开同步 API、活跃状态、调度状态表、独立同步监控页或轮询策略,不迁移套餐轮询和保护期轮询。
|
||||||
|
|
||||||
|
- [ ] 真实 Fiber、GORM、PostgreSQL、Redis、Relay 和 Asynq 链路验证实名、流量、网络观测及事件消费者,事务失败不留下部分卡状态、Audit Event 或 Outbox。
|
||||||
|
- [ ] 固定并记录发布前的启用轮询配置、队列深度、卡级开关、下次入队、失败重排、并发和监控统计;发布后对比证明调度事实未因 UR#94 改变。
|
||||||
|
- [ ] 事件验收覆盖恰好三次零重试任务、单次失败不取消后续、场景合并、OpenAPI 防轮询、互斥、限频和预期提前完成。
|
||||||
|
- [ ] 三个运营商 Adapter 使用脱敏真实 fixture 穿过 Fiber 路由和统一错误处理,验证 19/20 位精确匹配、重复回调、未找到、冲突、解除实名忽略和移动空 ICCID 不补查。
|
||||||
|
- [ ] Access Log、应用日志、Integration Log、Audit Event、Outbox 和任务安全摘要均不泄露完整运营商报文、Cookie、Authorization、账号密码或明文 ICCID。
|
||||||
|
- [ ] 测试环境按运营商原始样例验收后,电信、移动、联通 Adapter 可逐个启用和独立关闭;停止条件与回滚不影响事件序列和原轮询兜底。
|
||||||
|
- [ ] 中文功能总结覆盖关键流程、接口契约、异常闭环、发布回滚和待决策项,README 增加索引;全部门禁通过后方可配置生产回调 URL。
|
||||||
Reference in New Issue
Block a user