时间冲突检测功能会自动检测用户日程事项之间的时间重叠,并以醒目的视觉效果标注冲突的事项。
冲突的日程事项会有以下视觉标识:
- 红色左边框 - 卡片左侧有明显的红色竖条
- 红色背景 - 卡片有淡红色背景高亮
- 冲突标签 - 标题旁显示红色"时间冲突"标签
- 冲突图标 - 橙色警告三角形图标
- 提示信息 - 鼠标悬停显示详细的冲突说明
输入以下两个日程:
今天下午2点开会
今天下午2点半有接待
预期结果:
- 两个事项都应该显示冲突标识
- 第一个事项:14:00-15:00(默认1小时)
- 第二个事项:14:30-15:30(默认1小时)
- 时间段重叠:14:30-15:00
今天下午3点开会,2小时
今天下午4点培训
预期结果:
- 两个事项都显示冲突
- 第一个事项:15:00-17:00
- 第二个事项:16:00-17:00
- 时间段重叠:16:00-17:00
明天上午10点会议,2小时
明天上午11点项目评审
预期结果:
- 两个事项都显示冲突
- 第一个事项:10:00-12:00
- 第二个事项:11:00-12:00
- 时间段重叠:11:00-12:00
周三下午2点到5点研讨会
周三下午3点演示,30分钟
预期结果:
- 两个事项都显示冲突
- 第一个事项:14:00-17:00
- 第二个事项:15:00-15:30
- 第二个事项完全在第一个事项时间范围内
今天上午9点会议,1小时
今天上午10点培训
预期结果:
- 两个事项都不显示冲突
- 第一个事项:09:00-10:00
- 第二个事项:10:00-11:00
- 第一个结束时第二个开始,无重叠
下周一早上9点团队会议
下周一早上9点项目启动会
预期结果:
- 两个事项都显示冲突
- 两个事项开始时间完全相同
后天下午2点开会
后天下午2点半接待
后天下午2点45分电话会议
预期结果:
- 三个事项都应该显示冲突标识
- 形成一个冲突链
- 创建两个冲突的事项
- 编辑其中一个,修改时间使其不再冲突
- 保存
预期结果:
- 修改前两个事项都显示冲突
- 修改后两个事项的冲突标识都应该消失
- 创建两个冲突的事项
- 删除其中一个
预期结果:
- 删除前两个事项都显示冲突
- 删除后剩余事项的冲突标识应该消失
- 创建两个冲突的事项
- 归档其中一个
预期结果:
- 归档前两个事项都显示冲突
- 归档后未归档事项的冲突标识应该消失
- 恢复归档后,冲突标识应该重新出现
# 确保数据库正在运行
npm run db:start
# 启动后端服务器
npm run server
# 启动前端开发服务器
npm run dev在快速输入框中依次输入上述测试用例的语句
检查每个测试用例的预期结果是否正确:
- 冲突标识是否正确显示
- 视觉效果是否醒目
- Tooltip 提示是否准确
- 编辑冲突的事项
- 删除冲突的事项
- 归档冲突的事项
- 验证冲突状态的实时更新
- 时间解析:默认事项时长为1小时
- 同一用户:只检测同一用户的事项冲突
- 事项类型:只有
event类型的事项才会检测冲突 - 实时更新:创建、更新、删除、归档操作都会触发冲突状态重新计算
- 目前不支持跨天事项的冲突检测优化
- 不支持显示具体冲突的事项列表(可在未来版本中添加)
- 不支持批量解决冲突的功能
detectTimeConflicts(): 检测单个事项是否与其他事项冲突updateConflictStatus(): 批量更新所有事项的冲突状态- 在创建、更新、删除、归档操作后自动调用冲突检测
hasTimeConflict(): 判断两个时间段是否重叠detectConflicts(): 检测一个事项与事项列表的冲突formatConflictMessage(): 格式化冲突提示信息
- 冲突标识的视觉效果
- Tooltip 提示组件
- 红色高亮样式
- 检查事项是否有
start_time和end_time - 检查事项类型是否为
event - 查看浏览器控制台是否有错误
- 检查后端日志
- 刷新页面重新加载数据
- 检查后端
updateConflictStatus函数是否被调用 - 检查数据库中
has_conflict字段的值
- 检查时区设置
- 确认日期时间格式正确
- 查看
parseLocalDateTime函数的处理逻辑