# 日程 把「什么时候、和谁、在哪儿」落到企业微信日历上:约日程、看安排、找大家都有空的时间、订会议室、改期、取消。 它管的是**不带会议号和入会链接**的安排——包括纯线下的面对面碰头,也包括订了会议室的线下会。 要的是带入会链接的在线会议,见 [06 会议](06-会议.md)。 ## 你可以怎么说 > 「我明天有什么安排?」 > 「约个日程:周三下午 2 点产品评审,叫上张三和李四」 > 「项目评审是什么时候?」 > 「把周四那个会挪到下午 4 点」 > 「张三和李四这周什么时候都有空?」 > 「订个会议室,16 楼的,能坐 6 个人」 ## 📋 验证状态 | 项 | 状态 | |---|---| | 创建日程 | ✅ **已实测** | | 查看日程列表 | ✅ **已实测** | | 按标识取日程详情 | ✅ **已实测** | | 改期(更新日程) | ✅ **已实测** | | 取消日程 | ✅ **已实测** | | 查多人共同空闲时段 | ⚠️ **未实测** | | 查办公楼清单 / 查会议室可订性 / 订会议室 | ⚠️ **未实测** | | 完整链路(你说一句话 → 助手自动约完) | ⚠️ 未实测 | **实测记录**(命令层,人工在真实账号上执行): 一条完整的生命周期跑通了 5 个方法—— ``` schedules create → schedules list → schedules get → schedules update(15:00 改到 16:00) → schedules cancel(取消后列表归零) ``` 取消后复核,日程列表数量归 0(`schedule_list_count: 0`),测试数据已清理干净。 其中 `update` 与 `cancel` 都属于高风险写入,实测时是明确知情后执行的。 **另有一条界面内的行为实测**(不是命令层):让助手「帮我约个会」时,它触发的消歧问句 **逐字正确**——`需要创建日程还是会议?(请回复:日程 / 会议)`。 这一条是修复了一个缺陷之后复测通过的,见下方「注意事项」。 ## 能力清单 | 能做什么 | 命令 | 风险 | |---|---|---| | 查某段时间的日程列表 | `wecom-cli calendar schedules list` | 读取 | | 按关键词 / 组织人 / 参与人搜日程 | `wecom-cli calendar schedules search` | 读取 | | 按标识批量取日程详情 | `wecom-cli calendar schedules get` | 读取 | | 查多人共同空闲时段 | `wecom-cli calendar schedules free list` | 读取 | | 查企业办公楼清单 | `wecom-cli meeting rooms buildings list` | 读取 | | 查会议室这个时段空不空 | `wecom-cli meeting rooms search` | 读取 | | 创建日程(可邀请参与人、可占会议室) | `wecom-cli calendar schedules create` | **高风险写入** | | 更新日程(改时间 / 地点 / 人 / 会议室) | `wecom-cli calendar schedules update` | **高风险写入** | | 取消(删除)日程 | `wecom-cli calendar schedules cancel` | **高风险写入** | 三个写方法都会**通知到别人**:建带参与人的日程会给对方发邀请、对方日历上立刻多出这条; 改期会通知全体参与人,被移除的人会直接失去这条日程;取消会通知所有人**且无法撤回**。 所以每一个执行前都会复述并等你同意。 ## 注意事项 **日程和会议的区别只有一条:有没有会议号和入会链接。** 有的是「会议」,没有的是「日程」——**订了会议室的纯线下会也算日程**。 - **创建**时,你只说「开个会」而没说清是哪种,助手会**逐字问你一句固定的话**: `需要创建日程还是会议?(请回复:日程 / 会议)` 这句话的措辞是钉死的,不会被改写成「线上还是线下」「视频会议还是普通日程」之类的变体—— 因为下游是按「日程」/「会议」这两个词匹配你的回复的。 **注意**:「在 1605 开会」「订个会议室开会」这种**只给了地点**的说法**也不算说清楚**, 它还是会问——会议室里同样可能要远程接入。 - **查询**时它**不会问**这一句。你说「最近有什么会」,它会**日程和会议两边都查**,再合并给你, 末尾汇总「共 N 场,其中会议 X 场、日程 Y 场」。 **改约永远是「改」,不是「先取消再新建」。** 即使你说的是「把周四那个会取消,改约到周五」,助手也会走「更新」这条路。 原因很实在:**会议链接重建不出来**——一旦拆成取消 + 新建,参与人手里的旧入会链接会全部作废, 而新建的纯日程根本生成不了新链接。这条禁令没有例外。 **会议室查询归日程,不归会议——这一点反直觉。** 虽然命令看起来是「会议」开头的,但查办公楼、查会议室、订会议室这几件事都由日程这一域负责。 [06 会议](06-会议.md) 要订会议室时,会反过来调用这边。你不需要记这个,说「订个会议室」就行。 **会议室只写进「地点」等于没订。** 助手会真正去查这个时段这间会议室空不空,拿到真实的会议室再占用,而不是把「1605 会议室」 当成一行文字塞进地点字段。**订房是创建的前置阻塞项**——提到了会议室却没订上, 它不会「先把日程建了回头补会议室」。 指定的会议室查无此室或已被占用时,助手会**先告诉你**,哪怕只有一个替代候选也要你确认, **不会静默换一间**。另外,会议室被占用时企业微信**不会告诉你被谁占了**,助手也就不会编。 **多人时会先查冲突再让你拍板。** 约多人日程时助手会先查共同空闲时段,把冲突摆给你看, 由你决定是按这个时间硬约还是换一个。它不会替你做这个决定。 注意共同空闲查询的窗口**不超过 24 小时**,而且**早于当前时刻的部分会被自动截断**—— 所以「昨天大家什么时候有空」永远查不出东西。 **周期性(重复)日程完全不支持。** 创建、修改、取消重复日程都做不了,助手会直接告诉你要去 企业微信客户端操作,**不会用「建多条单次日程」「逐场修改」这类变通蒙混过去**。 **接受 / 拒绝日程邀请(RSVP)也不支持**,得你自己在客户端点,或者私信发起人。 **时间要给具体的。** 助手向你确认时间时,候选一定是**精确到分钟的具体时刻**(「明天 14:00」「周六 10:30」), 不会给「上午」「下班前」这类模糊选项。你只给了开始时间没给结束时间时,它按 1 小时算,不追问。 **查询窗口有边界。** 日程列表能查的是当前时刻前后各 30 天,超出部分企业微信直接不返回(不是报错)。 超范围时助手会请你给一个更短的范围,**不会自行截断后假装查全了**。 ### 三条通用边界在本域怎么体现 1. **只能改它自己建的东西**——**这一条在日程上最容易撞到**。你自己在企业微信里建的那条日程, 助手**改不了也取消不了**。它不会预先拦你,而是直接去执行,拿到权限错误后如实告诉你, 并建议你联系创建人或自己在客户端改。 2. **能力按品类逐项开通**——日程与会议室是独立品类。未开通时助手会把官方开通指引原样转给你, 然后停下,不重试。 3. **危险动作先问你**——建、改、取消三个动作**全是高风险写入**,每次都会复述 「主题、时间、涉及哪些人、能否撤回」并等你明确同意。见 [99 风险与确认](99-风险与确认.md)。 ## 相关 - [06 会议](06-会议.md)——要入会链接和会议号的在线会议 - [02 通讯录](02-通讯录.md)——拉人进日程前先在这里把人名解析出来 - [07 待办](07-待办.md)——「记一件要做的事」而不是「占一段时间」时用它 - [08 邮件](08-邮件.md)——**通过邮件**发日程邀约是另一条路(只有你明确提到「邮件」时才走那边) - [99 风险与确认](99-风险与确认.md)——三个写方法的确认规则