5.8 KiB
ADDED Requirements
Requirement: 本里程碑仅面向测试环境部署
本 Change 的近期发布目标 SHALL 是在 2026-07-27 前部署到测试环境,不得将其描述为正式生产验收或七月迭代全链路完成。测试环境发布状态 MUST 与生产发布状态分开记录。
Scenario: 测试环境部署完成
- WHEN 数据库迁移、API、Worker、前端和配置已按本 Change 装配到测试环境
- THEN 发布状态 MAY 标记为“测试环境已部署”,但生产发布、真实外部验收和延期门禁 MUST 保持未完成
Requirement: 自动化测试豁免仅限本次测试环境里程碑
本轮实施 MUST 不新增 _test.go、不运行 go test,也不执行真实 PostgreSQL、Redis、企微、支付或 Gateway 自动验收。每批实现仅要求执行 gofmt、必要代码生成、go build ./... 和部署检查。自动化测试、真实外部验收和生产发布门禁 MUST 登记为延期项,未执行验证不得标记通过。
Scenario: 完成一批业务代码
- WHEN 某实施批次完成代码修改
- THEN 执行者 MUST 运行该批约定的格式化、必要生成、
go build ./...与部署检查,不得新增或运行自动化测试
Scenario: 未执行测试
- WHEN 任务因本次豁免没有自动化或真实外部验证证据
- THEN 验证状态 MUST 标记“代码完成、验证延期”或“待前端/人工验收”,不得标记“验收完成”
Requirement: Audit Event 专项必须移出本 Change 与本次上线范围
.scratch/tech-global-audit/issues/01、19、20、21 及其他 Audit Event 写入、审计中心、历史投影、敏感读取、导出、保留清理和一次性审计切换任务 MUST 不进入本轮实现任务,也不得作为其他七月需求的测试环境或生产上线阻塞项。提交 ff44305 已存在的相关代码 MUST 原样冻结,不删除、不回滚、不继续扩展;未来如需恢复审计治理,MUST 另开独立 Change 重新评审。
Scenario: 下游原 Ticket 依赖全局审计
- WHEN 某七月 PRD/Ticket 原先把 Audit Event 或一次性审计发布门禁列为 blocker
- THEN 本 Change MUST 同时移除测试环境和生产上线阻塞边,不在本 Change 内保留恢复义务
Scenario: 审计冻结代码存在
- WHEN 构建包含
integrationlog.Repository、cmd/audit-coverage、pkg/sanitizer或迁移000167_create_audit_integration_log - THEN 不得为冻结目的删除这些代码;未装配到生产组合根的审计组件不得被本轮业务主动启用
Requirement: 可靠性事实不得因 Audit Event 排除而削弱
Access Log SHALL 继续负责 HTTP 调试并使用现有递归脱敏;Integration Log SHALL 记录外部交互及结果未知恢复事实;Domain Ledger SHALL 继续作为金额、订单、退款、充值、审批和状态的业务权威;Outbox SHALL 继续作为可靠副作用投递事实。Audit Event 作为“谁对什么做了什么”的统一治理能力不属于本 Change,其他事实不得被停用或合并。
Scenario: 新业务调用外部系统
- WHEN 本轮新业务通过企微等审批渠道 Adapter、支付、Gateway 或运营商 Adapter 发出请求或接收回调
- THEN 仍 MUST 写 Integration Log 并保留幂等、事务与恢复语义,即使本次不写 Audit Event
Scenario: Access Log 处理敏感正文
- WHEN 登录、Token、支付、企微、运营商回调或文件路由产生请求响应日志
- THEN 现有 Sanitizer 与安全摘要策略 MUST 继续生效,不得因审计冻结恢复原文记录
Requirement: 测试环境发布必须按停机依赖顺序执行
测试环境发布 MUST 按“确认变更与配置 → 停止相关写入和 Worker → 执行增量迁移 → 发布 API 与 Relay/Worker → 发布前端 → 装配企微/支付/Gateway/运营商/对象存储配置 → 执行部署检查 → 恢复 Worker 与访问”的顺序。涉及旧接口停用和新契约同批切换的需求 MUST 在解除访问前完成版本一致性检查。
Scenario: 部署检查失败
- WHEN 迁移、构建、配置、路由、Worker 注册或前后端版本一致性检查失败
- THEN 测试环境 MUST 保持维护或停止新入口,不得将该批标记部署完成
Scenario: 审批业务核心先于渠道装配完成
- WHEN 退款或线下代充业务代码已围绕 Approval Port 完成,但当前环境尚无有效 WeCom Adapter、场景或发起身份配置
- THEN 该业务只能记录“后端代码完成”,新提交入口 MUST 保持关闭或失败关闭,不得标记“测试环境可用”
Requirement: 回滚必须保留不可逆业务事实
开放访问前失败 MAY 回滚应用和可逆迁移;一旦产生审批、支付、资金流水、订单、退款、充值、Outbox、Integration Log、通知或部分成功批量任务,回滚 MUST 保留这些事实,暂停异常生产者并采用前向修复。不得通过清表、恢复旧 Writer 或要求用户重复支付来回滚。
Scenario: 支付成功但钱包尚未入账
- WHEN 测试环境回滚时存在已支付未入账充值
- THEN 系统 MUST 保留支付与 Outbox/恢复事实,并在恢复后幂等完成入账,不得关闭原事实或要求重新支付
Requirement: 生产发布不得继承测试豁免
生产发布前 MUST 恢复并完成自动化测试、真实 PostgreSQL/Redis/企微/支付/Gateway 验收、前后端联调、历史数据抽样与迁移演练、性能/权限/安全检查。延期项 MUST 保持未勾选,直至产生真实证据;Audit Event 已明确移出本 Change,不属于需要恢复的测试豁免。
Scenario: 准备生产发布
- WHEN 团队从测试环境里程碑推进正式生产
- THEN 发布负责人 MUST 重新启用延期验证与治理清单,全部完成前不得声明生产验收通过