Files
zyt/INSTALLATION_CHECKLIST.md
T
2026-03-04 15:32:30 +08:00

330 lines
7.4 KiB
Markdown

# 医生预约系统安装检查清单
## ✅ 文件创建检查
### 后端文件
- [x] `server/app/common/model/doctor/Appointment.php` (1,893 bytes)
- [x] `server/app/adminapi/controller/doctor/AppointmentController.php` (2,588 bytes)
- [x] `server/app/adminapi/logic/doctor/AppointmentLogic.php` (8,624 bytes)
- [x] `server/app/adminapi/validate/doctor/AppointmentValidate.php` (1,922 bytes)
- [x] `server/app/adminapi/lists/doctor/AppointmentLists.php` (1,163 bytes)
- [x] `server/sql/doctor_appointment.sql` (1,310 bytes)
### 前端文件
- [x] `admin/src/api/doctor.ts` (已更新)
- [x] `admin/src/views/tcm/diagnosis/appointment.vue` (新建)
- [x] `admin/src/views/tcm/diagnosis/index.vue` (已更新)
### 文档文件
- [x] `server/APPOINTMENT_BACKEND_SETUP.md`
- [x] `admin/APPOINTMENT_SYSTEM.md`
- [x] `admin/APPOINTMENT_UI_UPDATE.md`
- [x] `admin/APPOINTMENT_IMPLEMENTATION_SUMMARY.md`
- [x] `APPOINTMENT_QUICK_START.md`
- [x] `APPOINTMENT_COMPLETE.md`
- [x] `INSTALLATION_CHECKLIST.md` (本文件)
### 安装脚本
- [x] `install_appointment_system.bat` (Windows)
- [x] `install_appointment_system.sh` (Linux/Mac)
- [x] `server/test_appointment_api.php` (API测试脚本)
## 📋 安装步骤
### 步骤 1: 创建数据库表 ⏳
```bash
# Windows (CMD)
mysql -u username -p database < server\sql\doctor_appointment.sql
# Linux/Mac
mysql -u username -p database < server/sql/doctor_appointment.sql
# 或使用phpMyAdmin导入 server/sql/doctor_appointment.sql
```
**验证:**
```sql
SHOW TABLES LIKE 'la_doctor_appointment';
DESC la_doctor_appointment;
```
### 步骤 2: 清除缓存 ⏳
```bash
cd server
php think clear
```
**验证:**
```bash
# 应该看到缓存清除成功的消息
```
### 步骤 3: 测试API接口 ⏳
```bash
# 方法1: 使用测试脚本
cd server
php test_appointment_api.php
# 方法2: 使用curl
curl "http://localhost/adminapi/doctor.appointment/availableSlots?doctor_id=1&appointment_date=2026-03-04&period=morning"
```
**预期结果:**
```json
{
"code": 1,
"msg": "success",
"data": {
"slots": [...]
}
}
```
### 步骤 4: 创建测试数据 ⏳
```sql
-- 创建医生排班
INSERT INTO `la_doctor_roster`
(`doctor_id`, `date`, `period`, `status`, `quota`, `max_patients`, `create_time`, `update_time`)
VALUES
(1, '2026-03-04', 'morning', 1, 10, 15, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()),
(1, '2026-03-04', 'afternoon', 1, 10, 15, UNIX_TIMESTAMP(), UNIX_TIMESTAMP());
```
**验证:**
```sql
SELECT * FROM la_doctor_roster WHERE doctor_id = 1 AND date = '2026-03-04';
```
### 步骤 5: 配置权限 ⏳
在后台权限管理中添加以下权限节点:
```
doctor.appointment/availableSlots
doctor.appointment/create
doctor.appointment/cancel
doctor.appointment/lists
doctor.appointment/detail
doctor.appointment/doctorAvailability
```
### 步骤 6: 测试前端功能 ⏳
1. 登录后台管理系统
2. 进入"中医诊断"页面
3. 点击任意患者的"挂号"按钮
4. 验证以下功能:
- [ ] 医生列表正确显示
- [ ] 日期选择器显示未来7天
- [ ] 时间段根据医生和日期加载
- [ ] 可以选择时间段
- [ ] 可以提交预约
- [ ] 预约成功后有提示
## 🔍 验证检查
### 数据库检查
```sql
-- 检查表是否存在
SHOW TABLES LIKE 'la_doctor_appointment';
-- 检查表结构
DESC la_doctor_appointment;
-- 检查索引
SHOW INDEX FROM la_doctor_appointment;
-- 检查排班数据
SELECT COUNT(*) FROM la_doctor_roster WHERE status = 1;
```
### 文件检查
```bash
# Windows
dir server\app\adminapi\controller\doctor\AppointmentController.php
dir server\app\adminapi\logic\doctor\AppointmentLogic.php
dir server\app\adminapi\validate\doctor\AppointmentValidate.php
dir server\app\adminapi\lists\doctor\AppointmentLists.php
dir server\app\common\model\doctor\Appointment.php
# Linux/Mac
ls -la server/app/adminapi/controller/doctor/AppointmentController.php
ls -la server/app/adminapi/logic/doctor/AppointmentLogic.php
ls -la server/app/adminapi/validate/doctor/AppointmentValidate.php
ls -la server/app/adminapi/lists/doctor/AppointmentLists.php
ls -la server/app/common/model/doctor/Appointment.php
```
### API检查
```bash
# 测试获取可用时间段
curl -X GET "http://localhost/adminapi/doctor.appointment/availableSlots?doctor_id=1&appointment_date=2026-03-04&period=morning"
# 测试创建预约
curl -X POST "http://localhost/adminapi/doctor.appointment/create" \
-H "Content-Type: application/json" \
-d '{
"patient_id": 1,
"doctor_id": 1,
"appointment_date": "2026-03-04",
"period": "morning",
"appointment_time": "09:00",
"appointment_type": "video"
}'
```
## ⚠️ 常见问题
### 问题 1: 控制器不存在
**症状:**
```
控制器不存在: app\adminapi\controller\doctor\AppointmentController
```
**解决方案:**
```bash
cd server
php think clear
```
### 问题 2: 数据库表不存在
**症状:**
```
Table 'database.la_doctor_appointment' doesn't exist
```
**解决方案:**
```bash
mysql -u username -p database < server/sql/doctor_appointment.sql
```
### 问题 3: 没有可用时间段
**症状:**
API返回空的slots数组
**解决方案:**
1. 检查医生排班是否存在
2. 检查排班状态是否为1(出诊)
3. 检查日期和时段是否匹配
```sql
SELECT * FROM la_doctor_roster
WHERE doctor_id = 1
AND date = '2026-03-04'
AND period = 'morning';
```
### 问题 4: 预约失败
**症状:**
创建预约时返回错误
**可能原因:**
1. 时间段已被占用
2. 号源已满
3. 医生未排班
4. 排班状态不是出诊
**检查方法:**
```sql
-- 检查已有预约
SELECT * FROM la_doctor_appointment
WHERE doctor_id = 1
AND appointment_date = '2026-03-04'
AND status = 1;
-- 检查排班信息
SELECT * FROM la_doctor_roster
WHERE doctor_id = 1
AND date = '2026-03-04';
```
## 📊 性能检查
### 数据库索引
```sql
-- 检查索引是否正确创建
SHOW INDEX FROM la_doctor_appointment;
-- 应该看到以下索引:
-- PRIMARY (id)
-- unique_appointment (doctor_id, appointment_date, appointment_time, status)
-- idx_patient (patient_id)
-- idx_doctor_date (doctor_id, appointment_date)
-- idx_roster (roster_id)
```
### 查询性能
```sql
-- 测试查询性能
EXPLAIN SELECT * FROM la_doctor_appointment
WHERE doctor_id = 1
AND appointment_date = '2026-03-04'
AND status = 1;
-- 应该使用 idx_doctor_date 索引
```
## 🎯 最终检查
完成以下所有项目后,系统即可投入使用:
- [ ] 数据库表创建成功
- [ ] 后端缓存已清除
- [ ] API接口测试通过
- [ ] 测试数据已创建
- [ ] 权限节点已配置
- [ ] 前端功能测试通过
- [ ] 文档已阅读
- [ ] 用户已培训
## 📞 技术支持
如遇到问题:
1. **查看日志**
- 后端日志: `server/runtime/log/`
- 浏览器控制台
2. **检查配置**
- 数据库连接: `server/config/database.php`
- 应用配置: `server/config/app.php`
3. **查看文档**
- `APPOINTMENT_QUICK_START.md` - 快速开始
- `server/APPOINTMENT_BACKEND_SETUP.md` - 后端详细说明
- `admin/APPOINTMENT_SYSTEM.md` - 系统设计
4. **测试工具**
- `server/test_appointment_api.php` - API测试脚本
- Postman/curl - 手动测试
## ✅ 完成标志
当你看到以下结果时,说明安装成功:
1. ✅ API返回正确的时间段数据
2. ✅ 可以成功创建预约
3. ✅ 前端界面正常显示
4. ✅ 可以完成完整的预约流程
---
**版本**: 1.0.0
**创建时间**: 2024-02-26
**最后更新**: 2024-02-26
祝你使用愉快!🎉