2.4 KiB
2.4 KiB
预约时段显示错误调试文档
问题描述
当医生只排了上午班(出诊),下午未排班时,预约页面仍然显示下午的时间段。
问题示例
- 医生1 在 2026-03-06
- 上午: 出诊(20) ✓
- 下午: 未排班 ✗
- 但预约页面显示:
- 上午时段: 09:00-11:45 ✓ 正确
- 下午时段: 14:00-17:45 ✗ 不应该显示
可能的原因
原因1: 数据库中有多条记录
数据库中可能存在两条记录:
-- 记录1: 上午出诊
doctor_id=1, date='2026-03-06', period='morning', status=1
-- 记录2: 下午未排班(但status可能也是1?)
doctor_id=1, date='2026-03-06', period='afternoon', status=?
原因2: 前端缓存问题
前端可能缓存了之前的时间段数据。
原因3: API返回数据问题
后端API可能返回了错误的数据。
调试步骤
1. 检查数据库实际数据
运行 CHECK_DOCTOR_1_ROSTER_0306.sql 查看实际的排班记录。
2. 检查API返回
访问: adminapi/doctor.appointment/availableSlots?doctor_id=1&appointment_date=2026-03-06&period=all
查看返回的 slots 数组,确认是否包含下午时段。
3. 检查日志
查看 runtime/log/ 目录下的日志文件,搜索关键字:
- "查询到的排班数据"
- "该日期所有排班数据"
- "处理排班时段"
4. 前端调试
在浏览器控制台查看:
console.log('时间段数据:', response)
console.log('处理后的时间段:', timeSlots.value)
修复方案
已实施的修复
- 在查询排班时,明确只查询
status = 1的记录 - 在循环处理排班时,再次检查
status == 1 - 添加详细的日志记录
待验证
需要确认数据库中的实际数据结构和状态值。
测试用例
测试1: 只有上午排班
- 数据: doctor_id=1, date='2026-03-06', period='morning', status=1
- 期望: 只显示 09:00-11:45 的时间段
- 实际: 待测试
测试2: 只有下午排班
- 数据: doctor_id=1, date='2026-03-07', period='afternoon', status=1
- 期望: 只显示 14:00-17:45 的时间段
- 实际: 待测试
测试3: 上下午都排班
- 数据: doctor_id=2, date='2026-03-04', period='morning'+'afternoon', status=1
- 期望: 显示 09:00-11:45 和 14:00-17:45 的时间段
- 实际: 待测试
下一步
- 运行 SQL 查询确认数据库数据
- 测试 API 接口返回
- 根据结果调整代码