27 KiB
多视角审计中心功能总结
本文汇总 build-multi-view-audit-center 第一阶段已经交付的能力、边界和验收依据。实现以当前 Action/Resource Registry 和覆盖基线为准;旧账号、旧资产 operation log 只保留独立历史查询,不回填、不转换、不进入新审计中心。
1. 交付范围
- 统一不可变
Audit Event + Event Resource,记录真实操作者、入口、动作、结果、风险、多资源关系、资源快照、前后变化和跨步骤链路。 - 平台提供全局事件、操作者、资源、request、correlation、资金、风险和 Integration Log 调查视角。
- 代理和企业使用独立安全资源活动投影,只查看当前有权资源的允许业务结论。
- Audit Event 与 Integration Log 按
Asia/Shanghai完整自然日归档;整月完整性门禁通过后,可受控物理清理 PostgreSQL 上月在线数据。 - 现行覆盖门禁已登记 692 个源码入口、219 个 Action Registry 动作、61 个 Resource Registry 类型、146 个已使用资源角色和 5 组敏感读取。
实现入口:internal/infrastructure/audit/、internal/query/audit/、internal/query/integration/、internal/application/auditarchive/、internal/handler/admin/audit.go、internal/routes/audit.go。完整逐入口决定见 审计覆盖基线。
2. 四类事实边界
| 事实 | 回答的问题 | 权威内容 | 明确不承担 |
|---|---|---|---|
| Access Log | 这次 HTTP 请求收发了什么、耗时多久 | method、path、query、status、duration、request/response body、request_id 等调试信息 | 不证明业务事实成功,不进入审计数据库查询,不上传本次冷归档 |
| Audit Event | 谁从什么入口,对哪些资源做了什么,结果如何 | 操作者、动作、结果、风险、多资源关系、资源快照、before/after、request/correlation/parent | 不替代订单、钱包流水等业务账本,不替代外部交互或可靠投递事实 |
| Integration Log | 系统与外部系统实际发生或未发生了哪次交互 | provider、direction、operation、result、attempt、外部状态、受控请求/响应摘要 | 不把投递成功或外呼成功伪装成内部业务成功,不承担人工恢复 |
| Domain Ledger | 金额、状态、权益最终以什么为准 | 订单、支付、退款、充值、钱包流水、审批、套餐权益、佣金等业务表 | 不负责解释完整操作者上下文,不被 Audit Event 重算或覆盖 |
Outbox/Asynq/手动轮询是可靠副作用和任务运行事实:跨视角时间线可展示其摘要或引用,但仍保持独立生命周期。Outbox delivered 只表示投递事实,不表示消费者业务成功;手动轮询表继续保存进度和结果。
链路字段固定语义:request_id 关联一次 HTTP 请求;correlation_id 关联跨请求、Outbox、Asynq、回调和后续业务步骤;parent_event_id 表示直接因果;Integration 的 trigger_series + attempt 才表示技术尝试序列。
3. 核心字段字典
3.1 Audit Event
| 字段组 | 字段 | 语义 |
|---|---|---|
| 身份 | event_id、occurred_at、created_at |
稳定公开事件 ID、真实发生时间、持久化时间 |
| 动作 | category、action_code、action_name、summary |
稳定动作类别/编码、中文名称快照和内部摘要 |
| 操作者 | actor_kind/id/name、actor_shop_id/name、actor_enterprise_id/name |
事件发生时的真实人工、OpenAPI、系统任务、计划任务或外部系统身份快照 |
| 入口 | source、request_path/method、ip_address、user_agent |
admin/personal/openapi/worker/scheduler/callback 等来源及 HTTP 摘要 |
| 范围 | scope_type/id/name |
平台、店铺、企业、个人等本次主要业务范围快照 |
| 结果 | result、risk_level、error_code、error_summary |
success/failed/denied/partial/unknown、风险和安全错误摘要 |
| 链路 | request_id、correlation_id、parent_event_id |
请求、业务链路和直接父事件 |
| 批量 | batch_total、success_count、fail_count |
批次根统计;子事件通过 parent/correlation 关联 |
| 完整性 | metadata、content_hash |
有界安全业务参数和标准化内容 SHA-256 |
3.2 Event Resource
| 字段 | 语义 |
|---|---|
resource_type/id/key/display_name |
Registry 类型、可空内部 ID、事件时稳定业务 Key 和展示名 |
relation |
primary、affected、reference;每个事件必须且只能按动作契约确定主要资源 |
role |
old_card/new_card/bound_card/entry_device/order/wallet_transaction 等稳定业务角色 |
identity_snapshot |
事件发生时资源身份,不依赖当前业务表是否删除、更名、换号 |
before_data/after_data |
该资源本次真实涉及的字段,不使用事件级万能 JSON |
subject_visibility |
internal_only、subject_result、subject_detail |
subject_summary/subject_data |
写入时生成的主体安全结论及 Registry 白名单字段 |
sort_order/created_at |
稳定展示顺序和落库时间 |
3.3 Integration Log
| 字段组 | 字段 | 语义 |
|---|---|---|
| 身份 | integration_id、provider、direction、operation、external_id |
稳定交互身份、提供方、方向、动作和外部业务标识 |
| 资源 | resource_type/id/key |
本次外部交互的直接主资源;其他资源通过关联 Audit Event 展开 |
| 触发 | trigger_source/scene/series、attempt |
来源、业务场景和显式技术尝试序列 |
| 结果 | result、http_status、provider_code/message、duration_ms、state_changed |
原始结果、安全可读摘要、耗时和是否改变本地事实 |
| 内容 | request_summary、response_summary、metadata、content_hash |
写入和返回前均经过白名单及凭据删除的结构化摘要 |
| 链路 | request_id、correlation_id、audit_event_id |
与请求、业务链路和内部状态变化事件的稳定关联 |
派生结果类别固定为:pending→processing、success→succeeded、unknown→indeterminate、明确失败结果→failed、ignored/merged/rate_limited/completed/cancelled→not_sent。completed 不计外部请求成功。
3.4 留存与调查引用
| 结构 | 字段 | 语义 |
|---|---|---|
retention |
online_from、archived_before、timezone |
当前 PostgreSQL 在线窗口、已归档边界、Asia/Shanghai 时区 |
investigation_refs |
event_id、actor_ref、resource_refs[]、request_id、correlation_id、integration_refs[] |
平台各调查视角唯一允许使用的稳定跳转引用 |
tb_log_archive_run |
source/date/instance/schema/revision/status/is_final、range、object/manifest key、数量、字节、SHA-256、attempt、cleanup 时间 | 归档与清理轻量 ledger,不保存日志正文 |
4. 当前领域、资源与动作矩阵
下表按领域归并当前 Registry。动作列使用稳定编码前缀及代表动作;219 个动作的唯一权威清单是 pkg/constants/audit.go 与 internal/infrastructure/audit/registry.go,逐入口事务和 N/A 决定以覆盖基线为准。
| 领域 | 主要资源 | 已接入动作范围 | 权威事实/边界 |
|---|---|---|---|
| 账号与认证 | account、authentication、role、permission | account.*、auth.*、role.*、permission.* |
账号、角色权限和认证状态表;密码、Token、Cookie 不入审计 |
| 店铺与企业 | shop、enterprise、企业卡/设备授权 | shop.*、enterprise.*、enterprise_card.*、enterprise_device.* |
店铺层级和当前有效授权关系 |
| 个人客户 | personal_customer、手机号、OpenID、资产绑定 | personal_customer.* |
客户及绑定表;外部主体标识按 Registry 快照 |
| IoT 卡 | iot_card、批次、分配记录、Integration | iot_card.*,含创建、删除、分配/回收、系列、实名、停复机、刷新、限速、Worker 同步 |
卡表保存本地事实;Gateway 尝试进入 Integration Log;限速审计记录谁操作、谁被限速、档位及外部结果 |
| 设备与卡槽 | device、iot_card、device_sim_binding、分配记录 | device.*,含分配/回收、绑解绑、切当前卡、Wi-Fi、模式、重启、重置、Worker 观测 |
设备、卡及卡槽均为一等资源,多卡逐张关联 |
| 换货 | exchange_order、旧新卡/设备、绑定、客户、钱包、权益 | exchange.card.*、exchange.device.* |
换货状态机、资产/钱包/权益等业务表;不压缩为单一资产标识 |
| 套餐配置 | package_series、package、店铺授权、价格历史、批次 | package_series.*、package.*、shop_series_grant.*、shop_package.* |
套餐、授权和价格历史表 |
| 套餐权益 | package_usage、订单、套餐、资产、退款 | package_usage.*,含激活、到期、扣减/重置、退款/资产失效、队列及迁移 |
tb_package_usage 和流量业务表为权威 |
| 订单与支付 | order、payment、资产、套餐、钱包/流水 | order.*、payment.* |
订单/支付状态、渠道流水;每次渠道尝试另写 Integration Log |
| 退款 | refund、订单、审批、钱包/流水、佣金、权益、通知 | refund.* |
退款、钱包流水、佣金和权益事实同事务收口 |
| 充值与钱包 | agent_recharge、recharge_order、agent/asset wallet、流水、预占 | agent_recharge.*、asset_recharge.*、agent_wallet.* |
金额和余额以钱包流水/业务单为权威;审计只解释操作者和动作 |
| 佣金与提现 | commission_record、commission_withdrawal、钱包/流水 | commission.*、commission_withdrawal.* |
佣金、提现、钱包和流水状态机 |
| 审批与企微 | approval_instance、业务单、Integration、Outbox | approval.*、wecom.* |
本地审批事实、企微交互和可靠终态分发各自保留 |
| 系统与连接配置 | system_config、payment_config、carrier、wecom_application/scene | system_config.*、payment_config.*、carrier.*、wecom.* |
配置表权威;只记录 credentials_configured 等安全事实 |
| 导入、批量与导出任务 | 各 task、批次资源、实际业务资源 | *_import_task.*、asset_package_batch_order_task.*、order_package_invalidate_task.*、export_task.* |
任务表保存进度;实际变化资源另有子事件;审计中心本身不导出 |
| 通知 | notification、read/cleanup batch、业务目标 | notification.deliver/read/read_all/cleanup/cleanup_item |
通知正文和已读状态以通知表为准 |
| 轮询与监控 | polling_config/concurrency/alert/manual_trigger、卡 | polling_config.*、polling_concurrency.*、polling_alert.*、polling_manual_trigger.* |
人工触发写 Audit;每次 Gateway 尝试写 Integration;手动任务表继续保存运行事实 |
| 可靠事件与留存 | outbox_event、log_archive_month | outbox.*、audit.retention_cleanup |
Outbox 投递、归档 ledger、对象存储事实保持独立 |
普通列表、详情、统计和装配入口为 N/A;Registry 标记的敏感读取在返回结果前写审计,写入失败则不返回敏感结果。
5. 各资源身份快照
| 资源 | 最小可读快照 |
|---|---|
| 账号/角色/权限 | ID、用户名、手机号、账号类型、店铺/企业、企微身份;角色 ID/名称/类型;权限 code/name |
| 店铺/企业 | ID、编码、名称、上级或 owner shop、层级 |
| 个人客户 | ID、昵称、手机号、微信主体标识及资产绑定标识 |
| IoT 卡 | ID、ICCID、VirtualNo、MSISDN、运营商、店铺、系列、generation |
| 设备 | ID、VirtualNo、IMEI、SN、名称/型号、店铺、系列、generation |
| 设备卡槽 | binding ID、设备标识、slot_position、卡 ICCID/VirtualNo、is_current |
| 分配/换货 | 分配单号或换货单号、资产类型/ID/完整标识、来源/目标主体、旧新资产、店铺、状态 |
| 套餐/权益 | 套餐/系列 ID、编码、名称、期限、价格、状态;权益 ID、订单、资产、generation、激活/到期时间 |
| 订单/支付 | 订单/支付 ID 和单号、买家、资产、套餐、金额、支付方式/状态、渠道交易号、配置 ID |
| 退款/充值 | 业务单号、订单/资产/店铺、申请/批准金额、审批、支付方式、状态 |
| 钱包/流水/预占 | 钱包 ID/类型、店铺或资产、币种、流水/预占 ID、reference、amount、balance before/after |
| 佣金/提现 | 记录或申请 ID、店铺、订单、系列、金额、状态、结算周期 |
| 审批 | 实例 ID、业务类型/ID、提交人、provider、external ref、correlation、状态 |
| 配置 | 配置 Key/模块或 ID/name/provider、状态、credentials_configured;不保存密钥正文 |
| 任务/通知/轮询 | 任务 ID/单号、文件名、目标、操作者、统计;通知 event/接收人/类别/ref;轮询配置/触发 ID、资产、任务类型 |
| Integration/Outbox | integration ID/provider/operation/resource/external ID;event ID/type/aggregate |
手机号、IP、ICCID、VirtualNo、金额和交易号对平台按已存业务值完整展示;密码、验证码、Token、Secret、私钥、支付密钥、回调凭据、Authorization、Cookie、签名 URL 和完整第三方原始正文从持久化前删除。
6. 查询视角与 DTO
| 视角/API | 请求 DTO 重点 | 响应 DTO 重点 |
|---|---|---|
GET /audit/events |
时间、action/category、actor、source/result/risk、scope、resource、request/correlation、分页 | EventPage{total,page,page_size,items[],retention} |
GET /audit/events/{event_id} |
稳定 event ID | EventDetail:完整 EventView、全部 ResourceView、retention |
GET /audit/actors/{kind}/{id}/events |
actor、action/result/risk/resource、时间、分页 | 与事件列表相同的稳定分页投影 |
GET /audit/resources/search |
首批 iot_card/device/shop/order/refund、精确 keyword、分页 |
ResourceCandidate{type,id,key,display_name,identity_snapshot,historical} |
GET /audit/resources/{type}/{id}/timeline |
Registry type、内部稳定 ID、时间、action/result、分页 | 资源以任意 relation 参与的 EventPage |
GET /audit/requests/{request_id}/timeline |
稳定 request ID | LinkTimeline、Access Log 检索 ID、按 record_source 分组节点 |
GET /audit/correlations/{correlation_id}/timeline |
稳定 correlation ID | Audit、Integration、Outbox、任务摘要和 Domain Ledger 引用节点 |
GET /audit/finance/timeline |
shop/wallet/order/payment/refund/recharge/approval/trade/actor/correlation/time 任一稳定条件 | FinanceTimelineNode、amount/balance、权威表字段、调查引用 |
GET /audit/risks/overview |
最长 31 天时间范围、risk/result/action/source | signals、risks、results、actions、sources、trend、retention |
GET /audit/risks/events |
总览同源筛选及分页 | 风险范围内的 EventView 分页 |
GET /audit/integrations/overview |
时间、bucket 及 Integration 组合筛选 | 总量、异常/unknown/陈旧 pending/状态变化、平均/P95、分布、趋势、retention |
GET /audit/integrations |
provider/direction/operation/result/category/resource/series/linkage 等组合筛选、分页 | ListItem 稳定编码/中文名、资源、结果、耗时、链路 |
GET /audit/integrations/{integration_id} |
稳定 integration ID | identity/resource/trigger/result/content/linkage/timestamps/attempts/fidelity/retention |
GET /agent/resource-activities/{type}/{identifier} |
业务稳定 identifier、时间、分页;范围来自认证上下文 | 资源摘要、SubjectActivity[]、retention |
GET /enterprise/resource-activities/{type}/{identifier} |
企业仅支持当前有效授权卡/设备 | 与代理相同安全 DTO,不含内部调查引用 |
所有完整路径均以 /api/admin 开头。request_id/correlation_id 生命周期、15 条接口入参与返回、页面字段来源和降级规则统一见审计链路与前端接入指南;专题说明见平台基础审计调查接口、外部集成调查接口和主体资源活动接口。OpenAPI 权威制品为 docs/admin-openapi.yaml 和运行时生成的 logs/openapi.yaml。
平台调查节点统一使用 investigation_refs。字段不存在时隐藏跳转;只有稳定 Key、没有内部 ID 时先精确资源搜索,零命中或多命中均不自动选择,禁止按名称、时间、中文描述或编号前缀猜测关系。
7. 平台与主体可见性
| 身份 | 可见能力 | 不可见能力 |
|---|---|---|
| 超级管理员/平台账号 | 全部 /api/admin/audit/* 在线数据;完整已存业务字段、操作者、风险、before/after、Integration 安全摘要 |
系统安全凭据、归档对象读取、修改/删除/导出/恢复/风险处置 |
| 代理 | 自己及下级店铺当前有权资源的 subject_result/subject_detail |
平台 actor、内部原因/备注/风险/before/after、event ID、request/correlation、Integration 内容、internal_only |
| 企业 | 当前有效授权卡/设备的安全活动;授权撤销后立即不可读 | 平台接口、企业 ID 伪造范围、分配/换货独立内部调查、所有内部字段 |
| 个人客户 | 不开放本审计中心调查接口 | 平台及主体资源活动接口 |
代理/企业查询先验证当前资源归属,再读主体投影;不存在、不支持、越权或授权撤销统一返回“无权限操作该资源或资源不存在”,不泄露资源或事件是否存在。subject_data 必须在写入时按 Registry 白名单生成,Query 不从内部 before/after 临时删字段拼装。
8. 代表性业务样例
多卡设备
操作设备第二卡槽的卡时,目标卡是 primary/affected,入口设备是 reference,绑定关系保存 slot_position=2 和当时 is_current。切换当前卡同时关联设备、旧卡、新卡和两个 binding,分别写各自前后状态,因此设备、两张卡和绑定关系时间线都能定位该事件。
换货
卡换货按角色关联换货单、旧卡、新卡、旧新钱包、流水、套餐权益和客户绑定,并分别保存旧新卡 ICCID/VirtualNo。设备换货保存旧新设备 VirtualNo/IMEI/SN,并逐张关联实际涉及的绑定卡和卡槽;不会用一个 asset_identifier 掩盖多资源关系。
资金
订单钱包扣款、退款回充、充值入账、预占/释放、佣金和提现的成功审计与钱包、唯一流水、业务单及必要 Outbox 同一 GORM 事务;审计失败则业务回滚。资金时间线返回 amount_authority,金额与余额冲突时以钱包流水及业务表为准,不修改历史 Audit Event。
批量
批量分配、批量配置、导入购包等写一条根事件,记录 total/success/fail 和 success/partial/failed;每个实际变化或已识别失败资源写子事件,共享 correlation 并以根 event 为 parent。未命中、未处理和幂等无变化项不伪造成功子事件。
9. 异常闭环与事务策略
| 场景 | 处理 |
|---|---|
| 关键成功或 partial 且改变业务事实 | Audit 与 Domain Ledger/必要 Outbox 同事务;审计失败整体回滚 |
| 已定位主要资源的业务拒绝 | 业务不落地,随后用独立短事务写 denied |
| 已定位主要资源后的执行失败 | 保留原业务错误,独立短事务写 failed |
| 失败审计二次失败 | 不覆盖原错误;写 critical 日志并递增监控计数 |
| 参数解析前失败或无法定位主要资源 | 不造无资源 Audit Event,只进入 Access/Security Log |
| 外部交互未改变内部事实 | 只写 Integration Log |
| Callback/Worker 改变内部事实 | 保留 Integration/任务事实,并以真实 external/system actor 写 Audit Event |
| 普通查询 | N/A,不写 Audit Event |
| Registry 敏感读取 | 返回敏感结果前写 Audit;失败关闭,不返回结果 |
Writer 对未知 action、未知 resource/role、缺少主要资源、资源关系不完整、安全凭据未清理和不符合事务要求的动作保持 fail-closed。业务修正通过新的受控动作产生新事件,不更新旧事件。
10. 每日归档、月度清理与在线窗口
- 每日任务按
Asia/Shanghai前一完整自然日半开区间归档。 - Audit 对象使用 UTF-8 JSONL+gzip,每行一个事件及完整
resources[];Integration 每行一条结构化持久化事实。 - 每个对象有 manifest、SHA-256、对象 metadata 和
tb_log_archive_runledger;内容变化创建新 revision,不覆盖旧对象。 - 月初先完成上月最后一天归档,并用数据库当前内容形成 Integration 最终 revision;任何 pending、缺日、数量/hash/对象不一致都阻止整月清理。
- 门禁通过后,Retention Worker 以 1000 行有界批次按 Event Resource → Audit Event → Integration Log 顺序物理删除目标月 PostgreSQL 数据,并通过 cleanup 时间断点续跑。
- 清理任务在当前月写
audit.retention_cleanup,不写回被清理月份;对象和 manifest 长期保留,不被该任务删除。
默认生产开关为 JUNHONG_WORKER_AUDIT_RETENTION_CLEANUP_ENABLED=false。灰度、仿真、SQL 观测、告警和启停步骤见审计归档灰度操作手册。
所有在线调查 DTO 返回 retention。显式范围早于在线边界或跨越边界时返回 CodeAuditDataArchived;ID-only 详情在线库不存在仍按资源不存在处理。接口不扫描对象存储,也不返回误导性的成功空结果或部分历史。
11. 发布、回滚与监控
发布前要求迁移版本 205、dirty=false,旧 Writer 生产调用为 0,Registry/覆盖门禁通过,两份 OpenAPI 可生成,生产物理清理开关保持关闭。
回滚只影响后续流量:保留当前在线 Audit、Integration、Domain Ledger、Outbox、归档 ledger 和已校验对象;不得恢复旧账号/资产 Writer,不得用 migration down 删除已有事实,不得从对象存储回填 PostgreSQL 伪造在线历史。错误事实通过前向业务动作修正。
| 监控项 | 阈值 |
|---|---|
| 关键成功审计写入失败 | 任一失败即 critical |
| failed/denied 短事务二次失败 | 增量必须为 0 |
| 未注册 action/resource/role | 必须为 0 |
| 安全凭据落库或响应命中 | 必须为 0 |
| 批量根子计数、parent/correlation 差异 | 必须为 0 |
| 旧 Writer 生产写调用 | 必须为 0 |
| 数据库受控查询 | < 50ms |
| 审计读接口 | P95 < 200ms,P99 < 500ms;发布后用既有 Access Log 观测 |
| 每日归档缺失/失败、对象或 manifest 不一致、月度非 final | critical,阻止清理 |
12. 明确未实现项
- 细粒度平台审计权限码和平台数据行过滤。
- 面向用户的审计导出、归档下载、对象存储历史查询或恢复。
- PostgreSQL 冷热联合查询、归档回填和月分区。
- 审计事件修改、删除、专用纠错 API;Retention Worker 的受控整月清理是唯一删除例外。
- Integration Log 重试、补偿、结果确认、外部单号绑定、人工恢复、修改或删除。
- 风险处置工单、自动封禁和自动恢复。
- 任意关系图、任意 JSONB/JSONPath 搜索、JSONB GIN 和 Redis 查询缓存。
- 将旧 operation log 回填、转换或拼入新审计中心。
- 从 Access Log、相近时间、相似资源或中文描述猜测业务链路和技术重试。
13. 验收依据
- 实现:
internal/model/audit_event.go、internal/model/integration_log.go、internal/model/log_archive_run.go、internal/infrastructure/audit/、internal/query/audit/、internal/query/integration/、internal/application/auditarchive/。 - API:
internal/handler/admin/audit.go、internal/routes/audit.go、internal/model/dto/audit_dto.go、docs/admin-openapi.yaml、logs/openapi.yaml。 - 覆盖:
.scratch/tech-global-audit/审计覆盖基线.md、.scratch/tech-global-audit/审计覆盖清单.json、cmd/audit-coverage。 - 发布与留存:审计归档灰度操作手册。测试环境完整月仿真为
2001-02:56/56 归档成功,Integration 28/28 final,清理后三张目标日志表归零,6 条边界哨兵和对象归档全部保留。 - 性能只读观测:事件列表 0.315ms、资源时间线 0.116ms、Integration 列表 0.186ms、风险聚合 0.123ms;API P95/P99 使用既有 9.4 证据及发布后 Access Log 阈值,不执行接口压测。
- 本 Change 按明确约束不新增、修改或运行自动化测试;交付验证使用 OpenAPI 生成、覆盖静态门禁、编译、LSP、迁移/数据核对、只读性能观测和文档一致性检查。
14. 最终验收结论
2026-08-07 按 proposal、design、8 份 delta spec 和 77 项 tasks 完成最终核对:
| 门禁 | 最终证据 | 结论 |
|---|---|---|
| 静态覆盖 | cmd/audit-coverage 重新生成 692 条当前入口;Action/Resource Registry、敏感读取、N/A 和旧 Writer 白名单无未登记项 |
PASS |
| LSP 与构建 | 变更 Go 文件 gopls check 无诊断;go build ./... 退出码 0 |
PASS |
| 迁移 | .env.local 测试库只读核对版本 205、未标 dirty;无事实隔离 schema 已完成 000199~000205 up/down,现有事实库未执行破坏性 down |
PASS |
| OpenAPI | cmd/gendocs 与运行时生成成功;两份制品各含 15 条平台调查及代理/企业活动路径且契约一致;固定请求/响应枚举已生成真实 enum,审计相关公开 schema 无缺失字段说明,RouteSpec 已写明业务页字段、调查引用和通知目标映射 |
PASS |
| 前端接入文档 | 审计链路与前端接入指南 已覆盖 request/correlation/parent/integration/series 生命周期、数据库落点、自动与人工轮询边界、15 条接口全部入参与主要返回字段、现有业务页面入口矩阵和完整调用链;OpenAPI 48 个请求参数名无遗漏 | PASS |
| 数据库与 API 性能 | 四条代表性数据库查询均小于 1ms且低于 50ms;API P95/P99 复用 9.4 既有证据,发布后以 Access Log 按 200ms/500ms 阈值持续观测 | PASS |
| 身份与凭据 | 平台、代理店铺层级、企业有效授权和 internal_only 边界已核对;数据库/响应凭据抽样为 0 命中,无审计导出、归档读取/恢复或业务删除路由 |
PASS |
| 事务与业务链路 | 关键成功同事务、失败短事务保留原错、批量根子计数、真实 actor、request/correlation/parent/series 及四类事实边界证据已在 11.4 收口 | PASS |
| 旧写切换 | 旧账号/资产 Writer 生产写为 0;旧表、旧资产历史查询和手动轮询运行 ledger 按契约保留 | PASS |
| 归档与清理 | 2001-02 共 56/56 归档成功、Integration 28/28 final;dry-run 后测试库目标月三表归零,6 条边界哨兵、56 条断点及全部对象/manifest 保留,生产清理开关关闭 |
PASS |
| 制品一致性 | git diff --check 无错误;openspec validate build-multi-view-audit-center --strict PASS |
PASS |
验收范围内已知错误为零,77 项任务全部完成,Change 可归档。未实现项仍严格保持第 12 节边界,不因验收扩展。