半山仙人
半山仙人
发布于 2025-10-27 / 3 阅读
0
0

MSERP 版本管理规范


📌 MSERP 版本管理规范(Draft)

版本控制是企业软件可持续交付的基础,统一规范可确保不同客户部署保持一致性、可升级性和可维护性。


1️⃣ 版本号命名规范

MSERP 使用 语义化版本号 SemVer:

主版本号.次版本号.修订号
MAJOR.MINOR.PATCH

示例:

v1.4.2
段位增加时机说明
MAJOR 主版本破坏性变更不兼容升级、数据结构重大调整
MINOR 次版本新功能上线向后兼容
PATCH 修订Bug修复、性能优化不影响业务逻辑

2️⃣ 版本体系划分

MSERP 版本由三部分构成:

类型命名示例控制范围
应用版本v1.4.2API、UI、业务逻辑
数据库版本db-1.2.1表结构、索引、约束
预置数据版本preset-1.0.7系统参数、系统属性等基础数据

三者 独立递进,避免强绑定,提高升级灵活性


3️⃣ 预置数据(系统属性/系统参数)版本管理

字段建议:

ALTER TABLE sys_params
  ADD COLUMN scope TINYINT DEFAULT 0 COMMENT '0=系统预置 1=客户自定义',
  ADD COLUMN locked TINYINT DEFAULT 0 COMMENT '1=锁定禁止UI编辑',
  ADD COLUMN version_tag VARCHAR(50) COMMENT '预置数据来源版本';

升级策略:

✅ 只更新 scope=0(系统级)
✅ 不覆盖 scope=1(客户级)
✅ 根据 version_tag 避免重复执行

升级语句模板:

INSERT INTO sys_params (code, name, value, scope, locked, version_tag)
VALUES ('UNIT_KG', '公斤', 'kg', 0, 1, 'preset-1.0.7')
ON DUPLICATE KEY UPDATE
  name = IF(scope = 0, VALUES(name), name),
  value = IF(scope = 0, VALUES(value), value),
  locked = IF(scope = 0, VALUES(locked), locked);

4️⃣ 数据库升级策略

数据库结构升级使用 完整版本号控制

记录字段:

CREATE TABLE sys_db_version (
  version VARCHAR(50) PRIMARY KEY,
  upgrade_time DATETIME DEFAULT CURRENT_TIMESTAMP
);

升级逻辑示例:

IF NOT EXISTS (SELECT 1 FROM sys_db_version WHERE version = 'db-1.2.1') THEN
    -- 执行表结构升级脚本
    INSERT INTO sys_db_version VALUES ('db-1.2.1');
END IF;

✅ 多次执行不重复 ✅ 全部客户可持续升级


5️⃣ 应用版本控制

交付容器镜像命名:

mserp-api:v1.4.2
mserp-admin:v1.4.2

生产环境应使用固定 tag,不使用 latest


6️⃣ 客户部署差异处理

内容方式
上传/下载目录.env 文件配置
数据库连接.env 配置
个性化参数scope=1 客户自定义
界面差异页面配置表或客户特性表
审计/日志库独立实例,版本独立更新

7️⃣ 升级流程(推荐)

1. 停止服务(可选)
2. 备份数据库
3. 执行数据库结构升级脚本(db-x.x.x)
4. 执行预置数据升级脚本(preset-x.x.x)
5. 部署应用镜像(vX.Y.Z)
6. 验证应用运行

所有脚本可重复执行,保证幂等性 ✅


✅ 总结

类别升级方式数据安全性
应用版本镜像替换✅
数据库版本结构升级检测✅
预置数据版本scope 控制 + 版本标记✅✅✅(最强)

升级不影响客户个性化,客户差异不影响系统升级



评论