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

7.4 KiB

医生预约系统安装检查清单

文件创建检查

后端文件

  • server/app/common/model/doctor/Appointment.php (1,893 bytes)
  • server/app/adminapi/controller/doctor/AppointmentController.php (2,588 bytes)
  • server/app/adminapi/logic/doctor/AppointmentLogic.php (8,624 bytes)
  • server/app/adminapi/validate/doctor/AppointmentValidate.php (1,922 bytes)
  • server/app/adminapi/lists/doctor/AppointmentLists.php (1,163 bytes)
  • server/sql/doctor_appointment.sql (1,310 bytes)

前端文件

  • admin/src/api/doctor.ts (已更新)
  • admin/src/views/tcm/diagnosis/appointment.vue (新建)
  • admin/src/views/tcm/diagnosis/index.vue (已更新)

文档文件

  • server/APPOINTMENT_BACKEND_SETUP.md
  • admin/APPOINTMENT_SYSTEM.md
  • admin/APPOINTMENT_UI_UPDATE.md
  • admin/APPOINTMENT_IMPLEMENTATION_SUMMARY.md
  • APPOINTMENT_QUICK_START.md
  • APPOINTMENT_COMPLETE.md
  • INSTALLATION_CHECKLIST.md (本文件)

安装脚本

  • install_appointment_system.bat (Windows)
  • install_appointment_system.sh (Linux/Mac)
  • server/test_appointment_api.php (API测试脚本)

📋 安装步骤

步骤 1: 创建数据库表

# 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

验证:

SHOW TABLES LIKE 'la_doctor_appointment';
DESC la_doctor_appointment;

步骤 2: 清除缓存

cd server
php think clear

验证:

# 应该看到缓存清除成功的消息

步骤 3: 测试API接口

# 方法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"

预期结果:

{
  "code": 1,
  "msg": "success",
  "data": {
    "slots": [...]
  }
}

步骤 4: 创建测试数据

-- 创建医生排班
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());

验证:

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天
    • 时间段根据医生和日期加载
    • 可以选择时间段
    • 可以提交预约
    • 预约成功后有提示

🔍 验证检查

数据库检查

-- 检查表是否存在
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;

文件检查

# 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检查

# 测试获取可用时间段
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

解决方案:

cd server
php think clear

问题 2: 数据库表不存在

症状:

Table 'database.la_doctor_appointment' doesn't exist

解决方案:

mysql -u username -p database < server/sql/doctor_appointment.sql

问题 3: 没有可用时间段

症状: API返回空的slots数组

解决方案:

  1. 检查医生排班是否存在
  2. 检查排班状态是否为1(出诊)
  3. 检查日期和时段是否匹配
SELECT * FROM la_doctor_roster 
WHERE doctor_id = 1 
  AND date = '2026-03-04' 
  AND period = 'morning';

问题 4: 预约失败

症状: 创建预约时返回错误

可能原因:

  1. 时间段已被占用
  2. 号源已满
  3. 医生未排班
  4. 排班状态不是出诊

检查方法:

-- 检查已有预约
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';

📊 性能检查

数据库索引

-- 检查索引是否正确创建
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)

查询性能

-- 测试查询性能
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

祝你使用愉快!🎉