待办支持提醒(到期提醒 / 提前 N 分钟),补齐 ReminderService 链路 #38

Closed
opened 2026-11-04 00:13:37 +00:00 by laoyang · 1 comment
Owner

现象

日程有完整的提醒能力(reminders 字段 + ReminderService 代理提醒),待办完全没有。
"明天下午3点交报销"这类待办到点不响,用户会认为是 bug。

现状

  • TodoService 内无 reminders 相关代码
  • 待办编辑弹层只有:标题 / 截止时间 / 重复 / 日历本,无提醒项
  • ReminderService 只处理 kind='event'

需要做的事

  1. LocalEvent / 待办表补 reminders 字段(若已有则复用)
  2. 待办编辑弹层增加提醒选择(对齐日程的选项集)
  3. ReminderService 支持 kind='todo',按 DUE 时间倒推提醒时刻
  4. 写回 CalDAV 时要生成 VALARM(TRIGGER 相对 DUE)
  5. 待办完成 / 删除后要取消对应提醒

验收标准

  • 新建一条 30 分钟后到期、提前 5 分钟提醒的待办 → 25 分钟后收到通知
  • 服务器端该 VTODO 内含 VALARM 块
  • 打勾完成后提醒被取消,不再响

为什么单独建单

待办提醒是全新能力:现有 ReminderService 只服务日程(kind=event),待办侧连 reminders 字段都没有,与 #34(日程时间选择器bug)、#33(地点联想)完全无关

## 现象 日程有完整的提醒能力(`reminders` 字段 + `ReminderService` 代理提醒),**待办完全没有**。 "明天下午3点交报销"这类待办到点不响,用户会认为是 bug。 ## 现状 - `TodoService` 内无 `reminders` 相关代码 - 待办编辑弹层只有:标题 / 截止时间 / 重复 / 日历本,无提醒项 - `ReminderService` 只处理 `kind='event'` ## 需要做的事 1. `LocalEvent` / 待办表补 `reminders` 字段(若已有则复用) 2. 待办编辑弹层增加提醒选择(对齐日程的选项集) 3. `ReminderService` 支持 `kind='todo'`,按 DUE 时间倒推提醒时刻 4. 写回 CalDAV 时要生成 `VALARM`(`TRIGGER` 相对 `DUE`) 5. 待办完成 / 删除后要取消对应提醒 ## 验收标准 - 新建一条 30 分钟后到期、提前 5 分钟提醒的待办 → 25 分钟后收到通知 - 服务器端该 VTODO 内含 VALARM 块 - 打勾完成后提醒被取消,不再响 --- ### 为什么单独建单 待办提醒是全新能力:现有 ReminderService 只服务日程(kind=event),待办侧连 reminders 字段都没有,与 #34(日程时间选择器bug)、#33(地点联想)完全无关
Author
Owner

验收记录

提交:413900b(一次提交覆盖 #38 #39 #40 #41 #42)

改了什么

见 commit message。核心文件:

  • EventDb.ets:queryRemindableTodos / setTodoReminders / priority+categories 双向映射
  • ReminderService.ets:合并待办提醒、文案按 kind 分支
  • IcsUtil.ets:todoExtras / buildTodo 写 VALARM+扩展字段 / rewriteTodoFields 支持改写
  • TodoService.ets:updateTodo / createTodo 签名扩展
  • Index.ets:List+swipeAction、弹层 UI、编辑热区

怎么验的

  • 编译 BUILD SUCCESSFUL
  • 真机 dump 确认弹层新 UI 全部渲染
  • ICS 生成用等价实现校验通过

遗留

端到端建单未跑通(uitest inputText 按坐标会串到同一输入框),需人工验一次。

## 验收记录 提交:`413900b`(一次提交覆盖 #38 #39 #40 #41 #42) ### 改了什么 见 commit message。核心文件: - `EventDb.ets`:queryRemindableTodos / setTodoReminders / priority+categories 双向映射 - `ReminderService.ets`:合并待办提醒、文案按 kind 分支 - `IcsUtil.ets`:todoExtras / buildTodo 写 VALARM+扩展字段 / rewriteTodoFields 支持改写 - `TodoService.ets`:updateTodo / createTodo 签名扩展 - `Index.ets`:List+swipeAction、弹层 UI、编辑热区 ### 怎么验的 - 编译 BUILD SUCCESSFUL - 真机 dump 确认弹层新 UI 全部渲染 - ICS 生成用等价实现校验通过 ### 遗留 端到端建单未跑通(uitest inputText 按坐标会串到同一输入框),需人工验一次。
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: laoyang/FamilyBook#38