跳到主要内容

日历

Libre WebUI 包含个人日历。每位登录用户都有自己的月视图和周视图,可显示一次性与重复事件;计划自动化也会在同一网格中显示下一次执行和运行历史。

事件

事件包含标题、可选备注、开始时间、可选结束时间、全天标记和可选重复规则。标题和备注使用与聊天和笔记相同的信封进行静态加密。

重复使用共享触发器模型:

类型字段含义
onceat单次发生
hourlyminute, startHour?, endHour?在时间窗口内每小时发生
dailyhour, minute每天在指定本地时间发生
weeklydayOfWeek, hour, minute每周在指定日期发生
monthlydayOfMonth, hour, minute每月在指定日期发生
yearlymonth, dayOfMonth, hour, minute每年在指定日期发生

重复事件只存储一次。范围查询会在服务器端展开:每个投影事件都携带指向源事件的 baseEventId,因此修改源事件会更新所有未来事件。超过月末的 dayOfMonth 会限制为该月最后一天。所有重复计算均使用服务器本地时区。

命名日历与共享

除默认个人范围外,用户最多可以创建 20 个命名日历,每个日历可设置显示颜色。事件可以携带 calendarId;没有该字段的事件属于始终私有的默认范围。

命名日历通过通用授权模型共享:read 允许接收者在自己的日历旁查看共享日历及事件,write 还允许创建和编辑事件。协作者创建的事件存储在 日历所有者 账户下,因此配额、删除和可移植存档仍属于所有者。每次请求都会重新授权;撤销授权后,下一次读取立即隐藏日历。删除日历会把事件分离回所有者默认范围,并移除授权。

提醒

事件可包含提醒偏移量(reminderMinutes,最多 14 天)。自动化调度器的租约周期会扫描到期提醒,并向事件所有者的收件箱发布 calendar-reminder 通知。每次事件的比较并设置操作保证不会重复触发,包括重复事件。

ICS 导入与导出

GET /api/calendar/export?calendarId= 将日历(或默认范围)下载为 RFC 5545 .ics 文件,其中包含 UTC 时间戳、转义文本、映射自原生重复类型的基本 RRULE,以及提醒的 VALARM 块。POST /api/calendar/import 接受 ICS 载荷(最多 2 MB / 1,000 个事件)并导入可写日历范围。导入器支持 UTC 和浮动时间、全天 DATE 值及简单 FREQ 规则。无法准确表示的规则(INTERVALCOUNTUNTILEXDATE)会将事件导入为不重复,并在响应中计为已丢弃规则,而不是悄然偏移。

模型访问

三个内置聊天工具以调用用户身份向模型提供日历访问:list_calendar_events(只读)、create_calendar_eventdelete_calendar_event(后两者有副作用,因此受标准工具审批流程约束)。

API

所有端点都需要身份验证。事件读取包括调用者自己的事件及与其共享的日历;写入需要目标日历的所有权或写入授权。

方法路径用途
GET/api/calendar/events?from=&to=范围内的事件,展开重复项
POST/api/calendar/events创建事件
PUT/api/calendar/events/:eventId更新事件
DELETE/api/calendar/events/:eventId删除事件
GET/api/calendar/calendars自有和共享的命名日历
POST/api/calendar/calendars创建命名日历
PUT/api/calendar/calendars/:id重命名日历或更改颜色
DELETE/api/calendar/calendars/:id删除日历(事件会被分离)
GET/api/calendar/exportICS 导出
POST/api/calendar/importICS 导入

范围查询使用以毫秒表示的纪元 from/to 边界,每次请求最多跨越 13 个月。每位用户最多存储 2000 个事件;标题最多 200 个字符,备注最多 10,000 个字符。