# 健身房管理系统基础设施重构设计规格

**文档版本**：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 <commit-hash>

# 或者使用 revert（保留回滚记录）
git revert <commit-hash>
```

### 7.2 完全回滚

如果需要完全回滚到重构前的状态：

```bash
# 找到重构前的最后一个提交
git log --oneline --grep="refactor"

# 回滚到该提交
git reset --hard <commit-hash>

# 强制推送到远程（谨慎使用）
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 <old> <new>
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' {} +
```

---

**文档结束**
