待办支持子任务(VTODO 父子结构,RELATED-TO) #43

Closed
opened 2026-11-04 00:53:02 +00:00 by laoyang · 2 comments
Owner

现状

grep RELATED-TO = 0,LocalEvent 无 parentUid 字段。待办是平铺的,没有层级。

需要做的事

  1. 表加 parent_uid(TEXT,空=顶层任务);LocalEvent 加 parentUid
  2. IcsUtil 读写 RELATED-TO;RELTYPE=PARENT:<父uid>
  3. 列表 UI:父待办下缩进显示子待办,显示"3/5 已完成"进度
  4. 编辑弹层增加"父任务"选择 / 或从父任务页进入"添加子任务"
  5. 父任务完成时是否级联完成子任务 —— 需用户确认

验收标准

  • 建一个父任务 + 2 个子任务,服务器端 3 个 VTODO 里子任务带 RELATED-TO
  • 列表里子任务缩进在父任务下
  • 父任务显示子任务完成进度

待确认

  • 父任务勾选完成时,子任务是否自动完成?(建议:不自动,只提示)

为什么单独建单

子任务是 VTODO 层级结构(RELATED-TO),与 #38-#42 的提醒/删除/字段/热区是不同维度,可独立验收

## 现状 `grep RELATED-TO` = 0,`LocalEvent` 无 `parentUid` 字段。待办是**平铺**的,没有层级。 ## 需要做的事 1. 表加 `parent_uid`(TEXT,空=顶层任务);`LocalEvent` 加 `parentUid` 2. `IcsUtil` 读写 `RELATED-TO;RELTYPE=PARENT:<父uid>` 3. 列表 UI:父待办下缩进显示子待办,显示"3/5 已完成"进度 4. 编辑弹层增加"父任务"选择 / 或从父任务页进入"添加子任务" 5. 父任务完成时是否级联完成子任务 —— **需用户确认** ## 验收标准 - 建一个父任务 + 2 个子任务,服务器端 3 个 VTODO 里子任务带 RELATED-TO - 列表里子任务缩进在父任务下 - 父任务显示子任务完成进度 ## 待确认 - 父任务勾选完成时,子任务是否自动完成?(建议:不自动,只提示) --- ### 为什么单独建单 子任务是 VTODO 层级结构(RELATED-TO),与 #38-#42 的提醒/删除/字段/热区是不同维度,可独立验收
Author
Owner

验收记录

提交:d9db8b4

改了什么

  • RELATED-TO;RELTYPE=PARENT:<父uid> 读写(IcsUtil + 数据层 parentUid 字段)
  • 列表子任务缩进 34vp + 「∟」连线符,父任务副行显示「N/M」进度
  • 弹层「父任务」行 → 覆盖层选择(排除自己及后代,防成环)
  • 父任务勾选完成 → 级联完成所有未完成子任务(TodoService.completeChildren)

级联语义

按用户选定:父任务勾选完成时子任务全部完成。

怎么验的

  • 编译 BUILD SUCCESSFUL
  • 服务器端到端:PUT 带 RELATED-TO 的待办 → 201,GET 原样返回
  • 协议往返(等价复刻)无损

遗留

真机 UI 未验(设备离线)。需人工验:缩进显示、级联完成、父任务选择弹层。

## 验收记录 提交:`d9db8b4` ### 改了什么 - `RELATED-TO;RELTYPE=PARENT:<父uid>` 读写(IcsUtil + 数据层 parentUid 字段) - 列表子任务缩进 34vp + 「∟」连线符,父任务副行显示「N/M」进度 - 弹层「父任务」行 → 覆盖层选择(排除自己及后代,防成环) - 父任务勾选完成 → 级联完成所有未完成子任务(`TodoService.completeChildren`) ### 级联语义 按用户选定:父任务勾选完成时**子任务全部完成**。 ### 怎么验的 - 编译 BUILD SUCCESSFUL - 服务器端到端:PUT 带 RELATED-TO 的待办 → 201,GET 原样返回 - 协议往返(等价复刻)无损 ### 遗留 真机 UI 未验(设备离线)。需人工验:缩进显示、级联完成、父任务选择弹层。
Author
Owner

真机验证结果(2026-11-04 19:00,设备 5NC0225B27004718)

设备连上后补做了本批(#43 #44 #45)的真机验证。

#45 待办投射到日历 —— ✅ 全部通过

服务器写入一条「今天 DUE」的待办后:

验证项 结果
时间轴日志 待办 0 条 → 待办 1 条(同步后正确识别)
界面渲染 [144,1398][1004,1442] 今天截止验证
位置正确 在「11月4日 三」下方、07:00 刻度之上(待办区在时间轴顶部)
勾选交互 点勾选圈 → 待办完成成功 id=750
自动刷新 勾选后 待办 1 条 → 0 条,界面消失
完成态过滤 已完成的不再显示(待办区是否还在: False)

#43 子任务 —— ✅ 全部通过

服务器写入父任务 + 子任务(RELATED-TO)后:

验证项 结果
同步 个人成长待办:REPORT 4 个资源,解析 4 条
父任务显示 [202,796][437,851] 父任务验证
父任务进度 副行 无截止时间 · 群晖:个人成长 · 0/1
子任务缩进 [277,985][571,1040] ∟ 子任务验证(x 从 202→277,缩进 75px)
连线符 ∟ 正确显示
级联完成 点父任务 → 待办完成成功 id=751 + id=752 + 级联完成 1 个子任务(父 verify43-parent)

#44 附件 —— ⚠️ 部分通过

验证项 结果
弹层字段 父任务(y=1810)、附件(y=1905) 均渲染
「添加文件」按钮 存在且可点
文件选择器唤起 ✅ 日志出现 filePicker/FileMgr 记录,选择器正常打开
完整上传链路 ❌ 未验(无法用自动化在系统选择器里选文件)

清理

测试数据已全部删除(verify45-today-todo / verify43-parent / verify43-child,均 204)。

## 真机验证结果(2026-11-04 19:00,设备 5NC0225B27004718) 设备连上后补做了本批(#43 #44 #45)的真机验证。 ### #45 待办投射到日历 —— ✅ 全部通过 服务器写入一条「今天 DUE」的待办后: | 验证项 | 结果 | |---|---| | 时间轴日志 | `待办 0 条` → `待办 1 条`(同步后正确识别) | | 界面渲染 | `[144,1398][1004,1442] 今天截止验证` | | 位置正确 | 在「11月4日 三」下方、07:00 刻度之上(待办区在时间轴顶部) | | 勾选交互 | 点勾选圈 → `待办完成成功 id=750` | | 自动刷新 | 勾选后 `待办 1 条` → `0 条`,界面消失 | | 完成态过滤 | 已完成的不再显示(`待办区是否还在: False`) | ### #43 子任务 —— ✅ 全部通过 服务器写入父任务 + 子任务(RELATED-TO)后: | 验证项 | 结果 | |---|---| | 同步 | `个人成长待办:REPORT 4 个资源,解析 4 条` | | 父任务显示 | `[202,796][437,851] 父任务验证` | | 父任务进度 | 副行 `无截止时间 · 群晖:个人成长 · 0/1` | | 子任务缩进 | `[277,985][571,1040] ∟ 子任务验证`(x 从 202→277,缩进 75px) | | 连线符 | `∟` 正确显示 | | **级联完成** | 点父任务 → `待办完成成功 id=751` + `id=752` + `级联完成 1 个子任务(父 verify43-parent)` | ### #44 附件 —— ⚠️ 部分通过 | 验证项 | 结果 | |---|---| | 弹层字段 | 父任务(y=1810)、附件(y=1905) 均渲染 | | 「添加文件」按钮 | 存在且可点 | | 文件选择器唤起 | ✅ 日志出现 `filePicker/FileMgr` 记录,选择器正常打开 | | **完整上传链路** | ❌ 未验(无法用自动化在系统选择器里选文件) | ### 清理 测试数据已全部删除(verify45-today-todo / verify43-parent / verify43-child,均 204)。
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: laoyang/FamilyBook#43