5.2 KiB
5.2 KiB
Context
审计调查横跨平台、代理和企业三种身份,以及事件、资源、请求、业务链路、资金和外部交互等多种事实视角。后端通过内部资源 ID、主体安全 identifier、investigation_refs、Integration linkage 和 fidelity 明确表达可导航关系;前端的职责是原样传递这些稳定引用,而不是补全关系。
现有实现已经形成 AuditInvestigationDrawer、AuditResourceSearchDialog 和全局控制器,但业务页面仍需逐一核对入口覆盖、角色映射和降级规则。本设计将导航判断集中到共享目标解析层,展示仍由只读组件负责。
Goals / Non-Goals
- Goals: 用一个类型安全的目标模型表达所有允许的审计调查入口。
- Goals: 完成文档中资产、组织、账号、交易、资金和调查节点的导航矩阵。
- Goals: 保证平台、代理和企业仅调用各自允许的接口,并隐藏缺少稳定参数的入口。
- Goals: 使用弹窗/右侧抽屉承载续查,锁定底层滚动并支持分页与空状态。
- Non-Goals: 不修改后端链路生成、数据库、留存或授权规则。
- Non-Goals: 不提供恢复、重试、处置、封禁、修改、删除或导出。
- Non-Goals: 不把旧 operation log 合并进新审计链路。
- Non-Goals: 不从 Access Log、历史队列、自由文本或时间邻近关系自动发现链路。
Decisions
- Decision: 使用判别联合类型描述
event/actor/resource/request/correlation/finance/integration/agent/enterprise调查目标;调用方只能提交该目标模型,不能提交任意 URL。 - Decision: 使用全局调查宿主承载共享抽屉和精确资源弹窗。业务页面操作只负责构造目标,不各自维护弹窗、加载和滚动状态。
- Decision: 独立的审计中心列表与详情可以保留路由;跨视角时间线和关联详情使用抽屉。移除旧时间线路由、别名和所有指向它的跳转。
- Decision: 平台资源入口优先使用业务响应中的内部稳定 ID。只有调用上下文没有资源 ID、但明确持有
iot_card/device/shop/order/refund的业务 Key 时,才进入精确资源搜索。 - Decision: 精确资源搜索不展示
resource_id或身份快照中的内部关联 ID。候选项只展示按资源类型白名单选择的业务字段;选中后在内部原样使用返回的resource_type/resource_id。 - Decision: 代理使用 ICCID、VirtualNo、分配单号、换货单号、店铺编号或企业编号;企业只使用当前授权卡的 ICCID 或设备 VirtualNo。主体身份和范围不作为前端参数。
- Decision:
investigation_refs是来源详情续查的权威来源。字段缺失、目标与当前详情相同或fidelity=false时隐藏对应操作;共享调查抽屉内部保持只读,不重复嵌套一组调查按钮。 - Decision: 请求和业务链路 ID 默认不展示原值;仅在明确的超级管理员开发调查上下文中允许复制真实 request ID,且不得由前端生成。
- Decision: 资金目标只提交一个已知稳定条件,其他订单、支付、退款、充值和钱包关联由服务端解析;金额始终按分保存在应用数据中。
- Decision:
401/403、授权撤销或主体资源不存在时显示中性“活动不可用”,不回退平台接口、精确资源搜索或旧 operation log。 - Decision: 所有抽屉使用
append-to-body、modal 和 scroll lock,关闭后销毁内容;分页切换保留目标和筛选,切换目标时清空旧数据。
Risks / Trade-offs
- 业务页面数量多,容易出现入口漏接或使用错误字段。通过集中目标解析函数和表驱动测试覆盖文档矩阵。
- 全局抽屉减少重复代码,但必须防止上一目标的数据闪现。打开新目标前先清空状态,并以当前请求标识忽略过期响应。
- 精确资源搜索结果来自当前表或历史快照;仅展示白名单字段会减少调试信息,但可以避免泄露内部 ID 和不稳定结构。
- 本变更与
add-audit-chain-frontend-integration修改同一组件目录。实施前必须以其最新状态为基线,避免覆盖已完成的 UI 调整。
Migration Plan
- 固化共享调查目标类型、控制器和角色解析函数,并为现有入口提供兼容适配。
- 将仍指向旧时间线路由的入口切换为全局调查宿主,确认无引用后删除旧页面、路由和别名。
- 按文档矩阵依次接入资产组织页、账号交易页、资金页和调查节点续查。
- 收紧精确搜索触发条件、主体视角和空标识降级规则。
- 完成角色矩阵、参数原样传递、禁止推断、弹窗滚动和过期请求测试。
- 若出现回归,可按业务模块隐藏新入口;不恢复任意 URL 跳转或 ID 推断逻辑。
Open Questions
- 账号、代理充值、资产分配、换货、店铺资金概况等尚未接入页面的最终按钮权限是否沿用资源时间线/资金时间线权限,还是增加业务入口专用权限?
- 超级管理员是否需要一个显式的 Access Log request ID 粘贴入口;若不需要,前端应完全移除手工 request 查询。
historical=true在产品要求隐藏“匹配来源”后,是否仍需用非字段式的警告图标提示资源可能已删除?