# 版本管理 **本文引用的文件** - [README.md](file://README.md) - [DEPLOY.md](file://DEPLOY.md) - [DEPLOY_PROD.md](file://DEPLOY_PROD.md) - [AUTO_DEPLOY.md](file://AUTO_DEPLOY.md) - [deploy-prod.sh](file://deploy-prod.sh) - [server/webhook-deploy.py](file://server/webhook-deploy.py) - [server/package.json](file://server/package.json) - [my-uniapp-vue3/package.json](file://my-uniapp-vue3/package.json) - [.codebuddy/rules/harness.mdc](file://.codebuddy/rules/harness.mdc) - [FEATURE_CHECKLIST.md](file://FEATURE_CHECKLIST.md) ## 目录 1. [简介](#简介) 2. [项目结构](#项目结构) 3. [核心组件](#核心组件) 4. [架构总览](#架构总览) 5. [详细组件分析](#详细组件分析) 6. [依赖分析](#依赖分析) 7. [性能考虑](#性能考虑) 8. [故障排查指南](#故障排查指南) 9. [结论](#结论) 10. [附录](#附录) ## 简介 本文件为 AI 有声书生成平台提供系统化的版本管理文档,覆盖 Git 分支模型、版本号规范、合并策略、发布流程、CI/CD 与自动化部署、发布日志与变更管理,以及向后兼容性保障策略。文档以仓库现有部署与自动化脚本为基础,结合项目技术栈与开发流程,形成可落地的版本管理实践。 ## 项目结构 - 前端采用 uniapp + Vue3 + TypeScript,构建产物用于静态托管。 - 后端采用 Node.js + Koa,使用 Prisma 管理数据库迁移。 - 部署与运维脚本集中在仓库根目录与 server 目录,支持一键部署与自动部署。 - 开发流程包含功能清单、Agent 协作规则与前端检查清单,确保功能交付质量。 ```mermaid graph TB subgraph "前端" FE_PKG["my-uniapp-vue3/package.json"] FE_BUILD["H5 构建产物"] end subgraph "后端" BE_PKG["server/package.json"] BE_SRC["Koa 应用"] PRISMA["Prisma 迁移与客户端"] end subgraph "部署与运维" SH["部署脚本
deploy-prod.sh"] PY["Webhook 部署
webhook-deploy.py"] NGINX["Nginx 反向代理"] PM2["PM2 进程管理"] end FE_PKG --> FE_BUILD BE_PKG --> BE_SRC BE_SRC --> PRISMA FE_BUILD --> NGINX BE_SRC --> NGINX NGINX --> PM2 SH --> PM2 PY --> SH ``` 图表来源 - [deploy-prod.sh:1-171](file://deploy-prod.sh#L1-L171) - [server/webhook-deploy.py:1-139](file://server/webhook-deploy.py#L1-L139) - [DEPLOY_PROD.md:1-393](file://DEPLOY_PROD.md#L1-L393) - [server/package.json:1-60](file://server/package.json#L1-L60) - [my-uniapp-vue3/package.json:1-65](file://my-uniapp-vue3/package.json#L1-L65) 章节来源 - [README.md:1-168](file://README.md#L1-L168) - [DEPLOY.md:1-251](file://DEPLOY.md#L1-L251) - [DEPLOY_PROD.md:1-393](file://DEPLOY_PROD.md#L1-L393) - [AUTO_DEPLOY.md:1-142](file://AUTO_DEPLOY.md#L1-L142) - [deploy-prod.sh:1-171](file://deploy-prod.sh#L1-L171) - [server/webhook-deploy.py:1-139](file://server/webhook-deploy.py#L1-L139) - [server/package.json:1-60](file://server/package.json#L1-L60) - [my-uniapp-vue3/package.json:1-65](file://my-uniapp-vue3/package.json#L1-L65) ## 核心组件 - 分支与版本管理 - 采用 Git 分支模型:主分支保护、功能分支、热修复分支。 - 版本号采用语义化版本(SemVer),发布遵循“版本标签 + 变更日志 + 回滚预案”。 - 合并策略 - Pull Request(PR)流程:功能开发 → 代码审查 → 自动化测试 → 合并主分支 → 自动化部署。 - 代码审查要求:覆盖率、可读性、兼容性与安全性。 - 发布流程 - 版本打包:前端构建 + 后端编译 + 依赖安装。 - 部署前检查:健康检查、数据库迁移、Nginx 配置校验。 - 回滚机制:PM2 与备份目录,支持一键回滚。 - CI/CD 与自动化 - 自动部署:Webhook 接收 → 部署脚本执行 → PM2 重启。 - 多环境部署:开发、测试、生产环境分离,配置文件隔离。 - 发布日志与变更管理 - 变更日志:按功能模块与版本聚合,支持快速检索。 - 版本标签:遵循 SemVer,发布后打 Tag 并推送。 章节来源 - [DEPLOY.md:1-251](file://DEPLOY.md#L1-L251) - [DEPLOY_PROD.md:1-393](file://DEPLOY_PROD.md#L1-L393) - [AUTO_DEPLOY.md:1-142](file://AUTO_DEPLOY.md#L1-L142) - [deploy-prod.sh:1-171](file://deploy-prod.sh#L1-L171) - [server/webhook-deploy.py:1-139](file://server/webhook-deploy.py#L1-L139) - [.codebuddy/rules/harness.mdc:1-98](file://.codebuddy/rules/harness.mdc#L1-L98) - [FEATURE_CHECKLIST.md:1-150](file://FEATURE_CHECKLIST.md#L1-L150) ## 架构总览 本项目的版本管理与发布架构由“分支模型 + 版本号 + 合并策略 + 自动化部署 + 回滚机制”组成,贯穿开发、测试、上线与运维全生命周期。 ```mermaid sequenceDiagram participant Dev as "开发者" participant Repo as "Git 仓库" participant CI as "CI/CD/Webhook" participant Server as "部署服务器" participant PM2 as "PM2 进程管理" Dev->>Repo : 提交功能分支并发起 PR Repo->>CI : 触发自动化测试与构建 CI-->>Dev : 测试结果与构建产物 Dev->>Repo : 代码审查通过后合并主分支 Repo->>CI : 推送主分支触发自动部署 CI->>Server : 执行部署脚本备份/安装/迁移 Server->>PM2 : 重启后端服务 PM2-->>Server : 服务就绪 Server-->>CI : 健康检查通过 CI-->>Dev : 发布完成通知 ``` 图表来源 - [AUTO_DEPLOY.md:1-142](file://AUTO_DEPLOY.md#L1-L142) - [server/webhook-deploy.py:1-139](file://server/webhook-deploy.py#L1-L139) - [deploy-prod.sh:1-171](file://deploy-prod.sh#L1-L171) - [DEPLOY.md:1-251](file://DEPLOY.md#L1-L251) - [DEPLOY_PROD.md:1-393](file://DEPLOY_PROD.md#L1-L393) ## 详细组件分析 ### Git 分支管理模型 - 主分支保护 - master/main 仅允许通过 PR 合并,禁止直接推送。 - 强制代码审查与自动化测试通过。 - 功能分支策略 - 命名规范:feature/模块名/功能描述。 - 合并与清理:功能完成后删除分支,保留提交历史。 - 热修复分支 - 命名规范:hotfix/修复主题。 - 从 release/版本标签创建,修复后同时合并回 main 与 develop。 章节来源 - [.codebuddy/rules/harness.mdc:1-98](file://.codebuddy/rules/harness.mdc#L1-L98) ### 版本号规范与发布规则 - 版本号规范 - 采用语义化版本(SemVer):主版本.次版本.修订号。 - 修订号:修复补丁,不破坏兼容。 - 次版本:向下兼容的新功能。 - 主版本:破坏性变更。 - 发布规则 - 发布前:完成功能清单、自动化测试、前端验收检查。 - 发布时:打 Tag → 推送 → 自动化部署 → 健康检查。 - 发布后:更新变更日志,通知相关方。 章节来源 - [server/package.json:1-60](file://server/package.json#L1-L60) - [my-uniapp-vue3/package.json:1-65](file://my-uniapp-vue3/package.json#L1-L65) - [FEATURE_CHECKLIST.md:1-150](file://FEATURE_CHECKLIST.md#L1-L150) ### 合并策略与代码审查 - Pull Request 流程 - 功能开发 → 提交 PR → 代码审查 → 自动化测试 → 合并。 - 代码审查要求 - 功能完整性、可读性、安全性、兼容性与性能。 - 前端页面测试:Playwright 自动化测试,禁止用 curl 替代。 - 冲突解决 - 优先 rebase 保持线性历史;冲突时及时沟通与评审。 章节来源 - [.codebuddy/rules/harness.mdc:1-98](file://.codebuddy/rules/harness.mdc#L1-L98) - [FEATURE_CHECKLIST.md:1-150](file://FEATURE_CHECKLIST.md#L1-L150) ### 发布流程(打包、部署前检查、回滚) - 版本打包 - 前端:H5 构建产物。 - 后端:编译产物与依赖安装。 - 部署前检查 - 健康检查:/api/health。 - 数据库迁移:Prisma migrate deploy。 - Nginx 配置:宝塔面板管理,SSL 证书与代理配置。 - 回滚机制 - 备份目录:/data/ai/audio/backup_YYYYMMDD_HHMMSS。 - PM2:pm2 restart 与 pm2 save。 - 一键回滚:恢复备份目录并重启服务。 ```mermaid flowchart TD Start(["开始发布"]) --> BuildFE["前端构建 H5"] BuildFE --> BuildBE["后端编译与依赖安装"] BuildBE --> Backup["创建备份目录"] Backup --> Install["安装与迁移"] Install --> Health["健康检查 /api/health"] Health --> |通过| Restart["PM2 重启服务"] Health --> |失败| Rollback["回滚到备份"] Restart --> Done(["发布完成"]) Rollback --> Done ``` 图表来源 - [DEPLOY.md:1-251](file://DEPLOY.md#L1-L251) - [DEPLOY_PROD.md:1-393](file://DEPLOY_PROD.md#L1-L393) - [deploy-prod.sh:1-171](file://deploy-prod.sh#L1-L171) 章节来源 - [DEPLOY.md:1-251](file://DEPLOY.md#L1-L251) - [DEPLOY_PROD.md:1-393](file://DEPLOY_PROD.md#L1-L393) - [deploy-prod.sh:1-171](file://deploy-prod.sh#L1-L171) ### 持续集成/持续部署(CI/CD) - 自动部署架构 - Git 推送 → Gogs Webhook → 服务器 Webhook 接收器 → 自动部署脚本 → PM2 重启。 - Webhook 服务 - Python HTTP 服务,支持签名验证与日志记录。 - systemd 服务自启动,Nginx 反向代理转发。 - 多环境部署 - 开发/测试/生产环境分离,配置文件与端口隔离。 - 生产环境使用宝塔面板管理 Nginx。 ```mermaid sequenceDiagram participant Dev as "开发者" participant Gogs as "Gogs 仓库" participant Nginx as "Nginx" participant Py as "webhook-deploy.py" participant Sh as "deploy.sh" participant PM2 as "PM2" Dev->>Gogs : 推送代码 Gogs->>Nginx : 触发 Webhook Nginx->>Py : 转发请求 Py->>Sh : 执行部署脚本 Sh->>PM2 : 重启后端服务 PM2-->>Sh : 服务就绪 ``` 图表来源 - [AUTO_DEPLOY.md:1-142](file://AUTO_DEPLOY.md#L1-L142) - [server/webhook-deploy.py:1-139](file://server/webhook-deploy.py#L1-L139) 章节来源 - [AUTO_DEPLOY.md:1-142](file://AUTO_DEPLOY.md#L1-L142) - [server/webhook-deploy.py:1-139](file://server/webhook-deploy.py#L1-L139) ### 发布日志与变更管理 - 发布日志 - 按版本聚合,记录新增功能、修复问题与注意事项。 - 与 PR/Issue 关联,便于溯源。 - 变更日志生成 - 基于 Git 提交与 PR 描述,自动生成变更摘要。 - 向后兼容性保证 - 严格遵循 SemVer,破坏性变更提升主版本。 - 发布前进行兼容性测试与回归验证。 章节来源 - [FEATURE_CHECKLIST.md:1-150](file://FEATURE_CHECKLIST.md#L1-L150) - [server/package.json:1-60](file://server/package.json#L1-L60) - [my-uniapp-vue3/package.json:1-65](file://my-uniapp-vue3/package.json#L1-L65) ## 依赖分析 - 技术栈与版本管理 - 前端:uniapp + Vue3 + TypeScript,构建脚本由 package.json 管理。 - 后端:Node.js + Koa,依赖与脚本由 package.json 管理。 - 数据库:Prisma 管理迁移与客户端生成。 - 部署脚本与服务 - deploy-prod.sh:统一打包、上传、安装、迁移与重启。 - webhook-deploy.py:Webhook 接收与部署触发。 - PM2:进程守护与自动重启。 - Nginx:反向代理与静态资源服务。 ```mermaid graph LR FE_PKG["my-uniapp-vue3/package.json"] --> FE_BUILD["H5 构建"] BE_PKG["server/package.json"] --> BE_COMPILE["编译产物"] BE_COMPILE --> PM2 FE_BUILD --> NGINX PM2 --> NGINX NGINX --> CLIENT["客户端访问"] ``` 图表来源 - [my-uniapp-vue3/package.json:1-65](file://my-uniapp-vue3/package.json#L1-L65) - [server/package.json:1-60](file://server/package.json#L1-L60) - [DEPLOY.md:1-251](file://DEPLOY.md#L1-L251) - [DEPLOY_PROD.md:1-393](file://DEPLOY_PROD.md#L1-L393) 章节来源 - [my-uniapp-vue3/package.json:1-65](file://my-uniapp-vue3/package.json#L1-L65) - [server/package.json:1-60](file://server/package.json#L1-L60) - [DEPLOY.md:1-251](file://DEPLOY.md#L1-L251) - [DEPLOY_PROD.md:1-393](file://DEPLOY_PROD.md#L1-L393) ## 性能考虑 - 构建与部署性能 - 前端构建产物缓存与增量构建,减少重复编译。 - 后端编译与依赖安装在生产环境使用 --production 优化。 - 运行时性能 - PM2 进程管理与自动重启,保障服务可用性。 - Nginx 静态资源缓存与 SSL 加速,提升访问性能。 ## 故障排查指南 - 后端无法启动 - 检查端口占用、环境变量与日志。 - 使用 pm2 logs server 查看错误。 - 前端无法访问 - 检查文件权限、Nginx 配置与日志。 - 数据库连接失败 - 检查 MySQL 服务状态与连接配置。 - Webhook 部署异常 - 检查 webhook 服务状态、日志与签名配置。 - 使用 curl 测试端点与日志监控。 章节来源 - [DEPLOY.md:1-251](file://DEPLOY.md#L1-L251) - [DEPLOY_PROD.md:1-393](file://DEPLOY_PROD.md#L1-L393) - [AUTO_DEPLOY.md:1-142](file://AUTO_DEPLOY.md#L1-L142) - [server/webhook-deploy.py:1-139](file://server/webhook-deploy.py#L1-L139) ## 结论 本版本管理文档以仓库现有部署与自动化脚本为基础,建立了从分支模型、版本号规范到发布与回滚的完整闭环。通过 PR 流程、代码审查与自动化测试,确保发布质量;通过 Webhook 与 PM2 实现一键部署与快速回滚,保障线上稳定性。建议在后续实践中补充 CI/CD 流水线与自动化测试覆盖率指标,持续优化发布效率与可靠性。 ## 附录 - 快速参考 - 健康检查:/api/health - 前端构建:npm run build:h5 - 后端编译:npm run build - PM2 管理:pm2 status/restart/save/startup - Nginx 管理:nginx -t && systemctl reload nginx