事件类型判断与提前量规则
本文件供 AI 在解析用户输入后参考:先判断事件类型 → 套用 config.json 中对应的提前量 → 计算出每个提醒的绝对时间 → 调 create_reminder.sh 创建。仅 macOS,iCloud 同步到 iPhone/iPad。
一、事件类型判断(关键词示意,非穷举)
| 类型 key | 识别线索 |
|---|---|
flight 航班 |
航班号(MU/CZ/CA/9C/HU 等两位字母+数字)、起飞/落地、机场名或三字码(浦东/首都/PEK/PVG)、航站楼(T2) |
train 高铁/火车 |
车次(G/D/C/T/K + 数字,如 G1234)、检票口、xx 站(北京南/上海虹桥)、发车 |
court 开庭 |
开庭、庭审、法院、案号 (2026)xx民初xx号 |
meeting 会议/会见 |
开会、会议、standup、访谈、面试、会见、咨询、面谈 |
deadline 期限 |
截止、最后一天、到期、届满、答辩期、上诉期、举证期限 |
social 社交 |
约饭、聚餐、聚会、看电影、喝酒、约会 |
| 其他 | 一律落到 default |
判断不清时,按"最可能需要提前准备"的方向归类;实在模糊用 default。一条信息可能同时含多个事件(如出差 = 航班 + 到达后的会议),分别建。
二、提前量格式(config.json 的 lead_times)
每个类型对应一个数组,数组里每一条 = 一个提醒,格式:
| 写法 | 含义 |
|---|---|
-3h / -1h / -30m / -15m |
相对事件开始时间往前偏移该时长 |
-1d@09:00 |
事件前一天的 09:00 |
-2d@20:00 |
事件前两天的 20:00 |
@09:00 |
事件当天的 09:00(期限类常用) |
三、AI 计算步骤
- 从用户输入解析出事件开始时间
T(绝对时间,按 config.timezone = Asia/Shanghai)。 - 按判断出的类型,从 config.json 的 lead_times 取数组。
- 对每一条算出绝对提醒时间:
-Nh/-Nm→T − N-Nd@HH:MM→(T 的日期 − N 天) 当天 HH:MM@HH:MM→T 当天 HH:MM
- 每个绝对时间调一次:
scripts/create_reminder.sh "<标题>" "<default_reminder_list>" "<绝对ISO>" - 标题加区分前缀,例如
✈️ MU5137 值机提醒(前1天)、🚄 G1234 该去车站了(前1h)、⚖️ 开庭准备(前1天)。
四、用户当次覆盖
若用户本次明说"提前 X 小时提醒我"/"只提醒一次",则当次只用用户指定的提前量,忽略 config 默认。用户没说时才用 config 默认。
五、典型示例
输入:"东航 MU5137 上海浦东→北京首都,7月20日 08:30 起飞,T2"
- 类型
flight,T = 2026-07-20 08:30 - 提醒:前1天 09:00(值机打包)、前3h = 05:30(该去机场)、前1h = 07:30(开始登机)
- 日历事件:2026-07-20 08:30,地点"上海浦东 T2"
六、航班/出行的详细字段录入(重要,对齐真实标杆)
真实航班事件是详细度标杆:标题含航班号+城市对+去/返程,地点是机场+航站楼,描述里航司/舱位/机型/时长/乘客/票号/订单号全有。解析出行类输入时,要把能捕获的字段都整理进事件,不能只写标题。
事件标题:✈️ 去程/返程 {航班号} {出发城市}→{到达城市}
事件地点:{出发机场+航站楼} → {到达机场+航站楼}
事件备注(notes) 只录对行程安排有用的信息(隐私/无用的不录):
{航司} {航班号} · {舱位} · {机型}
飞行 {时长}
{其他:出行目的/接驳等简要备注}要点:
- 备注只放航司/舱位/机型/飞行时长这类有用的;不放乘客姓名、机票号、订单号(没必要事无巨细,也有隐私顾虑)。
- 用户没给/不确定的字段不要编造,省略该行。
- 高铁同理:车次+城市对入标题,检票口/座位入备注;同样不录乘客/订单号。
- 提醒标题仍带区分后缀,可加航班/车次号,如
✈️ MU5137 值机打包(前1天)。