我无法理解如何管理taskwarrior中的重复任务
我从一个空数据库开始:
$ task
[task next]
No matches.
Run Code Online (Sandbox Code Playgroud)
我添加了一个重复的日常任务:
$ task add recur:daily due:later test
Run Code Online (Sandbox Code Playgroud)
它显示在报告中:
$ task
[task next]
ID Age Recur Due Description Urg
2 - P1D 19.2y test 2.4
1 task
Creating recurring task instance 'test'
Run Code Online (Sandbox Code Playgroud)
如果我将其标记为这样:
$ task 2 done
Completed task 2 'test'.
Completed 1 task.
$ task
[task next]
No matches.
Run Code Online (Sandbox Code Playgroud)
它从报告中消失。我相信这是有道理的,因为“我今天完成了日常任务”。
问题是它在第二天甚至更远的时间里再也不会出现。我究竟做错了什么?
小智 7
在深入研究工作细节之前,请注意,循环的设计并不完善。我带来的是经验观察,可能会因返工而改变。
task add recur:<duration> due:<first task due date> until:<delete first task by date> wait:<date when task will appear> "my task"
Run Code Online (Sandbox Code Playgroud)
例子:
task add recur:daily due:9:00 until:12:00 wait:5:00 eat breakfast
重复需要一个due
属性(通过验证检查强制执行)。递归也可以使用until
和wait
属性(如果存在)。复发不使用scheduled
。还有一个mask
属性可以跟踪任务是哪个重复发生的实例。
当创建新的重复实例时:
new task due
= parent due
+ recur
*mask
until
和的数学相同wait
scheduled
从父任务批量复制。实际上,这种意外行为不会破坏您的工作流程,只会影响过滤器并影响紧迫性。我之所以这么说,是因为我花了很长时间才发现这并没有按预期工作。每次taskwarrior
运行时,它都会检查是否到了创建下一个事件的时间。伪方程为:
now >= due + recur * (mask + 1)`
Run Code Online (Sandbox Code Playgroud)
请注意,有一个配置值 ,rc.recurrence.limit
可用于告诉 taskwarrior 进一步创建更多事件。
您可以预期下一个事件将在上一个事件的到期日创建。
显然,重复任务应该具有相同的伴随到期设置。例如:
$ task add "a daily recurring task" recur:daily due:eod
$ task add "a weekly recurring task" recur:weekly due:eow
$ task add "a monthly recurring task" recur:monthly due:eom
Run Code Online (Sandbox Code Playgroud)
这样,每日任务就可以标记为已完成,并且直到第二天才会再次显示
每周/每月等任务也是如此