@@ -1,120 +1,117 @@
## 0. 测试与现行契约准备
> 实施约束:本 Change 禁止新增、修改或运行任何自动化测试,也不得创建测试任务;完成证据仅使用静态检查、数据核对、接口人工核对及既定制品检查。
- [ ] 0.1 重新扫描当前 RouteSpec、Application、旧 Service、Worker、Scheduler、Callback、Outbox、Integration Log 和旧 Writer, 生成逐入口领域/动作/资源/事务/可见性矩阵,并逐项标明 Audit Event、Domain Ledger、Integration Log、Outbox 或 N/A 理由;旧 490 项仅用于遗漏比对,并增量维护 `.scratch/tech-global-audit/审计覆盖基线.md` 。【主: 治理| 边界: 当前生产写入口及敏感读取| 不迁移: 业务实现| 验证: 清单无空白、敏感读取已单列、Setter/普通查询/装配误报已剔除并经业务/研发/安全复核】
- [ ] 0.2 为不可变事件、多资源约束、Action/Resource Registry、`subject_data` 白名单、安全凭据删除、内容哈希、JSON 大小限制、成功同事务、敏感读取失败关闭和失败短事务生成单元及真实 PostgreSQL 集成测试, 暂不实现生产代码。【主: Infrastructure + Application| 边界: 统一写入闭环| 不迁移: 领域调用方| 验证: 运行目标测试并确认因能力缺失全部 FAIL】
- [ ] 0.3 为平台全局/操作者/资源/request/correlation/资金/风险查询、Integration overview/list/detail/attempts及代理/企业安全活动生成 Fiber + GORM 集成测试, 并覆盖筛选输入、视角跳转、认证上下文和服务端派生四类入参来源。【主: Query/API| 边界: 第一阶段只读接口| 不迁移: 旧 operation log、前端页面与导出| 验证: 运行目标测试并确认路由或查询缺失导致 FAIL 】
- [ ] 0.4 为账号权限、设备多卡槽、换货旧新资产、钱包扣款退款、支付回调、批量部分成功、系统任务和企业资源授权生成端到端业务流程测试,断言 HTTP 响应、Audit Event、Event Resource、Domain Ledger、Integration/Outbox 关联及外部安全投影。【主:验收|边界:代表性跨领域流程|不迁移:未触碰业务规则|验证:运行流程测试并确认审计断言 FAIL、既有业务断言保持现状】
- [ ] 0.5 固化第一阶段测试基线:记录所有新增测试的预期失败原因,确认没有因编译错误、环境误配或既有回归造成的伪失败,并冻结后续逐切片转绿顺序。【主:测试门禁|边界:新增审计测试|不迁移:生产代码|验证:测试报告逐项对应 specs Requirement/Scenario】
- [ ] 0.6 为 Audit/Integration 每日归档、manifest/hash、重复任务、Integration 月度最终 revision、缺日、对象损坏、月度物理删除阻断、断点续删和在线窗口错误生成单元及真实 PostgreSQL/对象存储集成测试, 暂不实现生产代码。【主: Infrastructure + Application| 边界: 冷归档与留存闭环| 不迁移: Access Log、对象存储历史查询/恢复|验证:运行目标测试并确认因能力缺失全部 FAIL, 既有日志写入不受影响】
## 0. 现行契约准备
- [x ] 0.1 重新扫描当前 RouteSpec、Application、旧 Service、Worker、Scheduler、Callback、Outbox、Integration Log 和旧 Writer, 生成逐入口领域/动作/资源/事务/可见性矩阵,并逐项标明 Audit Event、Domain Ledger、Integration Log、Outbox 或 N/A 理由;旧 490 项仅用于遗漏比对,并增量维护 `.scratch/tech-global-audit/审计覆盖基线.md` 。【主: 治理| 边界: 当前生产写入口及敏感读取| 不迁移: 业务实现| 验证: 清单无空白、敏感读取已单列、Setter/普通查询/装配误报已剔除并经业务/研发/安全复核 】
## 1. 统一 Audit Event 首个纵向闭环
- [ ] 1.1 以“受控系统配置更新”为首个简单写纵向切片, 交付无外键迁移、Audit Event/Event Resource Model、Action/Resource Registry、凭据删除、不可变 Append Writer、结构体注入和同事务失败回滚; 配置凭据只记录 `credentials_configured` 等安全事实。【主:简单写 + Application/Port/Adapter| 辅: Infrastructure| 边界: 系统配置更新 + 公共写接缝|不迁移:其他配置页面与其他领域|验证:迁移 up/down、Registry/哈希/凭据测试 和配置事务集成测试 PASS , LSP 无诊断】
- [ ] 1.2 以“Outbox 人工恢复裁决”为第二个高风险纵向切片,接入操作者、原因、批次、事件前后状态和 Audit Event 同事务失败关闭, 证明多资源与高风险策略可复用。【主: Application + Port/Adapter| 辅: Infrastructure| 边界: 既有 Outbox 恢复用例| 不迁移: Outbox Relay 与消费者|验证:成功、重复恢复、有效租约拒绝、审计失败回滚测试 PASS , LSP 无诊断】
- [ ] 1.3 交付已确定主要业务资源后的 `failed/denied` 独立短事务和二次失败 critical 日志/指标,以系统配置非法更新及 Outbox 不可恢复事件为代表用例;资源 ID 可空但必须有稳定 Key/快照,只有 actor 而无资源时进入 Access/Security Log, 不使用裸 goroutine。【主: Application| 辅: Infrastructure/Observability| 边界: 失败审计公共接缝| 不迁移: 全局错误处理语义| 验证: 原业务错误保留、primary 约束、无资源分流、短事务失败指标测试 PASS , LSP 无诊断】
- [ ] 1.4 交付 HTTP、OpenAPI、Worker、Scheduler 和 Callback 的 Audit Context 及 `request_id/correlation_id/parent_event_id` 传播接缝,以一个 HTTP→Outbox→Worker 流程证明系统子事件不伪造人工操作者。【主: Application + Port/Adapter| 辅: Middleware/Asynq| 边界: 审计上下文与链路字段| 不迁移: 业务状态机| 验证: 上下文、载荷结构、父子链路和真实 actor 测试 PASS , LSP 无诊断】
- [ ] 1.5 交付批次根事件、资源子事件和 `partial` 统计接缝, 以现有设备批量分配或资产批量购包小场景验证每个实际变化资源进入自身时间线, 未处理项不伪造成功。【主: Application| 辅: Asynq/Infrastructure| 边界: 公共批量审计形态| 不迁移: 批量业务规则| 验证: 根子计数、父子链路、部分成功和幂等测试 PASS , LSP 无诊断】
- [x ] 1.1 以“受控系统配置更新”为首个简单写纵向切片, 交付无外键迁移、Audit Event/Event Resource Model、Action/Resource Registry、凭据删除、不可变 Append Writer、结构体注入和同事务失败回滚; 配置凭据只记录 `credentials_configured` 等安全事实。【主:简单写 + Application/Port/Adapter| 辅: Infrastructure| 边界: 系统配置更新 + 公共写接缝|不迁移:其他配置页面与其他领域|验证:迁移 up/down、Registry/哈希/凭据和配置事务数据核对通过 , LSP 无诊断】
- [x ] 1.2 以“Outbox 人工恢复裁决”为第二个高风险纵向切片,接入操作者、原因、批次、事件前后状态和 Audit Event 同事务失败关闭, 证明多资源与高风险策略可复用。【主: Application + Port/Adapter| 辅: Infrastructure| 边界: 既有 Outbox 恢复用例| 不迁移: Outbox Relay 与消费者|验证:成功、重复恢复、有效租约拒绝、审计失败回滚核对通过 , LSP 无诊断】
- [x ] 1.3 交付已确定主要业务资源后的 `failed/denied` 独立短事务和二次失败 critical 日志/指标,以系统配置非法更新及 Outbox 不可恢复事件为代表用例;资源 ID 可空但必须有稳定 Key/快照,只有 actor 而无资源时进入 Access/Security Log, 不使用裸 goroutine。【主: Application| 辅: Infrastructure/Observability| 边界: 失败审计公共接缝| 不迁移: 全局错误处理语义| 验证: 原业务错误保留、primary 约束、无资源分流、短事务失败指标核对通过 , LSP 无诊断】
- [x ] 1.4 交付 HTTP、OpenAPI、Worker、Scheduler 和 Callback 的 Audit Context 及 `request_id/correlation_id/parent_event_id` 传播接缝,以一个 HTTP→Outbox→Worker 流程证明系统子事件不伪造人工操作者。【主: Application + Port/Adapter| 辅: Middleware/Asynq| 边界: 审计上下文与链路字段| 不迁移: 业务状态机| 验证: 上下文、载荷结构、父子链路和真实 actor 核对通过 , LSP 无诊断】
- [x ] 1.5 交付批次根事件、资源子事件和 `partial` 统计接缝, 以现有设备批量分配或资产批量购包小场景验证每个实际变化资源进入自身时间线, 未处理项不伪造成功。【主: Application| 辅: Asynq/Infrastructure| 边界: 公共批量审计形态| 不迁移: 批量业务规则| 验证: 根子计数、父子链路、部分成功和幂等核对通过 , LSP 无诊断】
## 2. 平台基础审计调查纵向切片
- [ ] 2.1 交付平台身份保护的事件列表和详情纵向切片,包含组合筛选、稳定分页、操作者/入口/结果/风险、多资源角色、身份快照及资源级 before/after; 平台不做数据行过滤, 代理/企业/个人后端拒绝。【主: Query| 辅: API/Infrastructure| 边界: 全局事件与详情| 不迁移: 细粒度权限码、导出和修改| 验证: Fiber 响应、身份隔离、筛选、分页、无 N+1 和数据库 <50ms 测试 PASS , LSP 无诊断】
- [ ] 2.2 交付操作者行为视角, 支持人工账号、OpenAPI、系统任务和外部系统 actor, 返回历史名称快照及 action/result/risk/resource 筛选。【主: Query| 边界: actor 时间线|不迁移:用户画像或风控处置|验证:账号改名/删除、系统 actor、不伪造发起人和稳定分页测试 PASS , LSP 无诊断】
- [ ] 2.3 交付 Resource Registry 搜索与通用资源时间线,以卡 ICCID/VirtualNo、设备 VirtualNo/IMEI/SN、店铺、订单和退款为首批 resolver, 资源删除或换号后使用事件快照解释历史。【主: Query| 辅: Resource Resolver| 边界: 注册资源精确/索引搜索与 timeline| 不迁移: 任意 JSON 模糊搜索和关系图| 验证: 资源搜索、primary/affected/reference、历史快照、稳定分页和查询计划测试 PASS , LSP 无诊断】
- [ ] 2.4 新增平台审计 Handler/DTO/RouteSpec 并完成生产结构体注入、路由注册、共享文档 Handler、`cmd/api/docs.go` 、`cmd/gendocs/main.go` 和中文错误码/文档;按 design 8.1-8.4 固化卡、设备、设备卡槽、统一资产、分配、换货、账号、店铺、企业、订单、退款、充值和钱包页面的 `response.data` 字段到目标接口参数映射,并冻结 `investigation_refs` 与降级规则,保证两条 OpenAPI 生成路径包含全部基础调查接口。【主: API/Infrastructure| 边界: 2.1-2.3 Handler 契约|不迁移:前端实现|验证:逐矩阵 HTTP 参数映射、缺字段隐藏、伪造身份、调查节点跳转、静态/动态路由顺序、两份 OpenAPI 和构建检查 PASS, LSP 无诊断】
- [ ] 2.5 交付 Action Registry 标记的敏感读取审计,以受控审计详情或明文业务凭证读取为代表:返回结果前写入读取者、目标资源和字段类别,写入失败则不返回结果;普通列表/详情仍按 N/A 契约执行。【主: Query + Application/Port| 边界: 敏感读取例外| 不迁移: 细粒度权限码与敏感二次查看 UI| 验证: 成功读取、审计失败关闭、普通读取不写和安全凭据永不返回测试 PASS , LSP 无诊断】
- [x ] 2.1 交付平台身份保护的事件列表和详情纵向切片,包含组合筛选、稳定分页、操作者/入口/结果/风险、多资源角色、身份快照及资源级 before/after; 平台不做数据行过滤, 代理/企业/个人后端拒绝。【主: Query| 辅: API/Infrastructure| 边界: 全局事件与详情| 不迁移: 细粒度权限码、导出和修改| 验证: Fiber 响应、身份隔离、筛选、分页、无 N+1 和数据库 <50ms 核对通过 , LSP 无诊断】
- [x ] 2.2 交付操作者行为视角, 支持人工账号、OpenAPI、系统任务和外部系统 actor, 返回历史名称快照及 action/result/risk/resource 筛选。【主: Query| 边界: actor 时间线|不迁移:用户画像或风控处置|验证:账号改名/删除、系统 actor、不伪造发起人和稳定分页核对通过 , LSP 无诊断】
- [x ] 2.3 交付 Resource Registry 搜索与通用资源时间线,以卡 ICCID/VirtualNo、设备 VirtualNo/IMEI/SN、店铺、订单和退款为首批 resolver, 资源删除或换号后使用事件快照解释历史。【主: Query| 辅: Resource Resolver| 边界: 注册资源精确/索引搜索与 timeline| 不迁移: 任意 JSON 模糊搜索和关系图| 验证: 资源搜索、primary/affected/reference、历史快照、稳定分页和查询计划核对通过 , LSP 无诊断】
- [x ] 2.4 新增平台审计 Handler/DTO/RouteSpec 并完成生产结构体注入、路由注册、共享文档 Handler、`cmd/api/docs.go` 、`cmd/gendocs/main.go` 和中文错误码/文档;按 design 8.1-8.4 固化卡、设备、设备卡槽、统一资产、分配、换货、账号、店铺、企业、订单、退款、充值和钱包页面的 `response.data` 字段到目标接口参数映射,并冻结 `investigation_refs` 与降级规则,保证两条 OpenAPI 生成路径包含全部基础调查接口。【主: API/Infrastructure| 边界: 2.1-2.3 Handler 契约|不迁移:前端实现|验证:逐矩阵 HTTP 参数映射、缺字段隐藏、伪造身份、调查节点跳转、静态/动态路由顺序、两份 OpenAPI 和构建检查 PASS, LSP 无诊断】
- [x ] 2.5 交付 Action Registry 标记的敏感读取审计,以受控审计详情或明文业务凭证读取为代表:返回结果前写入读取者、目标资源和字段类别,写入失败则不返回结果;普通列表/详情仍按 N/A 契约执行。【主: Query + Application/Port| 边界: 敏感读取例外| 不迁移: 细粒度权限码与敏感二次查看 UI| 验证: 成功读取、审计失败关闭、普通读取不写和安全凭据永不返回核对通过 , LSP 无诊断】
## 3. Integration Log 只读调查中心
- [ ] 3.1 交付 Integration Log 组合筛选列表与稳定 `integration_id` 详情纵向切片,返回 identity/resource/trigger/result/content/linkage/timestamps 分组、原始结果、中文名和派生类别,不直接暴露 GORM Model。【主: Query| 辅: API| 边界: 现有 Integration Log 只读投影| 不迁移: Writer 业务语义与恢复操作|验证:全部筛选、空页、不存在、统一响应和无 N+1 测试 PASS , LSP 无诊断】
- [ ] 3.2 交付受时间范围约束的 Integration overview, 覆盖总量、结果/provider/direction、异常、unknown、陈旧 pending、状态变化、平均/P95 耗时与趋势,严格区分 success、processing、indeterminate、failed 和 not_sent。【主: Query| 边界: 固定聚合维度| 不迁移: 告警处置和自动恢复| 验证: 聚合语义、时间边界、completed 不计 success 和查询计划测试 PASS , LSP 无诊断】
- [ ] 3.3 交付显式 `trigger_series + attempt` 尝试序列,并增量修正新外呼的 series/correlation 传播、correlation 长度、真实资源 ID 和安全可读错误摘要;历史缺字段时标记受限,旧 `request_summary/response_summary/metadata` 返回前按白名单和凭据删除规则重新清理,禁止直接透传或按相似资源/时间猜测重试。【主: Infrastructure Adapter + Query| 边界: Integration 链路可解释性与历史读取安全| 不迁移: 历史伪回填与多资源子表| 验证: 序列排序、correlation 非重试、ICCID hash 兼容、历史 fidelity、敌对历史 JSON 和凭据不返回测试 PASS , LSP 无诊断】
- [ ] 3.4 为现有 Integration 表补受控 B-tree 索引并交付 overview/list/detail Handler、RouteSpec、生产装配和两条 OpenAPI 生成入口;明确筛选来自调查输入或关联视角跳转、`integration_id` 来自列表/通知 target/调查节点、身份来自认证上下文,只注册 GET, 不提供重试、补偿、确认、绑定、恢复、修改、删除或导出路由。【主: Query/API + Migration| 边界: Integration 调查中心| 不迁移: JSONB GIN 与任意全文搜索|验证:迁移 up/down、索引命中、通知 `target_key→integration_id` 、不可用目标、HTTP/OpenAPI、只读路由扫描和性能目标 PASS, LSP 无诊断】
- [x ] 3.1 交付 Integration Log 组合筛选列表与稳定 `integration_id` 详情纵向切片,返回 identity/resource/trigger/result/content/linkage/timestamps 分组、原始结果、中文名和派生类别,不直接暴露 GORM Model。【主: Query| 辅: API| 边界: 现有 Integration Log 只读投影| 不迁移: Writer 业务语义与恢复操作|验证:全部筛选、空页、不存在、统一响应和无 N+1 核对通过 , LSP 无诊断】
- [x ] 3.2 交付受时间范围约束的 Integration overview, 覆盖总量、结果/provider/direction、异常、unknown、陈旧 pending、状态变化、平均/P95 耗时与趋势,严格区分 success、processing、indeterminate、failed 和 not_sent。【主: Query| 边界: 固定聚合维度| 不迁移: 告警处置和自动恢复| 验证: 聚合语义、时间边界、completed 不计 success 和查询计划核对通过 , LSP 无诊断】
- [x ] 3.3 交付显式 `trigger_series + attempt` 尝试序列,并增量修正新外呼的 series/correlation 传播、correlation 长度、真实资源 ID 和安全可读错误摘要;历史缺字段时标记受限,旧 `request_summary/response_summary/metadata` 返回前按白名单和凭据删除规则重新清理,禁止直接透传或按相似资源/时间猜测重试。【主: Infrastructure Adapter + Query| 边界: Integration 链路可解释性与历史读取安全| 不迁移: 历史伪回填与多资源子表| 验证: 序列排序、correlation 非重试、ICCID hash 兼容、历史 fidelity、敌对历史 JSON 和凭据不返回核对通过 , LSP 无诊断】
- [x ] 3.4 为现有 Integration 表补受控 B-tree 索引并交付 overview/list/detail Handler、RouteSpec、生产装配和两条 OpenAPI 生成入口;明确筛选来自调查输入或关联视角跳转、`integration_id` 来自列表/通知 target/调查节点、身份来自认证上下文,只注册 GET, 不提供重试、补偿、确认、绑定、恢复、修改、删除或导出路由。【主: Query/API + Migration| 边界: Integration 调查中心| 不迁移: JSONB GIN 与任意全文搜索|验证:迁移 up/down、索引命中、通知 `target_key→integration_id` 、不可用目标、HTTP/OpenAPI、只读路由扫描和性能目标 PASS, LSP 无诊断】
## 4. 代理/企业安全资源活动与旧历史入口隔离
- [ ] 4.1 交付代理资源活动纵向切片:按当前资源店铺及自身/下级店铺范围校验卡、设备、分配、换货、店铺和归属企业,读取 `subject_result/subject_detail` ,完全隐藏 `internal_only` 、平台操作者、内部原因/备注、风险、内部 before/after、Audit Event ID 和 Integration 内容。【主: Query| 辅: API/数据权限|边界:代理范围资源活动|不迁移:平台审计 DTO 与权限码|验证:各类稳定 identifier、有权、越权/不存在同错、分配详情独立归属、无事件存在性泄露、多资源部分可见测试 PASS , LSP 无诊断】
- [ ] 4.2 交付企业资源活动纵向切片:卡与设备分别复用当前有效企业授权关系,禁止在企业缺少 SubordinateShopIDs 时退化为全量; 撤销授权后不可继续读取资源活动。【主: Query| 辅: API/授权 Store| 边界: 企业卡/设备活动|不迁移:企业授权业务规则|验证:有效/撤销授权、无权同错、设备关联卡和安全字段测试 PASS , LSP 无诊断】
- [ ] 4.3 交付资源关系级 `internal_only/subject_result/subject_detail` 、稳定 `subject_summary` 和 Registry 白名单约束的 `subject_data` 写入契约,以平台退款处理、主体自身操作、内部补偿和外部回调为代表场景,查询时不读取内部 before/after 后删字段生成外部结果。【主: Application + Query| 边界: 主体可见性快照| 不迁移: 前端文案系统| 验证: 三种级别、subject_data 白名单、平台过程不可感知、最终业务结论正确和凭据缺失测试 PASS , LSP 无诊断】
- [ ] 4.5 新增 `GET /api/admin/agent/resource-activities/{resource_type}/{identifier}` 和 `GET /api/admin/enterprise/resource-activities/{resource_type}/{identifier}` 的 Handler/DTO/RouteSpec, 冻结 `page/page_size` 、资源摘要和 activity 字段;按 design 8.1 复用卡 ICCID、设备 VirtualNo、分配单号、换货单号、店铺编号、企业编号及企业受权资产列表字段, 主体范围只来自认证上下文, 缺少 identifier 时不展示入口。先上线安全接口,再把旧资产 operation-logs 收缩为仅平台历史入口,并同步生产装配、共享文档 Handler、两个 OpenAPI 生成入口和中文接口文档。【主: API/Query| 边界: expand 阶段兼容切换| 不迁移: 旧日志迁移、删除旧路由| 验证: design 8.1 全部主体映射、企业禁止 resolve、缺字段隐藏、伪造范围、分配详情独立归属、不可见字段、授权撤销、旧接口身份收缩、两份 OpenAPI 和构建检查 PASS, LSP 无诊断】
- [x ] 4.1 交付代理资源活动纵向切片:按当前资源店铺及自身/下级店铺范围校验卡、设备、分配、换货、店铺和归属企业,读取 `subject_result/subject_detail` ,完全隐藏 `internal_only` 、平台操作者、内部原因/备注、风险、内部 before/after、Audit Event ID 和 Integration 内容。【主: Query| 辅: API/数据权限|边界:代理范围资源活动|不迁移:平台审计 DTO 与权限码|验证:各类稳定 identifier、有权、越权/不存在同错、分配详情独立归属、无事件存在性泄露、多资源部分可见核对通过 , LSP 无诊断】
- [x ] 4.2 交付企业资源活动纵向切片:卡与设备分别复用当前有效企业授权关系,禁止在企业缺少 SubordinateShopIDs 时退化为全量; 撤销授权后不可继续读取资源活动。【主: Query| 辅: API/授权 Store| 边界: 企业卡/设备活动|不迁移:企业授权业务规则|验证:有效/撤销授权、无权同错、设备关联卡和安全字段核对通过 , LSP 无诊断】
- [x ] 4.3 交付资源关系级 `internal_only/subject_result/subject_detail` 、稳定 `subject_summary` 和 Registry 白名单约束的 `subject_data` 写入契约,以平台退款处理、主体自身操作、内部补偿和外部回调为代表场景,查询时不读取内部 before/after 后删字段生成外部结果。【主: Application + Query| 边界: 主体可见性快照| 不迁移: 前端文案系统| 验证: 三种级别、subject_data 白名单、平台过程不可感知、最终业务结论正确和凭据缺失核对通过 , LSP 无诊断】
- [x ] 4.5 新增 `GET /api/admin/agent/resource-activities/{resource_type}/{identifier}` 和 `GET /api/admin/enterprise/resource-activities/{resource_type}/{identifier}` 的 Handler/DTO/RouteSpec, 冻结 `page/page_size` 、资源摘要和 activity 字段;按 design 8.1 复用卡 ICCID、设备 VirtualNo、分配单号、换货单号、店铺编号、企业编号及企业受权资产列表字段, 主体范围只来自认证上下文, 缺少 identifier 时不展示入口。先上线安全接口,再把旧资产 operation-logs 收缩为仅平台历史入口,并同步生产装配、共享文档 Handler、两个 OpenAPI 生成入口和中文接口文档。【主: API/Query| 边界: expand 阶段兼容切换| 不迁移: 旧日志迁移、删除旧路由| 验证: design 8.1 全部主体映射、企业禁止 resolve、缺字段隐藏、伪造范围、分配详情独立归属、不可见字段、授权撤销、旧接口身份收缩、两份 OpenAPI 和构建检查 PASS, LSP 无诊断】
## 5. 账号、权限、组织与主体写入口迁移
- [ ] 5.1 迁移账号创建、基础资料更新、启停和软删除纵向用例到统一 Writer, 关联账号、店铺/企业和实际角色资源,已定位账号的失败/拒绝进入短事务;逐用例转绿 后停止对应旧 account operation log 写入。【主:简单写/Application + 旧 Service Adapter| 边界: 账号生命周期| 不迁移: 凭据和第三方绑定| 验证: 各状态操作、资源快照、失败/拒绝、旧写逐项归零和 HTTP 测试 PASS , LSP 无诊断】
- [ ] 5.2 迁移改密、手机号安全操作、企微绑定及登录/登出安全状态纵向用例, 记录账号与认证资源但删除密码、验证码、Token、Cookie 等凭据。【主:简单写/Application + 旧 Service Adapter| 边界: 账号安全操作| 不迁移: 认证协议重构| 验证: 成功/拒绝/失败、凭据数据库抽样、actor/request 关联和旧写归零测试 PASS , LSP 无诊断】
- [ ] 5.3 迁移角色 CRUD、权限 CRUD 和角色权限配置纵向用例,保存角色/权限 code/name 和前后差异,高风险成功与业务事实同事务。【主:简单写 + Application| 边界: 角色权限配置| 不迁移: 账号角色分配与新权限体系| 验证: CRUD/拒绝、before/after、同事务和资源时间线测试 PASS , LSP 无诊断】
- [ ] 5.4 迁移账号角色、店铺角色的分配与移除纵向用例,分别关联目标账号、角色和店铺并停止对应旧账号日志写入。【主:简单写 + Application| 边界: 主体授权关系| 不迁移: 权限码重构| 验证: 分配/移除/重复/拒绝、资源角色、旧写归零和 actor 查询测试 PASS , LSP 无诊断】
- [ ] 5.5 迁移店铺创建、基础资料和层级变更纵向用例,保存店铺编码/名称/上级/层级及操作者,不借审计改变层级规则。【主:简单写 + Application| 边界: 店铺身份与层级| 不迁移: 状态、业务员和登录限制| 验证: 创建/更新/层级拒绝、历史快照和店铺时间线测试 PASS , LSP 无诊断】
- [ ] 5.6 迁移店铺启停、删除、业务员绑定和 C 端登录限制纵向用例,主体活动仅输出允许感知结论,逐用例停止旧账号日志借用写入。【主:简单写 + Application| 边界: 店铺状态与关键配置| 不迁移: 全模块 DDD| 验证: 状态/绑定/拒绝、subject 投影、旧写归零测试 PASS , LSP 无诊断】
- [ ] 5.7 迁移企业创建、资料/状态/凭据管理纵向用例,关联企业和 owner shop, 保持现有企业规则并删除安全凭据。【主: 简单写 + Application| 边界: 企业生命周期| 不迁移: 资产授权| 验证: CRUD/启停/改密、凭据删除、actor/scope 和时间线测试 PASS , LSP 无诊断】
- [ ] 5.8 迁移企业卡授权/回收纵向用例, 关联企业、owner shop、卡和授权记录并保持现有有效授权语义。【主: 简单写 + Application| 边界: 企业卡授权| 不迁移: 设备授权| 验证: 授权/撤销/重复/越权、卡活动和企业范围测试 PASS , LSP 无诊断】
- [ ] 5.9 迁移企业设备授权/回收纵向用例,关联企业、设备及实际随设备处理的绑定卡,保持现有授权语义。【主:复杂写或简单写事务脚本|边界:企业设备授权|不迁移:卡槽绑定规则|验证:多卡设备授权/撤销/越权、资源关系和企业活动测试 PASS , LSP 无诊断】
- [ ] 5.10 迁移个人客户资料、手机号和微信主体纵向用例,记录真实个人 actor, 不把普通查询或 Token 刷新误记为业务操作。【主:简单写 + Application| 边界: 个人客户身份资料| 不迁移: 资产绑定| 验证: 资料/手机号/微信变更、失败、凭据删除和 subject_detail 测试 PASS , LSP 无诊断】
- [ ] 5.11 迁移个人客户卡/设备绑定、解绑和换货绑定迁移纵向用例,关联客户、资产和绑定记录。【主:简单写或复杂写 Application| 边界: 客户资产关系| 不迁移: 换货其他资金/套餐步骤|验证:绑定/解绑/迁移、资源快照、越权和多资源活动测试 PASS , LSP 无诊断】
- [x ] 5.1 迁移账号创建、基础资料更新、启停和软删除纵向用例到统一 Writer, 关联账号、店铺/企业和实际角色资源,已定位账号的失败/拒绝进入短事务;逐用例核对完成 后停止对应旧 account operation log 写入。【主:简单写/Application + 旧 Service Adapter| 边界: 账号生命周期| 不迁移: 凭据和第三方绑定| 验证: 各状态操作、资源快照、失败/拒绝、旧写逐项归零和 HTTP 核对通过 , LSP 无诊断】
- [x ] 5.2 迁移改密、手机号安全操作、企微绑定及登录/登出安全状态纵向用例, 记录账号与认证资源但删除密码、验证码、Token、Cookie 等凭据。【主:简单写/Application + 旧 Service Adapter| 边界: 账号安全操作| 不迁移: 认证协议重构| 验证: 成功/拒绝/失败、凭据数据库抽样、actor/request 关联和旧写归零核对通过 , LSP 无诊断】
- [x ] 5.3 迁移角色 CRUD、权限 CRUD 和角色权限配置纵向用例,保存角色/权限 code/name 和前后差异,高风险成功与业务事实同事务。【主:简单写 + Application| 边界: 角色权限配置| 不迁移: 账号角色分配与新权限体系| 验证: CRUD/拒绝、before/after、同事务和资源时间线核对通过 , LSP 无诊断】
- [x ] 5.4 迁移账号角色、店铺角色的分配与移除纵向用例,分别关联目标账号、角色和店铺并停止对应旧账号日志写入。【主:简单写 + Application| 边界: 主体授权关系| 不迁移: 权限码重构| 验证: 分配/移除/重复/拒绝、资源角色、旧写归零和 actor 查询核对通过 , LSP 无诊断】
- [x ] 5.5 迁移店铺创建、基础资料和层级变更纵向用例,保存店铺编码/名称/上级/层级及操作者,不借审计改变层级规则。【主:简单写 + Application| 边界: 店铺身份与层级| 不迁移: 状态、业务员和登录限制| 验证: 创建/更新/层级拒绝、历史快照和店铺时间线核对通过 , LSP 无诊断】
- [x ] 5.6 迁移店铺启停、删除、业务员绑定和 C 端登录限制纵向用例,主体活动仅输出允许感知结论,逐用例停止旧账号日志借用写入。【主:简单写 + Application| 边界: 店铺状态与关键配置| 不迁移: 全模块 DDD| 验证: 状态/绑定/拒绝、subject 投影、旧写归零核对通过 , LSP 无诊断】
- [x ] 5.7 迁移企业创建、资料/状态/凭据管理纵向用例,关联企业和 owner shop, 保持现有企业规则并删除安全凭据。【主: 简单写 + Application| 边界: 企业生命周期| 不迁移: 资产授权| 验证: CRUD/启停/改密、凭据删除、actor/scope 和时间线核对通过 , LSP 无诊断】
- [x ] 5.8 迁移企业卡授权/回收纵向用例, 关联企业、owner shop、卡和授权记录并保持现有有效授权语义。【主: 简单写 + Application| 边界: 企业卡授权| 不迁移: 设备授权| 验证: 授权/撤销/重复/越权、卡活动和企业范围核对通过 , LSP 无诊断】
- [x ] 5.9 迁移企业设备授权/回收纵向用例,关联企业、设备及实际随设备处理的绑定卡,保持现有授权语义。【主:复杂写或简单写事务脚本|边界:企业设备授权|不迁移:卡槽绑定规则|验证:多卡设备授权/撤销/越权、资源关系和企业活动核对通过 , LSP 无诊断】
- [x ] 5.10 迁移个人客户资料、手机号和微信主体纵向用例,记录真实个人 actor, 不把普通查询或 Token 刷新误记为业务操作。【主:简单写 + Application| 边界: 个人客户身份资料| 不迁移: 资产绑定| 验证: 资料/手机号/微信变更、失败、凭据删除和 subject_detail 核对通过 , LSP 无诊断】
- [ ] 5.11 迁移个人客户卡/设备绑定、解绑和换货绑定迁移纵向用例,关联客户、资产和绑定记录。【主:简单写或复杂写 Application| 边界: 客户资产关系| 不迁移: 换货其他资金/套餐步骤|验证:绑定/解绑/迁移、资源快照、越权和多资源活动核对通过 , LSP 无诊断】
## 6. 卡、设备、绑定、分配与换货迁移
- [ ] 6.1 迁移 IoT 卡创建/导入落库、基础资料、删除纵向用例,快照含 ID/ICCID/VirtualNo/MSISDN/运营商/店铺/系列/generation。【主: 简单写 + 旧 Service Adapter| 边界: 卡身份生命周期| 不迁移: 状态与外部命令| 验证: 创建/更新/删除、历史快照、凭据规则和旧资产写归零测试 PASS , LSP 无诊断】
- [ ] 6.2 迁移 IoT 卡分配、回收和系列绑定纵向用例,关联分配记录、来源/目标店铺、系列和必要设备关系。【主:复杂写或简单写事务脚本|边界:卡归属与系列|不迁移:卡状态/Gateway| 验证: 分配/回收/拒绝、多资源、主体活动和旧写归零测试 PASS , LSP 无诊断】
- [ ] 6.3 迁移 IoT 卡停复机、实名策略/状态、限速和人工刷新纵向用例,实际外部尝试写 Integration Log, 内部状态变化写 Audit Event, unknown 不伪装失败或成功。【主:复杂写 + Gateway Adapter| 边界: 卡状态与外部命令| 不迁移: 卡归属| 验证: success/failed/denied/unknown、Integration/Audit 分界、主体结论和旧写归零测试 PASS , LSP 无诊断】
- [ ] 6.4 迁移设备创建/导入落库、基础资料和删除纵向用例,快照含 ID/VirtualNo/IMEI/SN/型号/店铺/系列/generation。【主: 简单写 + 旧 Service Adapter| 边界: 设备身份生命周期| 不迁移: 状态、卡槽与 Gateway| 验证: 创建/更新/删除、历史快照和旧资产写归零测试 PASS , LSP 无诊断】
- [ ] 6.5 迁移设备分配、回收和系列/实名策略纵向用例,关联分配记录、来源/目标店铺及实际连带卡。【主:复杂写或简单写事务脚本|边界:设备归属与策略|不迁移:设备外部命令|验证:分配/回收/策略、设备卡关系、主体活动和旧写归零测试 PASS , LSP 无诊断】
- [ ] 6.6 迁移设备停复机、Wi-Fi、切卡模式、重启和重置纵向用例, 外部尝试写 Integration Log, 实际内部变化写 Audit Event。【主: 复杂写 + Gateway Adapter| 边界: 设备外部命令| 不迁移: 设备归属与卡槽绑定| 验证: success/failed/unknown、设备时间线、安全结论和旧写归零测试 PASS , LSP 无诊断】
- [ ] 6.7 迁移设备绑卡、解绑和当前卡切换纵向用例,把设备、目标卡、旧/新当前卡及每个 binding 作为一等资源,保存 slot/is_current。【主: 复杂写| 边界: 设备卡槽关系完整用例| 不迁移: 设备/卡其他状态机| 验证: 1-4 卡槽、旧新卡角色、资源双向时间线、事务和主体范围测试 PASS , LSP 无诊断】
- [ ] 6.8 迁移单笔资产分配/回收纵向用例,关联分配记录、来源/目标店铺、设备及实际连带卡。【主:复杂写 Application| 边界: 单笔资产流转| 不迁移: 批量分配和企业授权| 验证: 卡/设备流转、多资源、越权和每资源时间线测试 PASS , LSP 无诊断】
- [ ] 6.9 迁移批量设备分配纵向用例,批次根事件与每台实际变化设备/绑定卡子事件计数一致。【主:复杂写 + Application/Asynq| 边界: 批量设备流转| 不迁移: 其他批量任务| 验证: success/partial/failed、根子计数、幂等和店铺范围测试 PASS , LSP 无诊断】
- [ ] 6.10 迁移卡换货完整用例,记录换货单、旧/新卡 ICCID+VirtualNo、客户绑定、钱包/流水、套餐权益、店铺和状态变化。【主:复杂写 Domain/Application| 辅: Outbox/Query| 边界: 卡换货创建至完成/取消/迁移|不迁移:设备换货|验证:资金/套餐/客户迁移、失败回滚、多资源时间线和外部安全结论测试 PASS , LSP 无诊断】
- [ ] 6.11 迁移设备换货完整用例,记录旧/新设备 VirtualNo+IMEI+SN、实际绑定卡/卡槽、客户绑定、钱包/流水、套餐权益、店铺和换货单。【主:复杂写 Domain/Application| 辅: Outbox/Query| 边界: 设备换货完整流程| 不迁移: 无关订单规则| 验证: 多卡设备换货、资金/套餐/客户迁移、失败回滚和所有资源时间线测试 PASS , LSP 无诊断】
- [ ] 6.1 迁移 IoT 卡创建/导入落库、基础资料、删除纵向用例,快照含 ID/ICCID/VirtualNo/MSISDN/运营商/店铺/系列/generation。【主: 简单写 + 旧 Service Adapter| 边界: 卡身份生命周期| 不迁移: 状态与外部命令| 验证: 创建/更新/删除、历史快照、凭据规则和旧资产写归零核对通过 , LSP 无诊断】
- [ ] 6.2 迁移 IoT 卡分配、回收和系列绑定纵向用例,关联分配记录、来源/目标店铺、系列和必要设备关系。【主:复杂写或简单写事务脚本|边界:卡归属与系列|不迁移:卡状态/Gateway| 验证: 分配/回收/拒绝、多资源、主体活动和旧写归零核对通过 , LSP 无诊断】
- [ ] 6.3 迁移 IoT 卡停复机、实名策略/状态、限速和人工刷新纵向用例,实际外部尝试写 Integration Log, 内部状态变化写 Audit Event, unknown 不伪装失败或成功。【主:复杂写 + Gateway Adapter| 边界: 卡状态与外部命令| 不迁移: 卡归属| 验证: success/failed/denied/unknown、Integration/Audit 分界、主体结论和旧写归零核对通过 , LSP 无诊断】
- [ ] 6.4 迁移设备创建/导入落库、基础资料和删除纵向用例,快照含 ID/VirtualNo/IMEI/SN/型号/店铺/系列/generation。【主: 简单写 + 旧 Service Adapter| 边界: 设备身份生命周期| 不迁移: 状态、卡槽与 Gateway| 验证: 创建/更新/删除、历史快照和旧资产写归零核对通过 , LSP 无诊断】
- [ ] 6.5 迁移设备分配、回收和系列/实名策略纵向用例,关联分配记录、来源/目标店铺及实际连带卡。【主:复杂写或简单写事务脚本|边界:设备归属与策略|不迁移:设备外部命令|验证:分配/回收/策略、设备卡关系、主体活动和旧写归零核对通过 , LSP 无诊断】
- [ ] 6.6 迁移设备停复机、Wi-Fi、切卡模式、重启和重置纵向用例, 外部尝试写 Integration Log, 实际内部变化写 Audit Event。【主: 复杂写 + Gateway Adapter| 边界: 设备外部命令| 不迁移: 设备归属与卡槽绑定| 验证: success/failed/unknown、设备时间线、安全结论和旧写归零核对通过 , LSP 无诊断】
- [ ] 6.7 迁移设备绑卡、解绑和当前卡切换纵向用例,把设备、目标卡、旧/新当前卡及每个 binding 作为一等资源,保存 slot/is_current。【主: 复杂写| 边界: 设备卡槽关系完整用例| 不迁移: 设备/卡其他状态机| 验证: 1-4 卡槽、旧新卡角色、资源双向时间线、事务和主体范围核对通过 , LSP 无诊断】
- [ ] 6.8 迁移单笔资产分配/回收纵向用例,关联分配记录、来源/目标店铺、设备及实际连带卡。【主:复杂写 Application| 边界: 单笔资产流转| 不迁移: 批量分配和企业授权| 验证: 卡/设备流转、多资源、越权和每资源时间线核对通过 , LSP 无诊断】
- [ ] 6.9 迁移批量设备分配纵向用例,批次根事件与每台实际变化设备/绑定卡子事件计数一致。【主:复杂写 + Application/Asynq| 边界: 批量设备流转| 不迁移: 其他批量任务| 验证: success/partial/failed、根子计数、幂等和店铺范围核对通过 , LSP 无诊断】
- [ ] 6.10 迁移卡换货完整用例,记录换货单、旧/新卡 ICCID+VirtualNo、客户绑定、钱包/流水、套餐权益、店铺和状态变化。【主:复杂写 Domain/Application| 辅: Outbox/Query| 边界: 卡换货创建至完成/取消/迁移|不迁移:设备换货|验证:资金/套餐/客户迁移、失败回滚、多资源时间线和外部安全结论核对通过 , LSP 无诊断】
- [ ] 6.11 迁移设备换货完整用例,记录旧/新设备 VirtualNo+IMEI+SN、实际绑定卡/卡槽、客户绑定、钱包/流水、套餐权益、店铺和换货单。【主:复杂写 Domain/Application| 辅: Outbox/Query| 边界: 设备换货完整流程| 不迁移: 无关订单规则| 验证: 多卡设备换货、资金/套餐/客户迁移、失败回滚和所有资源时间线核对通过 , LSP 无诊断】
## 7. 套餐、交易与资金纵向迁移
- [ ] 7.1 迁移套餐系列、套餐商品、店铺系列/套餐分配、批量定价和关键价格配置纵向用例,关联店铺、系列、套餐和价格历史,保持现有上架/分配规则。【主:简单写 + Application| 边界: 套餐配置与授权| 不迁移: 套餐购买流程| 验证: before/after、批量根子、店铺时间线、凭据规则和旧 account 借用写归零测试 PASS , LSP 无诊断】
- [ ] 7.2 迁移套餐权益激活、排队、流量重置/扣减、退款失效、资产失效和换货迁移纵向用例,系统任务使用真实 actor, 权益、订单、套餐和资产作为独立资源。【主: 复杂写 Domain/Application| 辅: Worker/Outbox| 边界: package_usage 生命周期|不迁移:套餐列表 Query| 验证: 状态条件、重复任务幂等、系统 actor、父子链路和资源时间线测试 PASS , LSP 无诊断】
- [ ] 7.3 迁移订单创建、后台代购、C 端/OpenAPI 购买、取消、钱包支付和过期关闭纵向用例,关联买家/操作者、资产、套餐、金额、支付方式、钱包/流水和购买角色。【主:复杂写 Domain/Application| 辅: Outbox| 边界: 订单状态与支付准备| 不迁移: 订单只读列表| 验证: 各入口 actor、成功/拒绝/失败、资金同事务、系统过期和链路测试 PASS , LSP 无诊断】
- [ ] 7.4 迁移支付创建、微信/支付宝/富友预下单、查单和回调确认纵向用例:每次外部尝试写 Integration Log, 实际改变支付/订单/充值事实时写 Audit Event, 关联支付单、业务单、渠道交易号和 correlation。【主: 复杂写 + Infrastructure Adapter| 边界: 支付外部与内部终态| 不迁移: 渠道协议重构| 验证: success/unknown/迟到回调/重复回调、series/correlation、Domain Ledger 和时间线测试 PASS , LSP 无诊断】
- [ ] 7.5 迁移退款申请、审批终态、钱包回充、佣金失效、套餐/资产后处理和通知纵向用例,关联退款、审批、订单、资产、钱包、原扣款/退款流水、佣金和套餐权益,资金事实与审计同事务。【主:复杂写 Domain/Application| 辅: Outbox/Integration| 边界: 退款完整业务链| 不迁移: 原路退款等未实现能力| 验证: 通过/拒绝/重提/重复终态/失败回滚、资金时间线和代理安全结论测试 PASS , LSP 无诊断】
- [ ] 7.6 迁移个人资产充值和代理在线/线下充值纵向用例,关联充值单、提交人、店铺/资产、支付或审批、钱包、交易流水和自动购包;外部回调与系统恢复使用真实 actor。【主: 复杂写 Domain/Application| 辅: Payment/Approval/Outbox| 边界: 充值创建至入账| 不迁移: 新充值渠道| 验证: 在线/线下、回调/审批、重复入账、unknown、资金同事务和主体投影测试 PASS , LSP 无诊断】
- [ ] 7.7 迁移代理主钱包订单扣款和预占/释放/完成纵向用例,关联订单、钱包、预占、唯一流水和余额前后值。【主:复杂写 Domain/Application| 辅: Outbox| 边界: 订单资金占用与扣款| 不迁移: 充值/退款/信用额度|验证:乐观锁/状态条件、唯一业务键、审计失败回滚和失败短事务测试 PASS , LSP 无诊断】
- [ ] 7.8 迁移代理主钱包充值入账、人工调整、退款回充和信用额度纵向用例,逐项关联业务单、原流水/新流水和余额前后值。【主:复杂写 Domain/Application| 辅: Outbox| 边界: 代理钱包正向及回退资金| 不迁移: 资产钱包与佣金提现| 验证: 重复入账/退款上限/人工原因/信用变更、同事务和资金查询测试 PASS , LSP 无诊断】
- [ ] 7.9 迁移卡/设备资产钱包充值、扣款、退款和换货迁移纵向用例,关联资产完整标识、钱包、业务单和唯一流水。【主:复杂写 Domain/Application| 边界: 资产钱包资金| 不迁移: 代理主钱包| 验证: 卡/设备、换货、重复业务键、余额前后值和资源时间线测试 PASS , LSP 无诊断】
- [ ] 7.10 迁移佣金计算/入账/失效和提现申请/审批/驳回纵向用例,关联店铺、订单、系列、佣金记录、提现单、钱包/流水和金额状态。【主:复杂写 Domain/Application| 辅: Worker/Outbox| 边界: 佣金与提现完整状态机| 不迁移: 统计 Query| 验证: 计算幂等、审批终态、资金同事务、失败短事务和资金时间线测试 PASS , LSP 无诊断】
- [ ] 7.1 迁移套餐系列、套餐商品、店铺系列/套餐分配、批量定价和关键价格配置纵向用例,关联店铺、系列、套餐和价格历史,保持现有上架/分配规则。【主:简单写 + Application| 边界: 套餐配置与授权| 不迁移: 套餐购买流程| 验证: before/after、批量根子、店铺时间线、凭据规则和旧 account 借用写归零核对通过 , LSP 无诊断】
- [ ] 7.2 迁移套餐权益激活、排队、流量重置/扣减、退款失效、资产失效和换货迁移纵向用例,系统任务使用真实 actor, 权益、订单、套餐和资产作为独立资源。【主: 复杂写 Domain/Application| 辅: Worker/Outbox| 边界: package_usage 生命周期|不迁移:套餐列表 Query| 验证: 状态条件、重复任务幂等、系统 actor、父子链路和资源时间线核对通过 , LSP 无诊断】
- [ ] 7.3 迁移订单创建、后台代购、C 端/OpenAPI 购买、取消、钱包支付和过期关闭纵向用例,关联买家/操作者、资产、套餐、金额、支付方式、钱包/流水和购买角色。【主:复杂写 Domain/Application| 辅: Outbox| 边界: 订单状态与支付准备| 不迁移: 订单只读列表| 验证: 各入口 actor、成功/拒绝/失败、资金同事务、系统过期和链路核对通过 , LSP 无诊断】
- [ ] 7.4 迁移支付创建、微信/支付宝/富友预下单、查单和回调确认纵向用例:每次外部尝试写 Integration Log, 实际改变支付/订单/充值事实时写 Audit Event, 关联支付单、业务单、渠道交易号和 correlation。【主: 复杂写 + Infrastructure Adapter| 边界: 支付外部与内部终态| 不迁移: 渠道协议重构| 验证: success/unknown/迟到回调/重复回调、series/correlation、Domain Ledger 和时间线核对通过 , LSP 无诊断】
- [ ] 7.5 迁移退款申请、审批终态、钱包回充、佣金失效、套餐/资产后处理和通知纵向用例,关联退款、审批、订单、资产、钱包、原扣款/退款流水、佣金和套餐权益,资金事实与审计同事务。【主:复杂写 Domain/Application| 辅: Outbox/Integration| 边界: 退款完整业务链| 不迁移: 原路退款等未实现能力| 验证: 通过/拒绝/重提/重复终态/失败回滚、资金时间线和代理安全结论核对通过 , LSP 无诊断】
- [ ] 7.6 迁移个人资产充值和代理在线/线下充值纵向用例,关联充值单、提交人、店铺/资产、支付或审批、钱包、交易流水和自动购包;外部回调与系统恢复使用真实 actor。【主: 复杂写 Domain/Application| 辅: Payment/Approval/Outbox| 边界: 充值创建至入账| 不迁移: 新充值渠道| 验证: 在线/线下、回调/审批、重复入账、unknown、资金同事务和主体投影核对通过 , LSP 无诊断】
- [ ] 7.7 迁移代理主钱包订单扣款和预占/释放/完成纵向用例,关联订单、钱包、预占、唯一流水和余额前后值。【主:复杂写 Domain/Application| 辅: Outbox| 边界: 订单资金占用与扣款| 不迁移: 充值/退款/信用额度|验证:乐观锁/状态条件、唯一业务键、审计失败回滚和失败短事务核对通过 , LSP 无诊断】
- [ ] 7.8 迁移代理主钱包充值入账、人工调整、退款回充和信用额度纵向用例,逐项关联业务单、原流水/新流水和余额前后值。【主:复杂写 Domain/Application| 辅: Outbox| 边界: 代理钱包正向及回退资金| 不迁移: 资产钱包与佣金提现| 验证: 重复入账/退款上限/人工原因/信用变更、同事务和资金查询核对通过 , LSP 无诊断】
- [ ] 7.9 迁移卡/设备资产钱包充值、扣款、退款和换货迁移纵向用例,关联资产完整标识、钱包、业务单和唯一流水。【主:复杂写 Domain/Application| 边界: 资产钱包资金| 不迁移: 代理主钱包| 验证: 卡/设备、换货、重复业务键、余额前后值和资源时间线核对通过 , LSP 无诊断】
- [ ] 7.10 迁移佣金计算/入账/失效和提现申请/审批/驳回纵向用例,关联店铺、订单、系列、佣金记录、提现单、钱包/流水和金额状态。【主:复杂写 Domain/Application| 辅: Worker/Outbox| 边界: 佣金与提现完整状态机| 不迁移: 统计 Query| 验证: 计算幂等、审批终态、资金同事务、失败短事务和资金时间线核对通过 , LSP 无诊断】
## 8. 审批、配置、批量与自动入口迁移
- [ ] 8.1 迁移通用审批和企微申请提交、回调同步、主动恢复及终态分发纵向用例,记录真实提交人、外部系统/系统任务 actor、审批实例、业务单、Integration Log 和 Outbox, 不伪造本地审批人。【主: 复杂写 Domain/Application| 辅: WeCom Adapter/Outbox| 边界: 审批完整链路| 不迁移: 新审批引擎| 验证: 提交、unknown、回调、恢复、重复终态、actor/correlation 和资源时间线测试 PASS , LSP 无诊断】
- [ ] 8.2 迁移支付配置、运营商、企微应用/成员/场景及其他关键连接配置纵向用例,记录配置身份、状态和“凭据是否已配置”,不记录 Secret、Token、AESKey、私钥或证书正文。【主: 简单写 + Infrastructure Adapter| 边界: 外部连接配置| 不迁移: 配置 UI 与渠道业务协议| 验证: CRUD/启停/校验失败、同事务、凭据删除和平台完整业务字段测试 PASS , LSP 无诊断】
- [ ] 8.3 迁移卡/设备导入、资产套餐批购、订单套餐失效和导出任务创建/取消纵向用例,记录任务、文件名/目标/操作者和批量根子结果;对象存储签名 URL 不入审计, 审计中心自身仍不提供导出。【主: Application + Asynq| 辅: Object Storage| 边界: 现有导入批量和业务导出任务动作| 不迁移: 导出 DataSource 内容|验证:结构化 payload、幂等、partial、凭据删除和任务/资源时间线测试 PASS , LSP 无诊断】
- [ ] 8.4 迁移通知生成、投递、单条/全部已读和清理纵向用例,低风险写仍登记 action, 系统清理使用系统 actor, Audit Event 不替代通知或 Outbox 投递事实。【主:简单写/Application + Worker| 边界: 通知状态变化| 不迁移: 通知查询| 验证: 人工/系统 actor、低风险默认展示、Outbox 幂等和资源关联测试 PASS , LSP 无诊断】
- [ ] 8.5 迁移轮询配置、并发配置、告警规则、人工触发/取消和状态变化纵向用例;手动轮询表继续承担进度/结果,实际 Gateway 尝试写 Integration Log, 人工触发动作另写 Audit Event。【主: Application + Adapter| 辅: Scheduler/Query| 边界: 轮询配置与人工动作| 不迁移: 删除手动任务表和普通运行查询| 验证: 配置/触发/拒绝、任务 ledger 保留、Integration/Audit 分界和 actor 测试 PASS , LSP 无诊断】
- [ ] 8.6 迁移支付、运营商实名和企微等外部 Callback 中实际改变内部事实的入口,使用 external actor; 无状态变化只保留 Integration Log。【主: Application/Infrastructure Adapter| 边界: 当前外部回调| 不迁移: 渠道协议| 验证: 逐回调 action、幂等、资源解析、Integration/Audit 分界和链路测试 PASS , LSP 无诊断】
- [ ] 8.1 迁移通用审批和企微申请提交、回调同步、主动恢复及终态分发纵向用例,记录真实提交人、外部系统/系统任务 actor、审批实例、业务单、Integration Log 和 Outbox, 不伪造本地审批人。【主: 复杂写 Domain/Application| 辅: WeCom Adapter/Outbox| 边界: 审批完整链路| 不迁移: 新审批引擎| 验证: 提交、unknown、回调、恢复、重复终态、actor/correlation 和资源时间线核对通过 , LSP 无诊断】
- [ ] 8.2 迁移支付配置、运营商、企微应用/成员/场景及其他关键连接配置纵向用例,记录配置身份、状态和“凭据是否已配置”,不记录 Secret、Token、AESKey、私钥或证书正文。【主: 简单写 + Infrastructure Adapter| 边界: 外部连接配置| 不迁移: 配置 UI 与渠道业务协议| 验证: CRUD/启停/校验失败、同事务、凭据删除和平台完整业务字段核对通过 , LSP 无诊断】
- [ ] 8.3 迁移卡/设备导入、资产套餐批购、订单套餐失效和导出任务创建/取消纵向用例,记录任务、文件名/目标/操作者和批量根子结果;对象存储签名 URL 不入审计, 审计中心自身仍不提供导出。【主: Application + Asynq| 辅: Object Storage| 边界: 现有导入批量和业务导出任务动作| 不迁移: 导出 DataSource 内容|验证:结构化 payload、幂等、partial、凭据删除和任务/资源时间线核对通过 , LSP 无诊断】
- [ ] 8.4 迁移通知生成、投递、单条/全部已读和清理纵向用例,低风险写仍登记 action, 系统清理使用系统 actor, Audit Event 不替代通知或 Outbox 投递事实。【主:简单写/Application + Worker| 边界: 通知状态变化| 不迁移: 通知查询| 验证: 人工/系统 actor、低风险默认展示、Outbox 幂等和资源关联核对通过 , LSP 无诊断】
- [ ] 8.5 迁移轮询配置、并发配置、告警规则、人工触发/取消和状态变化纵向用例;手动轮询表继续承担进度/结果,实际 Gateway 尝试写 Integration Log, 人工触发动作另写 Audit Event。【主: Application + Adapter| 辅: Scheduler/Query| 边界: 轮询配置与人工动作| 不迁移: 删除手动任务表和普通运行查询| 验证: 配置/触发/拒绝、任务 ledger 保留、Integration/Audit 分界和 actor 核对通过 , LSP 无诊断】
- [ ] 8.6 迁移支付、运营商实名和企微等外部 Callback 中实际改变内部事实的入口,使用 external actor; 无状态变化只保留 Integration Log。【主: Application/Infrastructure Adapter| 边界: 当前外部回调| 不迁移: 渠道协议| 验证: 逐回调 action、幂等、资源解析、Integration/Audit 分界和链路核对通过 , LSP 无诊断】
- [ ] 8.7 迁移当前 Worker 中实际改变内部业务事实的入口,使用 system_task actor 并传播 correlation/parent; 纯投递或技术装配按清单 N/A。【主: Application/Asynq| 边界: 当前 Worker 写入口| 不迁移: Scheduler 与 Callback| 验证: 逐 Worker 覆盖、幂等、失败重试和未登记动作门禁 PASS, LSP 无诊断】
- [ ] 8.8 迁移当前 Scheduler 中实际创建任务、改变配置/状态或产生业务事实的入口,使用 scheduled_job actor; 实施时以当前清单为准, 不硬编码历史数量。【主: Application/Scheduler| 边界: 当前计划任务| 不迁移: Worker 消费逻辑|验证:逐 Scheduler 覆盖、重复调度幂等、父子链路和 N/A 理由 PASS, LSP 无诊断】
- [ ] 8.9 迁移当前 Outbox 消费者中实际形成新业务事实的入口,保留 Outbox 投递事实并为内部变化写 system_task Audit Event, 不把投递成功伪装成业务成功。【主: Application/Outbox Consumer| 边界: 当前可靠事件消费者| 不迁移: Relay 实现|验证:逐消费者覆盖、至少一次幂等、业务/投递结果分离和 correlation 测试 PASS , LSP 无诊断】
- [ ] 8.9 迁移当前 Outbox 消费者中实际形成新业务事实的入口,保留 Outbox 投递事实并为内部变化写 system_task Audit Event, 不把投递成功伪装成业务成功。【主: Application/Outbox Consumer| 边界: 当前可靠事件消费者| 不迁移: Relay 实现|验证:逐消费者覆盖、至少一次幂等、业务/投递结果分离和 correlation 核对通过 , LSP 无诊断】
## 9. 跨视角调查与性能收口
- [ ] 9.1 交付 request 和 correlation 组合时间线,按 `record_source` 组合 Audit Event、Integration Log、Outbox/Asynq 摘要及 Domain Ledger 引用,不扫描 Access Log、不猜测历史链路或技术重试。【主: Query| 边界: 跨事实只读投影| 不迁移: Access Log 存储与关系图|验证:支付、退款、审批、异步链路、历史缺字段和稳定排序测试 PASS , LSP 无诊断】
- [ ] 9.2 交付资金调查时间线,按店铺、钱包、订单、支付、退款、充值、审批、交易号、操作者、时间和 correlation 查询, 并明确金额权威来自钱包流水及业务表。【主: Query| 边界: 资金多源投影| 不迁移: 资金重算或状态修改| 验证: 余额变化、退款、充值、佣金、来源冲突和权限身份测试 PASS , LSP 无诊断】
- [ ] 9.3 交付风险 overview/events, 聚合高风险、资金、安全、失败、拒绝、partial 和 unknown, 支持跳转事件、资源、actor 和 correlation; 不建设处置工单或自动封禁。【主: Query| 边界: 固定风险调查视角| 不迁移: 风控决策系统| 验证: 计数/趋势、低风险排除、跳转和时间范围性能测试 PASS , LSP 无诊断】
- [ ] 9.4 为事件、资源、actor、action/result/risk、scope、request、correlation、parent 及跨视角常用过滤补最小索引,使用先分页 ID 后批量投影避免 N+1, 不为第一阶段增加 JSONB 任意模糊搜索或 Redis 结果缓存。【主: Query/Infrastructure + Migration| 边界: 已确认查询路径| 不迁移: 数据库月分区与冷热联合查询| 验证: 迁移 up/down、EXPLAIN/基准、数据库 <50ms、API P95/P99 和并发分页测试 PASS , LSP 无诊断】
- [ ] 9.1 交付 request 和 correlation 组合时间线,按 `record_source` 组合 Audit Event、Integration Log、Outbox/Asynq 摘要及 Domain Ledger 引用,不扫描 Access Log、不猜测历史链路或技术重试。【主: Query| 边界: 跨事实只读投影| 不迁移: Access Log 存储与关系图|验证:支付、退款、审批、异步链路、历史缺字段和稳定排序核对通过 , LSP 无诊断】
- [ ] 9.2 交付资金调查时间线,按店铺、钱包、订单、支付、退款、充值、审批、交易号、操作者、时间和 correlation 查询, 并明确金额权威来自钱包流水及业务表。【主: Query| 边界: 资金多源投影| 不迁移: 资金重算或状态修改| 验证: 余额变化、退款、充值、佣金、来源冲突和权限身份核对通过 , LSP 无诊断】
- [ ] 9.3 交付风险 overview/events, 聚合高风险、资金、安全、失败、拒绝、partial 和 unknown, 支持跳转事件、资源、actor 和 correlation; 不建设处置工单或自动封禁。【主: Query| 边界: 固定风险调查视角| 不迁移: 风控决策系统| 验证: 计数/趋势、低风险排除、跳转和时间范围性能核对通过 , LSP 无诊断】
- [ ] 9.4 为事件、资源、actor、action/result/risk、scope、request、correlation、parent 及跨视角常用过滤补最小索引,使用先分页 ID 后批量投影避免 N+1, 不为第一阶段增加 JSONB 任意模糊搜索或 Redis 结果缓存。【主: Query/Infrastructure + Migration| 边界: 已确认查询路径| 不迁移: 数据库月分区与冷热联合查询| 验证: 迁移 up/down、EXPLAIN/基准、数据库 <50ms、API P95/P99 和并发分页核对通过 , LSP 无诊断】
- [ ] 9.5 完成跨视角 Handler/DTO/RouteSpec、生产装配、共享文档 Handler、`cmd/api/docs.go` 、`cmd/gendocs/main.go` 和中文功能/API 文档,前端契约必须逐行呈现 design 8.1-8.4 的源页面、前置接口、`response.data` 字段、入口名称/可见条件、目标接口、参数映射和降级行为,不得只罗列审计 API。【主: API/Documentation| 边界: 9.1-9.3 查询接口|不迁移:前端页面实现|验证:以资产详情、订单、退款、钱包、通知、风险节点逐条演示完整调用链,两条 OpenAPI、README 索引和构建检查 PASS, LSP 无诊断】
## 10. 每日冷归档与月初受控清理
- [ ] 10.1 交付 Audit Event + Event Resource 每日归档纵向切片:新增无外键 `tb_log_archive_run` 、按 `Asia/Shanghai` 前一完整自然日读取、事件携带完整 resources 的 JSONL+gzip、manifest/SHA-256、对象 metadata 复核、稳定对象 Key 与重复任务幂等;复用现有对象存储和 Asynq, 不阻塞业务 Writer。【主: Infrastructure + Application/Asynq| 边界: Audit 每日冷归档完整闭环| 不迁移: Integration、Access、清理与归档查询| 验证: 迁移 up/down、空日/大日、事件资源计数、对象损坏、重复投递、存储故障和业务写入隔离测试 PASS , LSP 无诊断】
- [ ] 10.2 交付 Integration Log 每日归档及月度最终 revision 纵向切片:每日保存创建日快照,月初按数据库当前内容复核可变记录,内容变化时创建不可变新 revision, pending 或不一致阻止清理, 不覆盖旧对象。【主: Infrastructure + Application/Asynq| 边界: Integration 冷归档最终性| 不迁移: Integration Writer 语义、恢复和对象存储查询| 验证: pending→success/unknown、跨月更新、hash 变化、重复复核、无法终结和对象版本测试 PASS , LSP 无诊断】
- [ ] 10.3 交付月初整月数据库物理删除纵向切片:先完成上月最后一天归档,再校验全部日期的 Audit/Integration manifest、Audit 事件与资源数、Integration 最终 revision、对象大小和 SHA-256; 通过后使用 GORM、索引和有界批次按先 Event Resource 后 Event、再 Integration 的受控流程物理 `DELETE` PostgreSQL 上月数据,任务可从 ledger 断点继续,并写当前月 `retention_worker` Audit Event; 审计 Model 不含 `gorm.DeletedAt` , 不写归档状态、不迁移数据库历史表、不删除对象存储备份。【主: Application + Infrastructure/Asynq| 边界: 归档门禁与 PostgreSQL 上月数据物理删除| 不迁移: Access Log、Domain Ledger、Outbox、旧 operation log、对象存储生命周期、分区改造和人工清表| 验证: 缺日/hash 不一致/部分对象/pending 全部阻断,物理行数归零、批次中断续跑、窗口隔离、对象长期保留、清理事件和数据库膨胀指标测试 PASS , LSP 无诊断】
- [ ] 10.4 为平台 Audit/Integration 及代理/企业活动 DTO 增加 `retention{online_from,archived_before,timezone}` , 显式时间范围早于或跨越在线边界时返回稳定已归档错误; 默认只查在线窗口, ID-only 不存在仍按资源不存在处理, 不访问对象存储, 也不新增下载或恢复路由。【主: Query/API| 边界: 在线查询留存语义| 不迁移: 冷热联合查询和前端页面实现| 验证: 在线、已归档、跨边界、默认范围、空在线月、路由/OpenAPI 无归档读写能力测试 PASS , LSP 无诊断】
- [ ] 10.1 交付 Audit Event + Event Resource 每日归档纵向切片:新增无外键 `tb_log_archive_run` 、按 `Asia/Shanghai` 前一完整自然日读取、事件携带完整 resources 的 JSONL+gzip、manifest/SHA-256、对象 metadata 复核、稳定对象 Key 与重复任务幂等;复用现有对象存储和 Asynq, 不阻塞业务 Writer。【主: Infrastructure + Application/Asynq| 边界: Audit 每日冷归档完整闭环| 不迁移: Integration、Access、清理与归档查询| 验证: 迁移 up/down、空日/大日、事件资源计数、对象损坏、重复投递、存储故障和业务写入隔离核对通过 , LSP 无诊断】
- [ ] 10.2 交付 Integration Log 每日归档及月度最终 revision 纵向切片:每日保存创建日快照,月初按数据库当前内容复核可变记录,内容变化时创建不可变新 revision, pending 或不一致阻止清理, 不覆盖旧对象。【主: Infrastructure + Application/Asynq| 边界: Integration 冷归档最终性| 不迁移: Integration Writer 语义、恢复和对象存储查询| 验证: pending→success/unknown、跨月更新、hash 变化、重复复核、无法终结和对象版本核对通过 , LSP 无诊断】
- [ ] 10.3 交付月初整月数据库物理删除纵向切片:先完成上月最后一天归档,再校验全部日期的 Audit/Integration manifest、Audit 事件与资源数、Integration 最终 revision、对象大小和 SHA-256; 通过后使用 GORM、索引和有界批次按先 Event Resource 后 Event、再 Integration 的受控流程物理 `DELETE` PostgreSQL 上月数据,任务可从 ledger 断点继续,并写当前月 `retention_worker` Audit Event; 审计 Model 不含 `gorm.DeletedAt` , 不写归档状态、不迁移数据库历史表、不删除对象存储备份。【主: Application + Infrastructure/Asynq| 边界: 归档门禁与 PostgreSQL 上月数据物理删除| 不迁移: Access Log、Domain Ledger、Outbox、旧 operation log、对象存储生命周期、分区改造和人工清表| 验证: 缺日/hash 不一致/部分对象/pending 全部阻断,物理行数归零、批次中断续跑、窗口隔离、对象长期保留、清理事件和数据库膨胀指标核对通过 , LSP 无诊断】
- [ ] 10.4 为平台 Audit/Integration 及代理/企业活动 DTO 增加 `retention{online_from,archived_before,timezone}` , 显式时间范围早于或跨越在线边界时返回稳定已归档错误; 默认只查在线窗口, ID-only 不存在仍按资源不存在处理, 不访问对象存储, 也不新增下载或恢复路由。【主: Query/API| 边界: 在线查询留存语义| 不迁移: 冷热联合查询和前端页面实现| 验证: 在线、已归档、跨边界、默认范围、空在线月、路由/OpenAPI 无归档读写能力核对通过 , LSP 无诊断】
- [ ] 10.5 先以“只归档、不清理”开关运行并验收一个完整自然月, 记录每日成功率、积压、对象大小、压缩率、hash/计数差异、Integration revision、清理预估耗时和告警; 只有月度演练全部通过后才启用清理开关。【主: Release/Observability| 边界: 留存能力灰度启用| 不迁移: Access Log、自动恢复和分区改造| 验证: 完整月 manifest、故障重试、月度 dry-run、监控阈值、操作手册和启停回滚证据齐全】
## 11. 旧 Writer Contract 与发布门禁
- [ ] 11.1 完成账号、资产及借用旧 account audit 的充值/套餐/支付配置等调用清单逐项归零,删除生产组合根对旧 Writer 的注入和所有裸/双重 goroutine 审计写入;旧表原样保留且不接入新审计 Query, 既有旧资产历史入口与手动轮询运行写入显式白名单。【主: Infrastructure/Governance| 边界: 旧 operation log contract| 不迁移: 旧数据回填/转换、删除旧表和历史数据|验证:静态扫描、生产装配、统一 Query 无旧表依赖、真实业务写入和旧表无新增测试 PASS , LSP 无诊断】
- [ ] 11.1 完成账号、资产及借用旧 account audit 的充值/套餐/支付配置等调用清单逐项归零,删除生产组合根对旧 Writer 的注入和所有裸/双重 goroutine 审计写入;旧表原样保留且不接入新审计 Query, 既有旧资产历史入口与手动轮询运行写入显式白名单。【主: Infrastructure/Governance| 边界: 旧 operation log contract| 不迁移: 旧数据回填/转换、删除旧表和历史数据|验证:静态扫描、生产装配、统一 Query 无旧表依赖、真实业务写入和旧表无新增核对通过 , LSP 无诊断】
- [ ] 11.2 执行最终 Action/Resource Registry 与当前代码覆盖比对并增量更新 `.scratch/tech-global-audit/审计覆盖基线.md` ,确认所有非查询写入口和 Registry 标记的敏感读取均登记、普通查询/N/A 有理由,多资源/设备卡槽/换货/批量/资金/自动入口无遗漏, 未注册动作或资源使门禁失败。【主: 治理| 边界: 全仓当前入口| 不迁移: 未来未提交功能| 验证: 覆盖门禁、Registry 清单、基线文件和业务/研发/安全签字证据齐全】
- [ ] 11.3 执行安全与身份发布门禁:平台接口仅 SuperAdmin/Platform、代理店铺层级、企业有效授权、internal_only 不泄露、业务字段平台完整、所有系统安全凭据在库和响应中均不存在、无用户审计导出、对象存储查询/恢复或业务删除路由。【主: Security/API| 边界: 第一阶段访问与字段契约| 不迁移: 细粒度权限码| 验证: 敌对 HTTP 场景、数据库抽样、路由/OpenAPI 扫描全部 PASS】
- [ ] 11.4 执行事务、幂等与跨链路发布门禁: 关键成功审计失败回滚、失败短事务保留原错、批量根子计数一致、correlation/parent/series 正确、Audit/Integration/Domain Ledger/Outbox 边界没有混用。【主: Verification| 边界: 高风险和代表性流程| 不迁移: 业务规则优化| 验证: 全部验收测试和业务流程测试 PASS ,已知错误为零】
- [ ] 11.4 执行事务、幂等与跨链路发布门禁: 关键成功审计失败回滚、失败短事务保留原错、批量根子计数一致、correlation/parent/series 正确、Audit/Integration/Domain Ledger/Outbox 边界没有混用。【主: Verification| 边界: 高风险和代表性流程| 不迁移: 业务规则优化| 验证: 代表性业务流程的接口、数据库与日志证据核对通过 ,已知错误为零】
- [ ] 11.5 执行迁移、性能、OpenAPI、归档留存和回滚演练: 增量迁移可在无事实环境 down; 业务回滚保留在线窗口内事实, 归档失败阻止清理, 清理后不恢复旧 Writer或伪造在线历史; 记录监控阈值和操作手册。【主: Release/Infrastructure| 边界: 一次 contract 发布|不迁移:数据库分区、冷热联合查询与自动恢复|验证:迁移演练、性能目标、归档 dry-run、两份文档生成、构建、监控和回滚演练全部 PASS】
## 12. 最终文档与交付确认
- [ ] 12.1 在 `docs/feature-504-multi-view-audit-center/` 编写中文总结,包含四类事实边界、字段字典、当前领域/资源/动作矩阵、各资源快照、所有查询视角与 DTO、平台和主体可见性、多卡设备/换货/资金/批量样例、每日归档与月度清理、在线窗口、异常闭环、发布回滚、监控和明确未实现项,并更新 README 索引。【主: Documentation| 边界: 本 Change 完整交付| 不迁移: 旧历史评审文档| 验证: 文档逐项引用实现、OpenAPI 和验收证据,无过时字段或路径】
- [ ] 12.2 汇总测试、 静态扫描、LSP、迁移、构建、OpenAPI、数据库性能、API P95/P99、身份隔离、凭据抽样、旧写归零、归档完整性、月度清理 dry-run 和业务流程证据,逐条核对 proposal/design/specs/tasks, 只有全部完成且无已知错误时才标记 Change 可归档。【主:最终验收|边界:全部能力|不迁移:后续权限码、用户导出、对象存储历史查询/恢复、分区、风险处置和自动恢复|验证:全部验收测试 PASS + 全部流程测试 PASS + OpenSpec strict validate PASS】
- [ ] 12.2 汇总静态扫描、LSP、迁移、构建、OpenAPI、数据库性能、API P95/P99、身份隔离、凭据抽样、旧写归零、归档完整性、月度清理 dry-run 和业务流程证据,逐条核对 proposal/design/specs/tasks, 只有全部完成且无已知错误时才标记 Change 可归档。【主:最终验收|边界:全部能力|不迁移:后续权限码、用户导出、对象存储历史查询/恢复、分区、风险处置和自动恢复|验证:制品与人工/数据证据核对通过 + OpenSpec strict validate PASS】