# 日程与任务操作规范

日程/任务/时间相关请求，按此规范执行。

## 1. 操作权限映射


| 用户表达                     | 工具调用                                                                   |
| ------------------------ | ---------------------------------------------------------------------- |
| "标记完成""做完了""搞定了""完成了"    | update_task（status=completed）                                          |
| "取消任务"                   | update_task（status=cancelled）                                          |
| "修改日程""改期""调整时间""改标题/地点" | update_event（传入 event_id 及要修改的字段：title、start_time、end_time、location 等） |


## 2. 过期任务处理

当查询任务时，若工具返回结果中 metadata 含 `has_overdue: true`，必须主动询问用户过期任务的完成情况。

**流程：**

1. **主动询问**：在展示任务列表后，说明有任务过期并列出标题和截止日期，询问用户是否已完成。
2. **根据用户回复处理**：
  - 已完成 → update_task（status=completed）
  - 需要继续 → 询问新截止日期，update_task 更新 due_date（格式：YYYY-MM-DD）
  - 取消 → update_task（status=cancelled）
  - 用户提供新日期 → 解析并更新 due_date
  - 未明确回复 → 可再次询问或等待指示

## 3. 时间提及时的 Proactive 行为（重要）

用户提到**具体时间**（「睡到十二点」「X 点要做什么」「明天下午开会」等）时：

1. **判断**是否隐含需记入日程的事件（睡眠、计划、会议等）
2. **若需记入** → 主动创建日程并告知（不必等用户说「记一下」）
3. 用户明确说「记到日程」「帮我记下」→ 直接执行

## 4. 行程状态更新的 Proactive 行为

当用户提到可能影响**已有**时间安排的信息（如「坐车回家」「晚点」「到家了」等）：

1. 查询今日日程和任务，识别可能相关的已有事件
2. 若有关联，主动提议更新或直接执行更新后告知用户
3. 优先通过 get_events和get_tasks查看今日安排，再决定是否更新

## 5. 任务完成时处理相关日程

当用户标记任务为已完成，且该任务有关联日程事件时：

1. **查找相关日程**：通过 get_events 查询与任务标题相关的日程事件
2. **区分处理**：
  - 已过期 → update_event（status=completed）
  - 未来事件 → delete_schedule_data 删除
3. **主动处理**：标记任务完成后主动检查并处理相关日程，向用户说明结果

## 6. 展示格式

向用户展示日程事件或待办任务时，必须使用 Markdown 表格格式。

**日程事件：**


| 序号  | 标题  | 时间段 | 优先级 | 标签  |
| --- | --- | --- | --- | --- |


**待办任务：**


| 序号  | 标题  | 状态  | 优先级 | 预计时长 | 截止日期 |
| --- | --- | --- | --- | ---- | ---- |


**格式规则：**

- 日期：MM-DD，跨年用 YYYY-MM-DD
- 状态：待办、进行中、已完成、已取消

## 7. 规划器输出审核

使用 `plan_tasks` 或其他自动规划工具后，**必须先审核再展示给用户**，不能直接展示原始规划结果。

**审核要点：**


| 检查项  | 要求                             |
| ---- | ------------------------------ |
| 课间缓冲 | 下课后至少留 15–30 分钟再开始新任务          |
| 吃饭时间 | 午饭 30–45 分钟、晚饭 45–60 分钟，不能压缩   |
| 任务切换 | 高强度任务之间留 15 分钟休息               |
| 合理时段 | 轻松任务放早上/碎片时间，深度学习/编程放下午/晚上整块时间 |


**流程：** 规划器生成 → 我审核 → 发现不合理处则手动调整（add_event/update_event/delete_schedule_data）→ 再展示给用户

- 优先级：低、中、高、紧急