Files
ctms/docs/audits/storage-persistence-governance.md
T
2026-03-30 17:36:09 +08:00

57 lines
2.0 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.
# 全项目重要数据落库治理基线
状态: `active`
适用范围: `storage-persistence`
最后更新: `2026-02-27`
## 1. 口径
- 纳入范围:业务主数据 + 审计数据
- 排除范围:纯 UI 偏好、登录态会话、跨标签广播等非业务主数据
## 2. 自动核查入口
```bash
backend/scripts/storage_persistence_audit.py --format markdown --output docs/audits/storage-persistence-audit.md
backend/scripts/storage_persistence_audit.py --fail-on-banned
```
- `docs/audits/storage-persistence-audit.md`:当前扫描快照
- `--fail-on-banned`:用于阻断禁止项(当前默认禁止 `audit_local_*`
## 3. 当前结论(基于 2026-02-27 扫描)
- 高风险:4 条(均为 `ProjectDetail` 本地草稿兜底读写)
- 中风险:0 条
- 低风险:42 条(会话、偏好、工作台本地待办等)
## 4. 已完成整改
### 4.1 审计链路
- 关键管理动作改为后端落库(站点、项目成员)
- 审计页改为服务端唯一数据源
- 前端本地审计日志通道已下线(不再写 `audit_local_*`
- 审计导出事件改为后端写入审计表
### 4.2 业务链路
- 设备管理已接入后端并落库
- 项目里程碑编辑保存已改为调用后端接口并落库
- 立项配置草稿保留本地兜底,但已增加:
- `SYNCED / LOCAL_ONLY / DIRTY_UNSAVED` 状态识别
- 本地草稿恢复确认(含过期/冲突提示)
- 发布前 `LOCAL_ONLY` 阻断
- 保存失败重试与成功后自动清理本地草稿
- 发布比对签名已改为后端返回的 `published_project_snapshot`,不再依赖 localStorage
### 4.3 门禁与流程
- 已新增 CI 工作流:`.github/workflows/storage-persistence-guard.yml`
- PR / push 到主干时会执行 `storage_persistence_audit.py --fail-on-banned`
## 5. 剩余优化项(可选)
1. 将“高风险清单”阈值从固定 key 规则升级为白名单机制(白名单外一律告警)。
2. 评估是否把 `ProjectDetail` 本地草稿从 localStorage 迁移为后端草稿(可选能力,非当前口径强制项)。