6.1 KiB
6.1 KiB
预约/改约日程或会议、查询/搜索可用会议室的工作流
执行摘要
- 第一步永远是判断任务类型:新建日程,还是编辑已有日程。
- 编辑已有日程时,必须先定位目标日程或实例的
event_id。 - 默认做智能助理,不做表单填写机。 能根据上下文补全的默认值就直接补全,仅在必须决策的冲突或无法唯一确定的场景下才发起询问。
- 新建流先补默认值,编辑流先继承已定位日程信息。
- 明确时间 → 进入 明确时间分支
- 模糊时间或无时间信息 → 进入 模糊时间分支
- BLOCKING REQUIREMENT: 面临时间方案或会议室方案的选择时,必须先向用户展示选项并等待确认,禁止未经确认直接创建/更新日程。
- 必须按顺序执行。 不要跳过"任务类型判定""目标日程定位(编辑流)""补默认值/继承基线信息""判断时间明确性"这些前置步骤。
严禁行为
- 严禁在未读取对应子命令文档前直接调用命令。
- 严禁在尚未判断"新建"还是"编辑"之前,就直接进入创建日程或查会议室动作。
- 严禁把带有既有日程锚点 + 修改动词的请求当成新建日程。
- 严禁在编辑已有日程时跳过目标定位步骤。 未拿到唯一
event_id前,不得调用+update。 - 严禁在面临时间/会议室方案选择时,未经用户确认就擅自创建/更新日程。
适用场景
- "帮我约个会" / "下周找时间和 XX 开会"
- "帮我订/找/搜索一个可用会议室"
- "明天下午3点约个日程"
- "把明天上午的日程加上 小明"
- "给下周一的周会换个会议室"
- "把这个日程改到明天下午,并加上学清 F201"
核心概念
- 会议室是日程的一种参与人(attendee / resource),不能脱离日程单独预定。
- 预定或查找会议室,均需先确定时间块。
- 当用户说"查会议室""找会议室",默认意图是查会议室可用性,不是检索会议室资源名录。
任务类型判定
| 类型 | 典型语言信号 | 第一动作 |
|---|---|---|
| 新建日程 | "约个会""安排会议""新建日程""订个会议室开会" | 补默认值,再进入时间判断 |
| 编辑已有日程 | "给某日程加人/删人/加会议室""把某日程改到…""换会议室" | 先定位目标 event_id |
规则:
- 只要同时出现既有日程锚点(标题、时间段、
这个日程、这场会)和修改动词(添加、移除、改到、换),默认判定为编辑。 - 对重复性日程的编辑,必须先定位到对应实例的
event_id。
编辑流:先定位目标日程
定位规则:
- 优先利用用户给出的标题、日期、时间范围等锚点,通过
+agenda、+search-event或实例视图缩小范围 - 命中多个候选日程时,必须向用户展示候选项并要求确认
- 重复性日程必须继续定位到该次实例的
event_id
编辑流分支路由:
| 编辑子场景 | 下一步 |
|---|---|
| 仅增删普通参会人/群组,不改时间,不涉及会议室 | 直接 +update(详见 lark-calendar-update.md) |
| 新增会议室,不改时间 | 基于已定位日程 start/end → 明确时间分支 |
| 只改时间,不涉及会议室 | 判断时间明确性 → 对应分支 |
| 既改时间,又新增/更换会议室 | 先确定最终时间 → 再查会议室 → 落地 |
新建日程:智能推断默认值
- 标题:根据上下文自动生成;如无法推断,默认"会议"
- 参会人:如未指定,默认仅用户自己
- 时长:基于上下文推断;默认 30 分钟
- 无时间信息:默认推断合理区间(如"今天"或"近两天"),进入时间推荐流程,禁止询问用户
搜索参与人出现多个结果无法唯一确定时,必须询问用户并记录长期记忆。
判断时间是否明确
时间基准规则:
- 新建流:使用用户给出的时间,或默认补全出的时间范围
- 编辑流且不改时间:已定位日程的当前
start/end就是明确时间 - 编辑流且改时间:用户想改到的新时间;若表达模糊,进入模糊时间分支 注意: 在执行修改日程/会议时间的任务时,必须先获取原日程的持续时长。如果用户只提供了新的开始时间,你必须根据原时长自动计算出新的结束时间,严格保持原时长不变,禁止擅自改变原日程的时长。
分支路由
| 判定结果 | 下一步读取 |
|---|---|
| 明确时间 | schedule-clear-time.md |
| 模糊时间 / 无时间信息 | schedule-fuzzy-time.md |
落地日程变更
用户确认后调用:
lark-cli calendar +create \
--summary "..." \
--start "<start>" \
--end "<end>" \
--attendee-ids "ou_xxx,oc_xxx,omm_xxx"
lark-cli calendar +update \
--event-id "<event_id>" \
--start "<start>" \
--end "<end>" \
--add-attendee-ids "omm_new_room"
落地规则:
- 编辑流必须始终沿用前面定位得到的目标
event_id;禁止在最后一步重新猜测目标日程 - 编辑流中"新增会议室"默认仅追加
room_id,不移除已有会议室 - 仅当用户明确说"更换会议室"时,才同时
--remove-attendee-ids旧 +--add-attendee-ids新 - 需要会议室时,将选中的
room_id写入参与人列表