# 健身房管理系统基础设施重构设计规格 **文档版本**:1.0 **创建日期**:2026-04-17 **作者**:张翔 **状态**:已批准 --- ## 1. 项目概况 ### 1.1 背景 当前项目为一个通用的后台管理系统,需要根据业务需求调整为健身房管理系统。本次重构仅涉及基础设施层面,包括项目重命名、包名修改、测试迁移和移动端项目创建,不涉及业务功能的修改。 ### 1.2 目标 - 将 `novalon-manage-api` 重构为 `gym-manage-api` - 将 `novalon-manage-web` 重构为 `gym-manage-web` - 创建 `gym-manage-uniapp` 移动端项目脚手架 - 创建独立的 `e2e-tests` 测试目录 - 整理根目录,保持整洁 - 修改 Java 包名从 `cn.novalon.manage` 到 `cn.novalon.gym.manage` ### 1.3 远程仓库 ``` https://git.f.novalon.cn/novalon/gym-manage.git ``` ### 1.4 范围界定 **包含**: - 项目目录和文件重命名 - Java 包名修改 - Maven/NPM 配置更新 - 测试文件迁移 - UniApp 项目脚手架创建 - 全局配置和文档更新 **不包含**: - 业务功能修改 - 数据库表结构修改 - API 接口修改 - UI/UX 设计调整 --- ## 2. 最终目录结构 ``` gym-manage/ # 根目录 ├── gym-manage-api/ # 后端项目(原 novalon-manage-api) │ ├── manage-app/ # 主应用模块 │ ├── manage-gateway/ # API 网关模块 │ ├── manage-sys/ # 系统管理模块 │ ├── manage-db/ # 数据库模块 │ ├── manage-common/ # 公共模块 │ ├── manage-audit/ # 审计模块 │ ├── manage-notify/ # 通知模块 │ ├── manage-file/ # 文件管理模块 │ ├── pom.xml # Maven 父 POM │ └── Dockerfile # 后端 Docker 配置 │ ├── gym-manage-web/ # 前端项目(原 novalon-manage-web) │ ├── src/ # 源代码 │ ├── public/ # 静态资源 │ ├── package.json # NPM 依赖 │ ├── vite.config.ts # Vite 配置 │ └── Dockerfile # 前端 Docker 配置 │ ├── gym-manage-uniapp/ # 移动端项目(新建) │ ├── src/ # 源代码 │ │ ├── pages/ # 页面 │ │ ├── components/ # 组件 │ │ ├── api/ # API 接口 │ │ ├── store/ # 状态管理 │ │ └── utils/ # 工具函数 │ ├── package.json # NPM 依赖 │ ├── manifest.json # UniApp 配置 │ └── pages.json # 页面配置 │ ├── e2e-tests/ # E2E 测试(独立目录) │ ├── e2e/ # 测试用例 │ ├── playwright.config.ts # Playwright 配置 │ ├── package.json # 测试依赖 │ └── (其他测试相关文件) │ ├── README.md # 项目说明(根目录) ├── docker-compose.yml # Docker 编排配置 ├── .gitignore # Git 忽略配置 └── Jenkinsfile # CI/CD 配置 ``` --- ## 3. 核心变更对照表 | 变更项 | 原值 | 新值 | |--------|------|------| | 后端项目名 | novalon-manage-api | gym-manage-api | | 前端项目名 | novalon-manage-web | gym-manage-web | | 移动端项目 | - | gym-manage-uniapp(新建) | | 测试目录 | - | e2e-tests(新建) | | Java 包名 | cn.novalon.manage | cn.novalon.gym.manage | | Maven groupId | cn.novalon.manage | cn.novalon.gym.manage | | Maven artifactId | novalon-manage-api | gym-manage-api | | NPM 项目名 | novalon-manage-web | gym-manage-web | --- ## 4. 分阶段实施计划 ### 4.1 阶段 1:后端项目重构(gym-manage-api) **目标**:将 `novalon-manage-api` 重构为 `gym-manage-api`,修改包名和所有引用 **步骤**: 1. **重命名项目目录** ```bash git mv novalon-manage-api gym-manage-api ``` 2. **修改 Maven 配置** - 更新父 POM: - `groupId`: `cn.novalon.manage` → `cn.novalon.gym.manage` - `artifactId`: `novalon-manage-api` → `gym-manage-api` - `name`: `Novalon Manage API` → `Gym Manage API` - `description`: 更新为健身房管理系统描述 - 更新所有子模块 POM: - `parent` 引用更新 - `groupId` 更新 - 模块间依赖引用更新 3. **修改 Java 包结构** - 重命名包目录:`cn/novalon/manage/` → `cn/novalon/gym/manage/` - 更新所有 Java 文件中的 `package` 声明 - 更新所有 Java 文件中的 `import` 语句 4. **修改配置文件** - `application.yml` 等配置文件中的应用名称 - 日志配置中的包名引用 5. **验证** ```bash cd gym-manage-api mvn clean compile mvn test ``` **验证清单**: - [ ] 后端项目目录已重命名为 `gym-manage-api` - [ ] 所有 `pom.xml` 中的 `groupId` 已更新为 `cn.novalon.gym.manage` - [ ] 所有 `pom.xml` 中的 `artifactId` 已更新 - [ ] 所有 Java 文件的 `package` 声明已更新 - [ ] 所有 Java 文件的 `import` 语句已更新 - [ ] 配置文件中的应用名称已更新 - [ ] `mvn clean compile` 执行成功 - [ ] 单元测试执行成功 **提交信息**: ``` refactor(backend): 重命名后端项目为 gym-manage-api,修改包名为 cn.novalon.gym.manage ``` --- ### 4.2 阶段 2:前端项目重构(gym-manage-web) **目标**:将 `novalon-manage-web` 重构为 `gym-manage-web`,更新项目名称和配置 **步骤**: 1. **重命名项目目录** ```bash git mv novalon-manage-web gym-manage-web ``` 2. **修改 NPM 配置** - 更新 `package.json`: - `name`: `novalon-manage-web` → `gym-manage-web` - `description`: 更新为健身房管理系统前端描述 3. **修改代码中的引用** - 更新页面标题、Logo 等品牌相关内容 - 检查 API 请求中的基础路径(如有硬编码) 4. **验证** ```bash cd gym-manage-web npm install npm run build ``` **验证清单**: - [ ] 前端项目目录已重命名为 `gym-manage-web` - [ ] `package.json` 中的 `name` 已更新 - [ ] 页面标题和品牌信息已更新 - [ ] `npm install` 执行成功 - [ ] `npm run build` 执行成功 **提交信息**: ``` refactor(frontend): 重命名前端项目为 gym-manage-web ``` --- ### 4.3 阶段 3:测试文件迁移(e2e-tests) **目标**:创建独立的 `e2e-tests` 目录,迁移所有 E2E 测试相关文件 **步骤**: 1. **创建测试目录结构** ```bash mkdir -p e2e-tests ``` 2. **迁移测试文件** ```bash # 迁移测试用例 git mv gym-manage-web/e2e e2e-tests/e2e # 迁移 Playwright 配置 git mv gym-manage-web/playwright e2e-tests/playwright # 迁移测试脚本 git mv gym-manage-web/scripts e2e-tests/scripts # 迁移测试配置文件 git mv gym-manage-web/playwright.config.ts e2e-tests/ git mv gym-manage-web/playwright-complete.config.ts e2e-tests/ git mv gym-manage-web/playwright-simple.config.ts e2e-tests/ ``` 3. **创建测试项目的 package.json** - 合并根目录和 web 项目的测试依赖 - 配置测试脚本 4. **调整测试配置** - 更新 `playwright.config.ts` 中的路径 - 更新测试脚本中的路径引用 5. **清理原项目** ```bash # 删除根目录的 package.json(测试依赖已迁移) git rm package.json # 清理 web 项目中的测试相关依赖 # (从 gym-manage-web/package.json 中移除 Playwright 相关依赖) ``` 6. **验证** ```bash cd e2e-tests npm install npm run test:e2e:smoke ``` **验证清单**: - [ ] `e2e-tests` 目录已创建 - [ ] 所有测试文件已迁移 - [ ] `playwright.config.ts` 路径已调整 - [ ] 测试脚本路径已调整 - [ ] 原项目中的测试文件已清理 - [ ] 根目录的 `package.json` 已删除 - [ ] `npm run test:e2e:smoke` 执行成功 **提交信息**: ``` refactor(test): 创建独立的 e2e-tests 目录,迁移测试文件 ``` --- ### 4.4 阶段 4:创建 UniApp 项目(gym-manage-uniapp) **目标**:创建基础的 UniApp 项目脚手架 **技术栈**: - 框架:UniApp + Vue 3 - 语言:TypeScript - 状态管理:Pinia - UI 组件库:uni-ui(官方组件库) - 网络请求:uni.request 封装 **步骤**: 1. **创建项目目录结构** ```bash mkdir -p gym-manage-uniapp/src/{pages,components,api,store,utils,static} ``` 2. **创建配置文件** - `package.json`:NPM 依赖配置 - `manifest.json`:应用配置 - `pages.json`:页面配置 - `tsconfig.json`:TypeScript 配置 - `vite.config.ts`:Vite 配置 3. **创建基础文件** - `src/main.ts`:应用入口 - `src/App.vue`:应用根组件 - `src/pages/index/index.vue`:首页占位符 - `src/pages/login/index.vue`:登录页占位符 - `src/api/request.ts`:请求封装 - `src/store/index.ts`:Pinia 配置 - `src/store/user.ts`:用户状态 4. **验证** ```bash cd gym-manage-uniapp npm install npm run dev:h5 ``` **验证清单**: - [ ] `gym-manage-uniapp` 目录已创建 - [ ] 基础目录结构已创建 - [ ] 配置文件已创建 - [ ] 基础页面占位符已创建 - [ ] `npm run dev:h5` 执行成功 **提交信息**: ``` feat(mobile): 创建 gym-manage-uniapp 项目脚手架 ``` --- ### 4.5 阶段 5:根目录整理与文档更新 **目标**:清理根目录,更新全局配置和文档 **步骤**: 1. **更新全局配置** - 更新 `docker-compose.yml`: - 服务名称更新 - 卷挂载路径更新 - 环境变量更新 - 更新 `Jenkinsfile`: - 项目路径更新 - 构建命令更新 - 更新 `.gitignore`(如需要) 2. **更新文档** - 更新 `README.md`: - 项目名称:健身房管理系统 - 项目描述 - 目录结构说明 - 快速开始指南 - 技术栈说明 3. **清理临时文件** - 删除不再需要的临时文件 - 确保根目录只保留全局性文件 4. **最终验证** ```bash # Docker Compose 验证 docker-compose down -v docker-compose up -d docker-compose ps docker-compose logs # 检查服务通信 curl http://localhost:8084/actuator/health curl http://localhost:3001 ``` **验证清单**: - [ ] `docker-compose.yml` 已更新 - [ ] `Jenkinsfile` 已更新 - [ ] `README.md` 已更新 - [ ] 根目录整洁,无冗余文件 - [ ] Docker Compose 启动成功 - [ ] 服务间通信正常 **提交信息**: ``` docs: 更新项目文档和全局配置 ``` --- ## 5. 关键技术细节 ### 5.1 Maven 模块依赖关系 ``` manage-app (主应用) ├── depends on: manage-sys, manage-db, manage-common, manage-audit, manage-notify, manage-file └── 可执行 JAR manage-gateway (网关) ├── depends on: manage-common └── 可执行 JAR manage-sys (系统模块) ├── depends on: manage-common, manage-db └── 普通 JAR manage-db (数据库模块) ├── depends on: manage-common └── 普通 JAR manage-common (公共模块) └── 普通 JAR(基础依赖) manage-audit, manage-notify, manage-file ├── depends on: manage-common └── 普通 JAR ``` ### 5.2 Spring Boot 配置文件更新 ```yaml # application.yml spring: application: name: gym-manage-api # 原 novalon-manage-api # 日志配置 logging: level: cn.novalon.gym.manage: DEBUG # 原 cn.novalon.manage ``` ### 5.3 Playwright 配置调整 **原配置**(在 `gym-manage-web/playwright.config.ts`): ```typescript testDir: './e2e', // 相对于 web 项目根目录 ``` **新配置**(在 `e2e-tests/playwright.config.ts`): ```typescript testDir: './e2e', // 相对于 e2e-tests 根目录 baseURL: 'http://localhost:3001', // 前端服务地址 ``` ### 5.4 UniApp 项目配置 **manifest.json**: ```json { "name": "健身房管理系统", "appid": "", "description": "健身房管理移动端应用", "versionName": "1.0.0", "versionCode": "100" } ``` **pages.json**: ```json { "pages": [ { "path": "pages/index/index", "style": { "navigationBarTitleText": "首页" } }, { "path": "pages/login/index", "style": { "navigationBarTitleText": "登录" } } ], "globalStyle": { "navigationBarTextStyle": "black", "navigationBarTitleText": "健身房管理", "navigationBarBackgroundColor": "#F8F8F8", "backgroundColor": "#F8F8F8" } } ``` --- ## 6. 风险评估与应对措施 ### 6.1 风险 1:包名修改导致编译失败 **风险等级**:🔴 高 **应对措施**: - 使用 IDE 的重构功能(推荐 IntelliJ IDEA 的 Rename Package) - 使用全局搜索确保所有引用都已更新 - 编译前先执行 `mvn clean` 清理旧编译产物 - 每个模块单独编译验证 ### 6.2 风险 2:测试迁移后路径引用错误 **风险等级**:🟡 中 **应对措施**: - 迁移后立即运行冒烟测试验证 - 使用相对路径而非绝对路径 - 保持测试目录结构不变,只改变父目录 ### 6.3 风险 3:Docker Compose 配置失效 **风险等级**:🟡 中 **应对措施**: - 更新 `docker-compose.yml` 中的服务名称 - 更新所有卷挂载路径 - 更新环境变量配置 ### 6.4 风险 4:Git 历史丢失 **风险等级**:🟢 低 **应对措施**: - 使用 `git mv` 命令重命名文件和目录 - 提交前检查 `git status` 确保是重命名而非删除+新增 - 使用 `.gitattributes` 确保文件编码一致 ### 6.5 风险 5:IDE 缓存问题 **风险等级**:🟢 低 **应对措施**: - 重构后清理 IDE 缓存 - 重新导入项目 - 重建索引 --- ## 7. 回滚策略 ### 7.1 阶段级回滚 如果某个阶段失败,可以回滚到上一个成功的阶段: ```bash # 查看提交历史 git log --oneline # 回滚到指定阶段 git reset --hard # 或者使用 revert(保留回滚记录) git revert ``` ### 7.2 完全回滚 如果需要完全回滚到重构前的状态: ```bash # 找到重构前的最后一个提交 git log --oneline --grep="refactor" # 回滚到该提交 git reset --hard # 强制推送到远程(谨慎使用) git push origin master --force ``` --- ## 8. 成功标准 - [ ] 所有项目目录和文件正确重命名 - [ ] 所有代码引用正确更新 - [ ] 后端项目编译和测试通过 - [ ] 前端项目构建成功 - [ ] E2E 测试运行正常 - [ ] UniApp 项目可正常启动 - [ ] Docker Compose 服务启动正常 - [ ] 文档更新完整 - [ ] Git 历史保留完整 --- ## 9. 附录 ### 9.1 常用命令速查 ```bash # 后端编译和测试 cd gym-manage-api mvn clean compile mvn test # 前端构建 cd gym-manage-web npm install npm run build # E2E 测试 cd e2e-tests npm install npm run test:e2e:smoke # UniApp 开发 cd gym-manage-uniapp npm install npm run dev:h5 # Docker Compose docker-compose down -v docker-compose up -d docker-compose ps docker-compose logs # Git 操作 git status git log --oneline git mv git commit -m "message" ``` ### 9.2 文件批量替换命令 ```bash # 替换包名 find . -type f -name "*.java" -exec sed -i '' 's/cn\.novalon\.manage/cn.novalon.gym.manage/g' {} + # 替换项目名 find . -type f \( -name "*.xml" -o -name "*.yml" -o -name "*.json" \) -exec sed -i '' 's/novalon-manage-api/gym-manage-api/g' {} + ``` --- **文档结束**