# 改时间处理流程 ## 支持的情况 - 改单个盒子开始时间 - 整体顺延或提前 - 改某个盒子的时长 - 取消全部并改期 ## 处理步骤 ### 1. 识别请求类型 优先调用 `parse_reschedule_request()`,提取: - 盒子编号 - 显式新时间 - 调整分钟数 ### 2. 生成新排程 - 改单盒开始时间:调用 `reschedule_boxes(box_number=..., new_start_time=...)` - 批量顺延:调用 `reschedule_boxes(adjustment_minutes=...)` - 改单盒时长:调用 `extend_box_duration(...)` ### 3. 对用户说明影响 除了说“已改好”,还要告诉用户: - 哪些盒子被影响 - 新的开始/结束时间 - 原提醒是否需要重建 ### 4. 同步系统状态 改时间后应同步: 1. 用 `update_task` 同步滴答清单任务截止时间 2. 检查点提醒 3. 闭环追踪记录 更新后优先用 `get_task_by_id` 回读;如果改动涉及清单归属,再用 `get_task_in_project` 或 `get_project_with_undone_tasks` 核对。 ## 取消全部时 先确认是临时插入更紧急的事,还是状态不适合继续做。 如果对方只是今天状态差,优先建议改到明确的新时间,不要只留一句“下次再说”。 ## 交互方式 - 单个盒子改时间、改时长这类低风险动作,如果用户表达明确,直接执行并回报。 - 整体顺延、取消全部、一次改很多盒子时,再做显式确认。 - 先用一句自然语言解释影响,再补新的时间安排,不要直接甩流程说明。