feat(data): 业务数据与系统数据分离的导入导出
数据迁移不再整体替换 trade.db —— 那条路会把账号、权限组、组织、设置(含大模型密钥)、 登录会话与审计日志一起搬到目标部署。改为按类别搬运业务数据,系统数据永远是目标部署自己那份。 - backend/lib/dataTransfer:表目录(30 张业务表,依赖顺序)、gzip JSONL 数据包(每表 sha256)、导入内核 - 归属统一给导入人;冲突跳过不覆盖;父记录按 __refs 自然键快照补壳 - 流水表(price_history)按整行内容判重:用 (sku, changed_at) 当键实测 643 行丢 186 行 - 预览在库副本上真跑一遍导入,报告与真导同源;导入前 VACUUM INTO 备份,单事务写入 - 新权限点 data.transfer(仅超管组),导出/导入均写审计 - 前端「数据迁移」页:按类别勾选导出、上传后预览逐表明细、确认导入;移除设置里的静态占位「数据交换」 - 测试:单测 7 项(含目录外键顺序、BLOB、重复导入、包被改坏)、API 端到端 1 项(两个真实实例互传) - 用真实库副本彩排:3854 行 0 失败,29 张业务表行数全部一致,包 1.22 MB
This commit is contained in:
@@ -29,6 +29,7 @@
|
||||
### 系统管理
|
||||
- **用户管理** - 账号、角色与启停用
|
||||
- **权限组管理** - 角色 → 权限组 → 权限点三级授权
|
||||
- **数据迁移** - 业务数据按类别导出/导入(产品、客户、订单…),账号与系统设置不随包迁移
|
||||
- **系统日志** - 登录、改密与数据变更审计
|
||||
|
||||
## 技术栈
|
||||
@@ -121,6 +122,10 @@ SQLite 单文件存储:
|
||||
- 支持备份和迁移
|
||||
- 数据目录与上传文件已在 `.gitignore` 中排除,不会入库
|
||||
|
||||
> **换机器 / 上云请不要直接覆盖 `trade.db`。** 整个库里有账号、权限、组织、设置(含大模型密钥)、
|
||||
> 登录会话与审计日志,直接替换等于换掉一整套后台。请用「系统管理 · 数据迁移」按类别
|
||||
> 导出业务数据包再导入,系统数据保持目标部署自己那份。详见 [业务数据导入导出](docs/data-transfer.md)。
|
||||
|
||||
> **已知限制:数据库当前未加密。** 驱动选用的是 `better-sqlite3-multiple-ciphers`
|
||||
> (本身具备 SQLCipher 能力),但代码尚未设置加密密钥,`trade.db` 以明文存放。
|
||||
> 部署到共享主机或不可信环境前,请自行启用磁盘加密。
|
||||
|
||||
Reference in New Issue
Block a user