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