Files
ai-gateway-go/docs/legacy-import-runbook.md
superidou 5759c1862e AI Gateway Go 0.10.0 源码快照 + 旗舰版需求规划报告
M0-M7 已完成:核心网关(身份/RBAC/TOTP/OIDC/SAML/Provider/配额/路由/内容策略/审计/定价)+ 资源市场(MCP/Skills/数字员工)。
含 22 个 PostgreSQL 迁移、管理端/门户端前端源码、OpenAPI 契约、部署 compose。

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-12 11:45:54 +08:00

43 lines
2.1 KiB
Markdown

# 旧数据导入手册
当前工程提供两阶段、可重复执行的迁移入口,避免直接把旧 SQLite 密文或不完整外键写进新业务表。
## 1. 只读导出
在旧系统停止配置写入后,对数据库快照执行:
```bash
python3 scripts/export_legacy_data.py /secure-snapshot/gateway.db > /secure-transfer/gateway.jsonl
```
默认不导出密码、API Key、TOTP、请求头等敏感列。需要迁移 Provider/工具等凭据时,只能在隔离迁移环境使用 `--include-encrypted`;旧密文不能作为新密文直接写入,必须由专用转换步骤用旧密钥解密,再用新的用途标签和活动 KEK 加密。
## 2. 校验和暂存
先执行不连接数据库的校验:
```bash
gateway-legacy-import --input /secure-transfer/gateway.jsonl --dry-run
```
再写入 PostgreSQL 不可变暂存区:
```bash
export DATABASE_URL='postgres://...'
gateway-legacy-import --input /secure-transfer/gateway.jsonl
```
每条记录会验证 SHA-256,使用固定 namespace 生成 UUIDv5,并同时写入 `legacy_import_records``legacy_id_mappings`。相同快照重复执行会复用 batch;同一旧 ID 的内容发生变化时失败关闭,不会静默覆盖先前暂存数据。
## 3. 领域转换与验收
暂存成功不等于已写入生产业务表。必须按外键拓扑执行领域转换:部门 → 身份 → Provider/API Key → Prompt/知识/工具 → 应用版本 → 审计历史。每批转换后核对:
- 源记录数、目标记录数、明确跳过数和失败数之和相等;
- 所有旧外键都能从 `legacy_id_mappings` 找到映射;
- Provider、工具、通知、TOTP 等密文可使用新 keyring 解密,且数据库中不存在旧明文;
- 审计只迁移有界预览与结构化元数据,不迁移无限长原始正文;
- 应用发布版本引用的 Prompt、知识库和工具均存在且启用。
当前仓库没有用户的实际 SQLite 数据文件,因此已完成的是可验证暂存管道;生产领域转换必须在拿到脱敏快照及旧密钥托管授权后执行,不能凭空假设旧密文格式。