# 后台管理系统文档

**项目名称：** 瑞莱医疗后台管理系统  
**技术架构：** ThinkPHP 5.0 + Layui + jQuery  
**数据库：** MySQL  
**文档版本：** v2.0  
**创建日期：** 2025年1月28日  
**最后更新：** 2025年1月29日（已完成逻辑彻底分离）

> **✅ 分离状态：** 两个后台模块已实现**逻辑彻底分离**（方案一），可独立维护，互不影响。
> - **admin 模块**：早熟预测后台，完全独立实现
> - **adminghd 模块**：GHD预测后台，完全独立实现
> - 两个模块不再依赖 `common` 模块的业务基类

---

## 一、系统概述

### 1.1 系统简介

本系统为两个医疗小程序提供统一的后台管理服务：

1. **女童成长发育早熟预测模型后台** (`admin` 模块)
   - 对应小程序：瑞莱医疗小程序
   - 小程序AppID: `wx0847525a15342a46`
   - 访问路径：`/admin/`

2. **生长激素缺乏预测模型后台** (`adminghd` 模块)
   - 对应小程序：生长激素缺乏（GHD）预测模型小程序
   - 小程序AppID: `wxa75a76964ae7ce73`
   - 访问路径：`/adminghd/`

### 1.2 系统架构

```
┌─────────────────────────────────────────┐
│         后台管理系统                      │
├─────────────────────────────────────────┤
│  admin模块          adminghd模块         │
│  (早熟预测)         (GHD预测)            │
├─────────────────────────────────────────┤
│  共同功能：                               │
│  - 登录认证                               │
│  - 菜单管理                               │
│  - 资讯管理                               │
│  - 用户管理                               │
│  - 计算记录管理                           │
└─────────────────────────────────────────┘
```

---

## 二、系统架构

### 2.1 目录结构

```
/www/wwwroot/code/
├── application/                    # 应用目录
│   ├── admin/                     # 早熟预测后台模块
│   │   ├── controller/            # 控制器
│   │   │   ├── Login.php         # 登录控制器
│   │   │   ├── Menu.php          # 菜单管理
│   │   │   ├── Wechatset.php     # 资讯管理
│   │   │   ├── Wechatinfro.php   # 用户和记录管理
│   │   │   └── Dashboard.php     # 仪表盘
│   │   ├── common/               # 公共类
│   │   │   └── Base.php          # 基础控制器（登录验证）
│   │   └── view/                 # 视图模板
│   │       ├── login/            # 登录相关视图
│   │       │   ├── login.html    # 登录页
│   │       │   └── nav.html      # 主框架页
│   │       ├── wechatset/        # 资讯管理视图
│   │       └── wechatinfro/     # 用户和记录视图
│   ├── adminghd/                 # GHD预测后台模块
│   │   ├── controller/           # 控制器（结构同admin）
│   │   ├── common/               # 公共类
│   │   └── view/                 # 视图模板
│   ├── app/                      # 小程序API模块
│   │   └── controller/
│   │       ├── Ruilaiwechat.php  # 瑞莱小程序API
│   │       └── Ghdwechat.php     # GHD小程序API
│   └── common/                   # 公共模块
│       ├── config/               # 配置类
│       │   └── BusinessConfig.php # 业务配置
│       └── controller/           # 公共控制器
│           ├── WechatsetBase.php # 资讯管理基类
│           ├── WechatinfroBase.php # 用户管理基类
│           └── DashboardBase.php # 仪表盘基类
├── public/                        # 公共访问目录
│   ├── static/                   # 静态资源
│   │   ├── admin/                # admin模块静态资源
│   │   │   ├── css/              # 样式文件
│   │   │   ├── js/               # JavaScript文件
│   │   │   └── layui/            # Layui框架
│   │   └── adminghd/             # adminghd模块静态资源
│   └── index.php                 # 入口文件
└── thinkphp/                     # ThinkPHP框架核心
```

### 2.2 技术栈

- **后端框架：** ThinkPHP 5.0
- **前端框架：** Layui 2.x
- **JavaScript库：** jQuery
- **数据库：** MySQL
- **会话管理：** ThinkPHP Session

---

## 三、模块说明

### 3.1 admin 模块（早熟预测后台）

#### 3.1.1 访问路径
- 登录页：`/admin/login`
- 主框架：`/admin/login/index`（登录后自动跳转）

#### 3.1.2 Session配置
- 用户ID键名：`admin_user_id`
- 登录时间键名：`admin_user_login_time`
- 超时时间：3600秒（1小时）

#### 3.1.3 数据表映射
| 业务表 | 数据库表名 |
|--------|-----------|
| 用户表 | `wechat_user` |
| 资讯表 | `wechat_real_time_info` |
| 计算记录表 | `wechat_calculate_record` |
| 菜单表 | `menu` |
| 管理员表 | `user` |

#### 3.1.4 静态资源路径
- CSS：`/static/admin/css/`
- JS：`/static/admin/js/`
- Layui：`/static/admin/layui/`

### 3.2 adminghd 模块（GHD预测后台）

#### 3.2.1 访问路径
- 登录页：`/adminghd/login`
- 主框架：`/adminghd/login/index`（登录后自动跳转）

#### 3.2.2 Session配置
- 用户ID键名：`adminghd_user_id`
- 登录时间键名：`adminghd_user_login_time`
- 超时时间：3600秒（1小时）

#### 3.2.3 数据表映射
| 业务表 | 数据库表名 |
|--------|-----------|
| 用户表 | `ghd_wechat_user` |
| 资讯表 | `wechat_real_time_info` |
| 计算记录表 | `wechat_calculate_record` |
| 菜单表 | `menu` |
| 管理员表 | `user` |

#### 3.2.4 静态资源路径
- CSS：`/static/adminghd/css/`
- JS：`/static/adminghd/js/`
- Layui：`/static/adminghd/layui/`

---

## 四、功能模块

### 4.1 登录认证模块

#### 4.1.1 登录功能

**控制器：** `Login.php`

**登录流程：**
1. 用户访问登录页 `/admin/login` 或 `/adminghd/login`
2. 输入用户名（手机号）和密码
3. 系统验证用户信息：
   - 查询 `user` 表
   - 验证条件：`phone` = 用户名，`password` = MD5(密码)，`status` = 1，`type` = 1
4. 登录成功：
   - 设置Session：`admin_user_id` 或 `adminghd_user_id`
   - 设置登录时间：`admin_user_login_time` 或 `adminghd_user_login_time`（当前时间 + 3600秒）
   - 返回JSON：`{'status':1, 'msg':'登录成功', 'token':1}`
5. 跳转到主框架页面

**登录验证：**
- 所有需要登录的页面继承 `Base` 类
- `Base::_initialize()` 方法自动检查Session
- 未登录或超时：跳转到登录页

#### 4.1.2 退出功能

**接口：** `/admin/Login/logout` 或 `/adminghd/Login/logout`

**功能：**
- 清除所有Session数据
- 返回JSON：`{'status':1, 'msg':'退出成功'}`
- 前端跳转到登录页

### 4.2 菜单管理模块

#### 4.2.1 菜单结构

**数据表：** `menu`

**表结构：**
- `id`：菜单ID（主键）
- `pid`：父菜单ID（空或0表示一级菜单）
- `menu_name`：菜单名称
- `url`：菜单链接
- `seq_on`：排序序号
- `menu_icon`：菜单图标
- `create_time`：创建时间

**菜单层级：**
- 一级菜单：`pid` 为空或0
- 二级菜单：`pid` 指向一级菜单的 `id`

#### 4.2.2 获取菜单列表

**接口：** `/admin/Menu/getMenuList` 或 `/adminghd/Menu/getMenuList`

**返回格式：**
```json
{
  "status": 1,
  "msg": "获取数据成功！！",
  "data": [
    {
      "id": "xxx",
      "pid": "",
      "menu_name": "小程序设置",
      "url": "",
      "seq_on": 1,
      "type": 1,
      "children": [
        {
          "id": "yyy",
          "pid": "xxx",
          "menu_name": "首页资讯列表",
          "url": "/admin/Wechatset/wechatRealTimeInfo",
          "type": 2
        }
      ]
    }
  ]
}
```

#### 4.2.3 菜单管理功能

- **添加菜单：** `/admin/Menu/doaddMenu`
- **修改菜单：** `/admin/Menu/doupdMenu`
- **删除菜单：** `/admin/Menu/delMenu`
- **获取菜单详情：** `/admin/Menu/updMenu`

### 4.3 用户信息模块

#### 4.3.1 获取当前用户信息

**接口：** `/admin/Menu/getUserInfor` 或 `/adminghd/Menu/getUserInfor`

**返回格式：**
```json
{
  "status": 1,
  "msg": "查询成功",
  "infro": {
    "user_name": "管理员",
    "user_head": "/static/admin/img/upload.png"
  }
}
```

#### 4.3.2 小程序注册用户管理

**控制器：** `Wechatinfro.php`

**功能列表：**
- **用户列表：** `/admin/Wechatinfro/wechatUserList`
- **获取用户列表：** `/admin/Wechatinfro/getWechatUserList`

**数据表：**
- admin模块：`wechat_user`
- adminghd模块：`ghd_wechat_user`

**用户列表字段：**
- `uid`：用户ID
- `nickname`：用户昵称
- `headimg`：头像
- `create_time`：注册时间

**搜索功能：**
- 支持按昵称模糊搜索

### 4.4 资讯管理模块

#### 4.4.1 资讯列表

**控制器：** `Wechatset.php`

**功能列表：**
- **资讯列表页：** `/admin/Wechatset/wechatRealTimeInfo`
- **获取资讯列表：** `/admin/Wechatset/getWechatRealTimeInfoList`
- **添加资讯页：** `/admin/Wechatset/wechatRealTimeInfoAdd`
- **编辑资讯页：** `/admin/Wechatset/wechatRealTimeInfoUpdate`
- **保存资讯：** `/admin/Wechatset/saveWechatRealTimeInfo`
- **删除资讯：** `/admin/Wechatset/delWechatRealTimeInfo`
- **获取资讯详情：** `/admin/Wechatset/getRealTimeInfoDetail`

**数据表：** `wechat_real_time_info`（两个模块共用）

**资讯字段：**
- `id`：资讯ID
- `title_plain`：标题
- `thumbnail`：缩略图
- `excerpt_plain`：简介
- `url`：跳转链接
- `create_time`：创建时间

**搜索功能：**
- 支持按标题模糊搜索

#### 4.4.2 资讯管理流程

1. **添加资讯：**
   - 填写标题、上传图片、填写简介、填写跳转链接
   - 系统自动生成ID（MD5(时间戳+随机数)）
   - 保存到数据库

2. **编辑资讯：**
   - 根据ID获取资讯详情
   - 修改后保存

3. **删除资讯：**
   - 根据ID删除记录

### 4.5 计算记录管理模块

#### 4.5.1 计算记录列表

**控制器：** `Wechatinfro.php`

**功能列表：**
- **记录列表页：** `/admin/Wechatinfro/wechatRecordList`
- **获取记录列表：** `/admin/Wechatinfro/getWechatRecordList`

**数据表：** `wechat_calculate_record`（两个模块共用）

**记录字段：**
- `id`：记录ID
- `name`：姓名
- `age`：年龄
- `height`：身高
- `bone_age`：骨龄
- `father_height`：父亲身高
- `mother_height`：母亲身高
- `IGF`：IGF-1值（GHD）或IGFBP-3值（早熟）
- `LH`：LH值（早熟）
- `uterus_thickness`：子宫厚度（早熟）
- `calculate_resutlt`：计算结果
- `create_time`：创建时间

**搜索功能：**
- 支持按姓名模糊搜索

### 4.6 仪表盘模块（Dashboard）

#### 4.6.1 统计概览

**控制器：** `Dashboard.php`

**功能列表：**
- **仪表盘页面：** `/admin/Dashboard/index`
- **获取统计数据：** `/admin/Dashboard/getStatistics`

**统计数据：**
- 注册用户数
- 首页资讯数量
- 最近一次计算时间
- 今日新增用户数
- 总计算次数

---

## 五、数据库设计

### 5.1 核心数据表

#### 5.1.1 管理员表（user）

**说明：** 后台管理员账户表，两个模块共用

**字段：**
- `id`：管理员ID（主键）
- `user_name`：管理员姓名
- `phone`：手机号（登录用户名）
- `password`：密码（MD5加密）
- `user_head`：头像
- `status`：状态（1=启用，0=禁用）
- `type`：类型（1=管理员）

#### 5.1.2 菜单表（menu）

**说明：** 后台菜单配置表，两个模块共用

**字段：**
- `id`：菜单ID（主键，MD5生成）
- `pid`：父菜单ID（空或0=一级菜单）
- `menu_name`：菜单名称
- `url`：菜单链接
- `seq_on`：排序序号
- `menu_icon`：菜单图标
- `create_time`：创建时间

#### 5.1.3 小程序用户表

**说明：** 小程序注册用户表，两个模块使用不同的表

**admin模块：** `wechat_user`  
**adminghd模块：** `ghd_wechat_user`

**字段：**
- `uid`：用户ID（主键）
- `openid`：微信OpenID
- `nickname`：用户昵称
- `headimg`：头像
- `create_time`：注册时间

#### 5.1.4 资讯表（wechat_real_time_info）

**说明：** 首页资讯表，两个模块共用

**字段：**
- `id`：资讯ID（主键，MD5生成）
- `title_plain`：标题
- `thumbnail`：缩略图URL
- `excerpt_plain`：简介
- `url`：跳转链接
- `create_time`：创建时间

#### 5.1.5 计算记录表（wechat_calculate_record）

**说明：** 预测计算记录表，两个模块共用

**字段：**
- `id`：记录ID（主键，MD5生成）
- `uid`：用户ID
- `name`：姓名
- `age`：年龄
- `height`：身高（cm）
- `bone_age`：骨龄（年）
- `father_height`：父亲身高（cm）
- `mother_height`：母亲身高（cm）
- `IGF`：IGF-1值（GHD）或IGFBP-3值（早熟）
- `LH`：LH值（早熟预测）
- `uterus_thickness`：子宫厚度（早熟预测）
- `calculate_resutlt`：计算结果（JSON格式）
- `create_time`：创建时间

---

## 六、前端架构

### 6.1 主框架结构

**文件：** `application/admin/view/login/nav.html` 或 `application/adminghd/view/login/nav.html`

**布局：**
- 左侧导航栏：菜单列表
- 顶部栏：面包屑导航 + 用户信息 + 退出按钮
- 主内容区：iframe加载功能页面

### 6.2 导航菜单渲染

**文件：** `public/static/admin/js/nav.js` 或 `public/static/adminghd/js/nav.js`

**功能：**
1. 页面加载时调用 `/admin/Menu/getMenuList` 获取菜单数据
2. 将菜单数据渲染为左侧导航栏
3. 支持一级和二级菜单结构
4. 点击菜单项，在iframe中加载对应页面

### 6.3 样式框架

**CSS框架：** Layui 2.x

**主要样式文件：**
- `nav.css`：主框架样式
- `login.css`：登录页样式
- `index.css`：列表页样式

---

## 七、API接口

### 7.1 登录相关

| 接口 | 方法 | 说明 |
|------|------|------|
| `/admin/Login/index` | GET | 登录页 |
| `/admin/Login/login` | POST | 登录验证 |
| `/admin/Login/logout` | POST | 退出登录 |
| `/admin/Login/logoutJump` | GET | 超时跳转页 |

### 7.2 菜单相关

| 接口 | 方法 | 说明 |
|------|------|------|
| `/admin/Menu/getMenuList` | POST | 获取菜单列表 |
| `/admin/Menu/getUserInfor` | POST | 获取当前用户信息 |
| `/admin/Menu/doaddMenu` | POST | 添加菜单 |
| `/admin/Menu/doupdMenu` | POST | 修改菜单 |
| `/admin/Menu/delMenu` | POST | 删除菜单 |

### 7.3 用户管理

| 接口 | 方法 | 说明 |
|------|------|------|
| `/admin/Wechatinfro/wechatUserList` | GET | 用户列表页 |
| `/admin/Wechatinfro/getWechatUserList` | POST | 获取用户列表 |

### 7.4 资讯管理

| 接口 | 方法 | 说明 |
|------|------|------|
| `/admin/Wechatset/wechatRealTimeInfo` | GET | 资讯列表页 |
| `/admin/Wechatset/getWechatRealTimeInfoList` | POST | 获取资讯列表 |
| `/admin/Wechatset/wechatRealTimeInfoAdd` | GET | 添加资讯页 |
| `/admin/Wechatset/wechatRealTimeInfoUpdate` | GET | 编辑资讯页 |
| `/admin/Wechatset/saveWechatRealTimeInfo` | POST | 保存资讯 |
| `/admin/Wechatset/delWechatRealTimeInfo` | POST | 删除资讯 |
| `/admin/Wechatset/getRealTimeInfoDetail` | POST | 获取资讯详情 |

### 7.5 计算记录

| 接口 | 方法 | 说明 |
|------|------|------|
| `/admin/Wechatinfro/wechatRecordList` | GET | 记录列表页 |
| `/admin/Wechatinfro/getWechatRecordList` | POST | 获取记录列表 |

### 7.6 仪表盘

| 接口 | 方法 | 说明 |
|------|------|------|
| `/admin/Dashboard/index` | GET | 仪表盘页面 |
| `/admin/Dashboard/getStatistics` | POST | 获取统计数据 |

---

## 八、安全机制

### 8.1 登录验证

- 所有需要登录的控制器继承 `Base` 类
- `Base::_initialize()` 自动检查Session
- 未登录或超时自动跳转到登录页

### 8.2 密码加密

- 密码使用MD5加密存储
- 登录时对输入密码进行MD5加密后比对

### 8.3 Session管理

- 登录成功设置Session，有效期1小时
- 每次请求检查Session是否过期
- 退出登录清除所有Session

### 8.4 权限控制

- 当前版本未实现细粒度权限控制
- 所有登录用户拥有相同权限
- 预留权限控制接口（代码中已注释）

---

## 九、部署说明

### 9.1 环境要求

- PHP >= 5.6
- MySQL >= 5.6
- Apache/Nginx Web服务器
- ThinkPHP 5.0框架

### 9.2 配置说明

#### 9.2.1 数据库配置

**文件：** `application/database.php`

```php
return [
    'type'            => 'mysql',
    'hostname'        => '127.0.0.1',
    'database'        => 'ruilai',
    'username'        => 'rootrui',
    'password'        => 'X2)jB+k%YH.p',
    'charset'         => 'utf8',
    'prefix'          => 't_sys_',
];
```

#### 9.2.2 路由配置

**文件：** `application/route.php`

默认使用ThinkPHP的路由规则，URL格式：
- `/模块/控制器/方法`

例如：
- `/admin/Login/index` → `application/admin/controller/Login.php::index()`

### 9.3 静态资源

静态资源存放在 `public/static/` 目录下，通过Web服务器直接访问。

**访问路径：**
- `/static/admin/css/nav.css`
- `/static/adminghd/js/nav.js`

---

## 十、常见问题

### 10.1 登录问题

**问题：** 登录后立即跳转到登录页

**原因：** Session未正确设置或Base类验证失败

**解决：**
1. 检查Session配置
2. 检查Base类的Session键名是否正确
3. 检查数据库用户表数据

### 10.2 菜单不显示

**问题：** 左侧导航栏菜单不显示

**原因：** 
1. 菜单数据未正确返回
2. JavaScript渲染错误
3. 菜单表数据为空

**解决：**
1. 检查浏览器控制台错误
2. 检查 `/admin/Menu/getMenuList` 接口返回
3. 检查 `menu` 表是否有数据

### 10.3 数据表不存在

**问题：** 提示数据表不存在

**原因：** 数据库表前缀配置错误

**解决：**
1. 检查 `application/database.php` 中的 `prefix` 配置
2. 确认数据库表名是否正确（包含前缀）

---

## 十一、开发规范

### 11.1 代码规范

- 遵循PSR-2编码规范
- 控制器类名首字母大写
- 方法名使用驼峰命名
- 注释使用PHPDoc格式

### 11.2 命名规范

- **控制器：** 大驼峰，如 `Wechatset.php`
- **方法：** 小驼峰，如 `getWechatUserList()`
- **数据表：** 小写下划线，如 `wechat_user`
- **Session键：** 小写下划线，如 `admin_user_id`

### 11.3 文件组织

- 控制器放在 `controller/` 目录
- 视图放在 `view/` 目录
- 静态资源放在 `public/static/` 目录
- 公共类放在 `common/` 目录

---

## 十二、后续优化建议

### 12.1 代码优化

1. **统一公共逻辑：** 将两个模块的公共代码提取到 `common` 模块
2. **配置统一管理：** 使用配置文件管理业务类型和表映射
3. **错误处理：** 统一异常处理和错误返回格式

### 12.2 功能增强

1. **权限管理：** 实现基于角色的权限控制（RBAC）
2. **操作日志：** 记录管理员操作日志
3. **数据统计：** 增加更详细的数据统计和报表功能
4. **批量操作：** 支持批量删除、批量导出等功能

### 12.3 性能优化

1. **缓存机制：** 菜单数据、统计数据使用缓存
2. **数据库优化：** 添加索引，优化查询语句
3. **前端优化：** 压缩静态资源，使用CDN

---

## 十三、后台模块彻底分离维护方案

两个后台（admin 早熟预测、adminghd GHD 预测）可以做到**彻底分离维护**，互不影响。根据目标不同，有两种做法。

### 13.1 分离状态

**✅ 已完成逻辑彻底分离（方案一）**

| 模块 | 状态 | 说明 |
|------|------|------|
| **admin 模块** | ✅ 已独立 | 所有控制器继承 `app\admin\common\Base`，不再依赖 common 模块 |
| **adminghd 模块** | ✅ 已独立 | 所有控制器继承 `app\adminghd\common\Base`，不再依赖 common 模块 |
| **Dashboard** | ✅ 已独立 | 两个模块的 `Dashboard` 控制器各自实现 `getStatistics` 方法，使用固定的表名 |
| **数据库** | 共用 | 同一库 `ruilai`，同一前缀 `t_sys_`；部分表共用（menu、wechat_real_time_info、wechat_calculate_record），用户表不同（wechat_user / ghd_wechat_user） |
| **入口与框架** | 共用 | 同一 `public/index.php`、同一 ThinkPHP 应用目录 |

**已解除的耦合：**
- ✅ `Dashboard` 不再继承 `DashboardBase`
- ✅ 表名和 Session 键已硬编码到各自控制器中
- ✅ 两个模块可独立修改，互不影响

---

### 13.2 方案一：同仓库内逻辑彻底分离（✅ 已采用）

**目标**：同一套代码、同一部署，但 admin 与 adminghd 在代码上**完全独立**，改一个模块不会牵动另一个，也不依赖 common 里的业务基类。

**实施状态：** ✅ **已完成**

**已完成的修改：**

1. **✅ 解除 Dashboard 对 common 的依赖**
   - `application/admin/controller/Dashboard.php` 已改为继承 `\app\admin\common\Base`，不再继承 `DashboardBase`。
   - `getStatistics` 方法已独立实现，使用固定的表名 `wechat_user`、`wechat_real_time_info`、`wechat_calculate_record`。
   - `application/adminghd/controller/Dashboard.php` 已改为继承 `\app\adminghd\common\Base`，使用固定的表名 `ghd_wechat_user`、`wechat_real_time_info`、`wechat_calculate_record`。

2. **✅ 代码独立性验证**
   - 两个模块的控制器已完全独立，不再依赖 `app\common\controller\*Base` 和 `BusinessConfig`。
   - 表名和 Session 键已硬编码到各自控制器中。

3. **✅ common 模块保留**
   - `common` 模块中的基类（`DashboardBase`、`WechatinfroBase`、`WechatsetBase`）已保留，但不再被使用。
   - 可作为参考或未来新后台的模板，但不影响现有两个模块的独立性。

**优点**：✅ 部署不变、数据库不变，只改一处不影响另一处，适合继续同仓库、同服务器维护。  
**维护约定**：两个模块独立维护，如需同步功能，需分别在两个模块中实现。建议在代码注释中标注需要同步的功能点。

---

### 13.3 方案二：拆成两个独立项目（物理分离）

**目标**：两套独立代码库、可独立部署、独立发版，甚至不同服务器、不同数据库。

**思路**：  
- 以当前代码为基准，复制出两份项目：一份只保留 admin 相关（及 app、index 等必要模块），一份只保留 adminghd 相关。  
- 每份项目有独立 `application`、独立入口（可共用同一 `public` 或各建各的）、独立配置与依赖。

**具体步骤**：

1. **项目 A（早熟预测后台）**
   - 新建目录如 `code-admin`，保留 ThinkPHP 框架、`public`、`application/database.php` 等。
   - 只保留 `application/admin`、`application/app`（瑞莱小程序 API）、`application/index` 等与早熟业务相关的模块；删除 `application/adminghd` 和 `application/common` 中业务相关部分。
   - 将原 admin 内对表名、Session 的写法固定为早熟业务（wechat_user、admin_user_id 等）。
   - 配置独立入口（如 `code-admin/public/index.php`）和独立域名或路径。

2. **项目 B（GHD 预测后台）**
   - 新建目录如 `code-adminghd`，同样保留框架与必要目录。
   - 只保留 `application/adminghd`、`application/app`（GHD 小程序 API）等；删除 `application/admin` 和 common 业务基类。
   - 表名、Session 固定为 GHD（ghd_wechat_user、adminghd_user_id 等）。
   - 配置独立入口与访问方式。

3. **数据库**
   - **选项甲**：仍用同一库，两项目连同一 `database.php`，仅模块不同、访问表不同。  
   - **选项乙**：分库（如 `ruilai` 与 `ruilai_ghd`），各项目独立 `database.php`，表结构可复制或迁移脚本分表。

4. **静态资源**
   - 各项目 `public/static` 下只保留本后台所需（如项目 A 只保留 `admin`，项目 B 只保留 `adminghd`），避免混用。

**优点**：版本、上线、回滚完全独立，技术栈升级可分批进行。  
**缺点**：两套代码、两套部署与运维；公共 bug 或需求要改两处，需通过复制或少量共享库（如 composer 私有包）来收敛。

---

### 13.4 选择建议

| 场景 | 建议 |
|------|------|
| 希望**少动部署、少动库**，只希望开发时互不干扰 | 采用 **方案一**（同仓库逻辑分离） |
| 需要**独立域名、独立服务器、独立发版节奏** | 采用 **方案二**（拆成两个项目） |
| 未来可能新增更多“类似后台”且希望复用一套基类 | 可保留 common 基类，仅把 admin、adminghd 改为不继承它们，实现“可选复用、默认分离” |

**实施完成日期：** 2025年1月29日  
**采用的方案：** 方案一（同仓库内逻辑彻底分离）  
**状态：** ✅ 已完成，两个模块已完全独立，可独立维护

---

## 附录

### A. 相关文档

- [数据库配置文档](./数据库配置.md)
- [生长激素缺乏预测模型项目需求文档](./生长激素缺乏预测模型项目需求文档.md)

### B. 联系方式

如有问题，请联系开发团队。

---

**文档生成时间：** 2025年1月28日  
**最后更新：** 2025年1月28日
