Files
junhong_cmp_fiber/openspec/changes/build-multi-view-audit-center/tasks.md
break 5e552d99bc 收口审计治理与套餐任务进展
Constraint: 在线热修前必须保存当前迭代分支全部有效代码进展
Confidence: medium
Scope-risk: broad
Directive: 后续修改需保持审计事件与业务事务边界一致
Tested: git diff --cached --check
Not-tested: 未运行全量测试,提交用于切换分支前保存既有工作
2026-08-05 14:30:54 +08:00

118 lines
37 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
> 实施约束:本 Change 禁止新增、修改或运行任何自动化测试,也不得创建测试任务;完成证据仅使用静态检查、数据核对、接口人工核对及既定制品检查。
## 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 首个纵向闭环
- [x] 1.1 以“受控系统配置更新”为首个简单写纵向切片交付无外键迁移、Audit Event/Event Resource Model、Action/Resource Registry、凭据删除、不可变 Append Writer、结构体注入和同事务失败回滚配置凭据只记录 `credentials_configured` 等安全事实。【主:简单写 + Application/Port/AdapterInfrastructure边界系统配置更新 + 公共写接缝|不迁移:其他配置页面与其他领域|验证:迁移 up/down、Registry/哈希/凭据和配置事务数据核对通过LSP 无诊断】
- [x] 1.2 以“Outbox 人工恢复裁决”为第二个高风险纵向切片,接入操作者、原因、批次、事件前后状态和 Audit Event 同事务失败关闭证明多资源与高风险策略可复用。【主Application + Port/AdapterInfrastructure边界既有 Outbox 恢复用例不迁移Outbox Relay 与消费者验证成功、重复恢复、有效租约拒绝、审计失败回滚核对通过LSP 无诊断】
- [x] 1.3 交付已确定主要业务资源后的 `failed/denied` 独立短事务和二次失败 critical 日志/指标,以系统配置非法更新及 Outbox 不可恢复事件为代表用例;资源 ID 可空但必须有稳定 Key/快照,只有 actor 而无资源时进入 Access/Security Log不使用裸 goroutine。【主ApplicationInfrastructure/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/AdapterMiddleware/Asynq边界审计上下文与链路字段不迁移业务状态机验证上下文、载荷结构、父子链路和真实 actor 核对通过LSP 无诊断】
- [x] 1.5 交付批次根事件、资源子事件和 `partial` 统计接缝以现有设备批量分配或资产批量购包小场景验证每个实际变化资源进入自身时间线未处理项不伪造成功。【主ApplicationAsynq/Infrastructure边界公共批量审计形态不迁移批量业务规则验证根子计数、父子链路、部分成功和幂等核对通过LSP 无诊断】
## 2. 平台基础审计调查纵向切片
- [x] 2.1 交付平台身份保护的事件列表和详情纵向切片,包含组合筛选、稳定分页、操作者/入口/结果/风险、多资源角色、身份快照及资源级 before/after平台不做数据行过滤代理/企业/个人后端拒绝。【主QueryAPI/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资源删除或换号后使用事件快照解释历史。【主QueryResource 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 和构建检查 PASSLSP 无诊断】
- [x] 2.5 交付 Action Registry 标记的敏感读取审计,以受控审计详情或明文业务凭证读取为代表:返回结果前写入读取者、目标资源和字段类别,写入失败则不返回结果;普通列表/详情仍按 N/A 契约执行。【主Query + Application/Port边界敏感读取例外不迁移细粒度权限码与敏感二次查看 UI验证成功读取、审计失败关闭、普通读取不写和安全凭据永不返回核对通过LSP 无诊断】
## 3. Integration Log 只读调查中心
- [x] 3.1 交付 Integration Log 组合筛选列表与稳定 `integration_id` 详情纵向切片,返回 identity/resource/trigger/result/content/linkage/timestamps 分组、原始结果、中文名和派生类别,不直接暴露 GORM Model。【主QueryAPI边界现有 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、只读路由扫描和性能目标 PASSLSP 无诊断】
## 4. 代理/企业安全资源活动与旧历史入口隔离
- [x] 4.1 交付代理资源活动纵向切片:按当前资源店铺及自身/下级店铺范围校验卡、设备、分配、换货、店铺和归属企业,读取 `subject_result/subject_detail`,完全隐藏 `internal_only`、平台操作者、内部原因/备注、风险、内部 before/after、Audit Event ID 和 Integration 内容。【主QueryAPI/数据权限|边界:代理范围资源活动|不迁移:平台审计 DTO 与权限码|验证:各类稳定 identifier、有权、越权/不存在同错、分配详情独立归属、无事件存在性泄露、多资源部分可见核对通过LSP 无诊断】
- [x] 4.2 交付企业资源活动纵向切片:卡与设备分别复用当前有效企业授权关系,禁止在企业缺少 SubordinateShopIDs 时退化为全量撤销授权后不可继续读取资源活动。【主QueryAPI/授权 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 和构建检查 PASSLSP 无诊断】
## 5. 账号、权限、组织与主体写入口迁移
- [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 无诊断】
- [x] 5.11 迁移个人客户卡/设备绑定、解绑和换货绑定迁移纵向用例,关联客户、资产和绑定记录。【主:简单写或复杂写 Application边界客户资产关系不迁移换货其他资金/套餐步骤|验证:绑定/解绑/迁移、资源快照、越权和多资源活动核对通过LSP 无诊断】
## 6. 卡、设备、绑定、分配与换货迁移
- [x] 6.1 迁移 IoT 卡创建/导入落库、基础资料、删除纵向用例,快照含 ID/ICCID/VirtualNo/MSISDN/运营商/店铺/系列/generation。【主简单写 + 旧 Service Adapter边界卡身份生命周期不迁移状态与外部命令验证创建/更新/删除、历史快照、凭据规则和旧资产写归零核对通过LSP 无诊断】
- [x] 6.2 迁移 IoT 卡分配、回收和系列绑定纵向用例,关联分配记录、来源/目标店铺、系列和必要设备关系。【主:复杂写或简单写事务脚本|边界:卡归属与系列|不迁移:卡状态/Gateway验证分配/回收/拒绝、多资源、主体活动和旧写归零核对通过LSP 无诊断】
- [x] 6.3 迁移 IoT 卡停复机、实名策略/状态、限速和人工刷新纵向用例,实际外部尝试写 Integration Log内部状态变化写 Audit Eventunknown 不伪装失败或成功。【主:复杂写 + Gateway Adapter边界卡状态与外部命令不迁移卡归属验证success/failed/denied/unknown、Integration/Audit 分界、主体结论和旧写归零核对通过LSP 无诊断】
- [x] 6.4 迁移设备创建/导入落库、基础资料和删除纵向用例,快照含 ID/VirtualNo/IMEI/SN/型号/店铺/系列/generation。【主简单写 + 旧 Service Adapter边界设备身份生命周期不迁移状态、卡槽与 Gateway验证创建/更新/删除、历史快照和旧资产写归零核对通过LSP 无诊断】
- [x] 6.5 迁移设备分配、回收和系列/实名策略纵向用例,关联分配记录、来源/目标店铺及实际连带卡。【主:复杂写或简单写事务脚本|边界:设备归属与策略|不迁移:设备外部命令|验证:分配/回收/策略、设备卡关系、主体活动和旧写归零核对通过LSP 无诊断】
- [x] 6.6 迁移设备停复机、Wi-Fi、切卡模式、重启和重置纵向用例外部尝试写 Integration Log实际内部变化写 Audit Event。【主复杂写 + Gateway Adapter边界设备外部命令不迁移设备归属与卡槽绑定验证success/failed/unknown、设备时间线、安全结论和旧写归零核对通过LSP 无诊断】
- [x] 6.7 迁移设备绑卡、解绑和当前卡切换纵向用例,把设备、目标卡、旧/新当前卡及每个 binding 作为一等资源,保存 slot/is_current。【主复杂写边界设备卡槽关系完整用例不迁移设备/卡其他状态机验证1-4 卡槽、旧新卡角色、资源双向时间线、事务和主体范围核对通过LSP 无诊断】
- [x] 6.8 迁移单笔资产分配/回收纵向用例,关联分配记录、来源/目标店铺、设备及实际连带卡。【主:复杂写 Application边界单笔资产流转不迁移批量分配和企业授权验证卡/设备流转、多资源、越权和每资源时间线核对通过LSP 无诊断】
- [x] 6.9 迁移批量设备分配纵向用例,批次根事件与每台实际变化设备/绑定卡子事件计数一致。【主:复杂写 + Application/Asynq边界批量设备流转不迁移其他批量任务验证success/partial/failed、根子计数、幂等和店铺范围核对通过LSP 无诊断】
- [x] 6.10 迁移卡换货完整用例,记录换货单、旧/新卡 ICCID+VirtualNo、客户绑定、钱包/流水、套餐权益、店铺和状态变化。【主:复杂写 Domain/ApplicationOutbox/Query边界卡换货创建至完成/取消/迁移|不迁移:设备换货|验证:资金/套餐/客户迁移、失败回滚、多资源时间线和外部安全结论核对通过LSP 无诊断】
- [x] 6.11 迁移设备换货完整用例,记录旧/新设备 VirtualNo+IMEI+SN、实际绑定卡/卡槽、客户绑定、钱包/流水、套餐权益、店铺和换货单。【主:复杂写 Domain/ApplicationOutbox/Query边界设备换货完整流程不迁移无关订单规则验证多卡设备换货、资金/套餐/客户迁移、失败回滚和所有资源时间线核对通过LSP 无诊断】
## 7. 套餐、交易与资金纵向迁移
- [x] 7.1 迁移套餐系列、套餐商品、店铺系列/套餐分配、批量定价和关键价格配置纵向用例,关联店铺、系列、套餐和价格历史,保持现有上架/分配规则。【主:简单写 + Application边界套餐配置与授权不迁移套餐购买流程验证before/after、批量根子、店铺时间线、凭据规则和旧 account 借用写归零核对通过LSP 无诊断】
- [x] 7.2 迁移套餐权益激活、排队、流量重置/扣减、退款失效、资产失效和换货迁移纵向用例,系统任务使用真实 actor权益、订单、套餐和资产作为独立资源。【主复杂写 Domain/ApplicationWorker/Outbox边界package_usage 生命周期|不迁移:套餐列表 Query验证状态条件、重复任务幂等、系统 actor、父子链路和资源时间线核对通过LSP 无诊断】
- [x] 7.3 迁移订单创建、后台代购、C 端/OpenAPI 购买、取消、钱包支付和过期关闭纵向用例,关联买家/操作者、资产、套餐、金额、支付方式、钱包/流水和购买角色。【主:复杂写 Domain/ApplicationOutbox边界订单状态与支付准备不迁移订单只读列表验证各入口 actor、成功/拒绝/失败、资金同事务、系统过期和链路核对通过LSP 无诊断】
- [x] 7.4 迁移支付创建、微信/支付宝/富友预下单、查单和回调确认纵向用例:每次外部尝试写 Integration Log实际改变支付/订单/充值事实时写 Audit Event关联支付单、业务单、渠道交易号和 correlation。【主复杂写 + Infrastructure Adapter边界支付外部与内部终态不迁移渠道协议重构验证success/unknown/迟到回调/重复回调、series/correlation、Domain Ledger 和时间线核对通过LSP 无诊断】
- [x] 7.5 迁移退款申请、审批终态、钱包回充、佣金失效、套餐/资产后处理和通知纵向用例,关联退款、审批、订单、资产、钱包、原扣款/退款流水、佣金和套餐权益,资金事实与审计同事务。【主:复杂写 Domain/ApplicationOutbox/Integration边界退款完整业务链不迁移原路退款等未实现能力验证通过/拒绝/重提/重复终态/失败回滚、资金时间线和代理安全结论核对通过LSP 无诊断】
- [x] 7.6 迁移个人资产充值和代理在线/线下充值纵向用例,关联充值单、提交人、店铺/资产、支付或审批、钱包、交易流水和自动购包;外部回调与系统恢复使用真实 actor。【主复杂写 Domain/ApplicationPayment/Approval/Outbox边界充值创建至入账不迁移新充值渠道验证在线/线下、回调/审批、重复入账、unknown、资金同事务和主体投影核对通过LSP 无诊断】
- [x] 7.7 迁移代理主钱包订单扣款和预占/释放/完成纵向用例,关联订单、钱包、预占、唯一流水和余额前后值。【主:复杂写 Domain/ApplicationOutbox边界订单资金占用与扣款不迁移充值/退款/信用额度|验证:乐观锁/状态条件、唯一业务键、审计失败回滚和失败短事务核对通过LSP 无诊断】
- [x] 7.8 迁移代理主钱包充值入账、人工调整、退款回充和信用额度纵向用例,逐项关联业务单、原流水/新流水和余额前后值。【主:复杂写 Domain/ApplicationOutbox边界代理钱包正向及回退资金不迁移资产钱包与佣金提现验证重复入账/退款上限/人工原因/信用变更、同事务和资金查询核对通过LSP 无诊断】
- [x] 7.9 迁移卡/设备资产钱包充值、扣款、退款和换货迁移纵向用例,关联资产完整标识、钱包、业务单和唯一流水。【主:复杂写 Domain/Application边界资产钱包资金不迁移代理主钱包验证卡/设备、换货、重复业务键、余额前后值和资源时间线核对通过LSP 无诊断】
- [x] 7.10 迁移佣金计算/入账/失效和提现申请/审批/驳回纵向用例,关联店铺、订单、系列、佣金记录、提现单、钱包/流水和金额状态。【主:复杂写 Domain/ApplicationWorker/Outbox边界佣金与提现完整状态机不迁移统计 Query验证计算幂等、审批终态、资金同事务、失败短事务和资金时间线核对通过LSP 无诊断】
## 8. 审批、配置、批量与自动入口迁移
- [x] 8.1 迁移通用审批和企微申请提交、回调同步、主动恢复及终态分发纵向用例,记录真实提交人、外部系统/系统任务 actor、审批实例、业务单、Integration Log 和 Outbox不伪造本地审批人。【主复杂写 Domain/ApplicationWeCom Adapter/Outbox边界审批完整链路不迁移新审批引擎验证提交、unknown、回调、恢复、重复终态、actor/correlation 和资源时间线核对通过LSP 无诊断】
- [x] 8.2 迁移支付配置、运营商、企微应用/成员/场景及其他关键连接配置纵向用例,记录配置身份、状态和“凭据是否已配置”,不记录 Secret、Token、AESKey、私钥或证书正文。【主简单写 + Infrastructure Adapter边界外部连接配置不迁移配置 UI 与渠道业务协议验证CRUD/启停/校验失败、同事务、凭据删除和平台完整业务字段核对通过LSP 无诊断】
- [x] 8.3 迁移卡/设备导入、资产套餐批购、订单套餐失效和导出任务创建/取消纵向用例,记录任务、文件名/目标/操作者和批量根子结果;对象存储签名 URL 不入审计审计中心自身仍不提供导出。【主Application + AsynqObject Storage边界现有导入批量和业务导出任务动作不迁移导出 DataSource 内容|验证:结构化 payload、幂等、partial、凭据删除和任务/资源时间线核对通过LSP 无诊断】
- [x] 8.4 迁移通知生成、投递、单条/全部已读和清理纵向用例,低风险写仍登记 action系统清理使用系统 actorAudit Event 不替代通知或 Outbox 投递事实。【主:简单写/Application + Worker边界通知状态变化不迁移通知查询验证人工/系统 actor、低风险默认展示、Outbox 幂等和资源关联核对通过LSP 无诊断】
- [x] 8.5 迁移轮询配置、并发配置、告警规则、人工触发/取消和状态变化纵向用例;手动轮询表继续承担进度/结果,实际 Gateway 尝试写 Integration Log人工触发动作另写 Audit Event。【主Application + AdapterScheduler/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 覆盖、幂等、失败重试和未登记动作门禁 PASSLSP 无诊断】
- [ ] 8.8 迁移当前 Scheduler 中实际创建任务、改变配置/状态或产生业务事实的入口,使用 scheduled_job actor实施时以当前清单为准不硬编码历史数量。【主Application/Scheduler边界当前计划任务不迁移Worker 消费逻辑|验证:逐 Scheduler 覆盖、重复调度幂等、父子链路和 N/A 理由 PASSLSP 无诊断】
- [ ] 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 存储与关系图验证支付、退款、审批、异步链路、历史缺字段和稳定排序核对通过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 索引和构建检查 PASSLSP 无诊断】
## 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、空日/大日、事件资源计数、对象损坏、重复投递、存储故障和业务写入隔离核对通过LSP 无诊断】
- [ ] 10.2 交付 Integration Log 每日归档及月度最终 revision 纵向切片:每日保存创建日快照,月初按数据库当前内容复核可变记录,内容变化时创建不可变新 revisionpending 或不一致阻止清理不覆盖旧对象。【主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 无旧表依赖、真实业务写入和旧表无新增核对通过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边界高风险和代表性流程不迁移业务规则优化验证代表性业务流程的接口、数据库与日志证据核对通过已知错误为零】
- [ ] 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 可归档。【主:最终验收|边界:全部能力|不迁移:后续权限码、用户导出、对象存储历史查询/恢复、分区、风险处置和自动恢复|验证:制品与人工/数据证据核对通过 + OpenSpec strict validate PASS】