--- title: 数据与持久层红线 type: rule permalink: main/projects/d44c219a-0b31-4de1-b160-323eb34a4c6a/数据与持久层红线 stable_id: dc70f54c-8e29-4834-a5c1-a63bc9ac9e68 scope: project project_id: d44c219a-0b31-4de1-b160-323eb34a4c6a memory_type: rule status: active revision: 1 restored_from_commit: 6a6a895eafcca6052e81a14fca103a42635dd1c2 created_at: '2026-09-23T15:07:57.973578+00:00' updated_at: '2026-09-23T15:07:57.973633+00:00' tags: - data - migration - backup - security --- - 升级永不覆盖持久层:运行目录根 `.env`、`storage/`(上传)、`backups/`、数据库。代码/镜像是可替换层。 - Prisma 迁移基线为 `20260715000000_init`,备份格式 `2.0.0`,不兼容此前数据库/备份/旧追溯码;只能全新安装或升级已用该基线的环境。新变更一律走增量迁移。 - 全局流水 `trace_code_sequence.next_seq` 禁止手工回退;耗尽 999999 后停止生码不循环;恢复备份强制校验 `nextSeq > max(serialNo)`。 - 已有追溯码/查询记录的档案禁止删除(只能停用/归档);已 ONCHAIN/处理中/UNKNOWN 的追溯码禁止删除和重复上链。 - 媒体统一以存储 key 入库,展示时经 `StorageService.getUrl` 转 URL;上传禁止 SVG(防存储型 XSS)。 - 短链/追溯码 URL 一律动态生成 `{clientBaseUrl}/#/trace/{shortCode}`,勿依赖 DB 的 url 列(已废弃固化)。 - seed 的追溯码短码必须符合 12 位数字 `TRACE_CODE_PATTERN`,否则 C 端判 INVALID。 - 在线存储切换(local↔OSS)必须单 API 实例;OSS bucket policy/CDN 必须排除 `.private/` 前缀匿名访问。 - 生产无默认管理员口令(由安装向导设置);seed 弱口令仅限本地开发。