Вопрос или проблема
Мне трудно понять, как управлять повторяющимися задачами в taskwarrior
Я начинаю с пустой базы данных:
$ 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.
она исчезает из отчета. Я думаю, это логично, так как “я выполнил ежедневную задачу сегодня”.
Проблема в том, что она никогда не появляется снова на следующий день и далее. Что я делаю неправильно?
Прежде чем углубляться в детали работы, обратите внимание, что повторение не хорошо продумано. Что я привожу – это эмпирические наблюдения, которые могут измениться при переработке.
Вкратце; Как я использую и понимаю повторение
task add recur:<длительность> due:<дата первой задачи> until:<удалить первую задачу к дате> wait:<дата, когда задача появится> "моя задача"
Пример:
task add recur:daily due:9:00 until:12:00 wait:5:00 eat breakfast
- Позавтракать в 9:00 утра
- Скрыть задачу до 5:00 утра
- Удалить задачу ко времени обеда
- Создавать новое повторение каждый день
Детали
Повторение требует наличия атрибута due
(проверено проверкой валидации).
Повторение также может использовать атрибуты until
и wait
, если они существуют.
Повторение не использует scheduled
.
Существует атрибут mask
, который отслеживает, какое повторение задачи выполняется.
Когда создается новое повторение задачи:
новая задача due
=родитель due
+recur
*mask
- идентичные вычисления для
until
иwait
scheduled
копируется целиком из родительской задачи. На практике, это неожиданное поведение не ломает ваш рабочий процесс, просто влияет на фильтры и искажает срочность. Я указываю на это, потому что у меня ушло много времени, чтобы понять, что это не работало, как ожидалось.
Каждый раз, когда запускается taskwarrior
, он проверяет, пора ли создать следующее повторение. Псевдо-уравнение выглядит так:
now >= due + recur * (mask + 1)`
Обратите внимание, существует значение config rc.recurrence.limit
, которое можно использовать, чтобы сказать taskwarrior создать еще больше повторений на более дальние сроки.
Ожидайте, что следующее повторение будет создано на дату выполнения предыдущей.
Очевидно, что повторяющиеся задачи должны иметь одинаковые настройки due. Например:
$ 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
таким образом, ежедневную задачу можно отметить выполненной, и она не появится до следующего дня
то же самое для еженедельных/ежемесячных и т.д. задач
Ответ или решение
Управление повторяющимися задачами в Taskwarrior может представлять определенные трудности, особенно для новичков. Эта система управления задачами предлагает гибкие и мощные инструменты, однако для достижения максимальной эффективности важно правильно настраивать повторяющиеся задачи.
Теория
Taskwarrior позволяет создавать повторяющиеся задачи с использованием атрибутов recur
, due
, until
, и wait
, которые определяют как частоту создания задач, так и их периоды видимости и жизни. Давайте разберем их более подробно:
-
Recur: Этот атрибут отвечает за интервал повторения задачи. Например,
recur:daily
будет создавать новую задачу каждый день. -
Due: Определяет крайний срок выполнения задачи. Один из ключевых моментов — правильная настройка этого атрибута, чтобы гарантировать появление новых экземпляров задачи в нужное время.
-
Until: Указывает крайний срок, после которого повторяющиеся экземпляры больше не будут создаваться.
-
Wait: Задает время, в течение которого задача будет скрыта от отчетов до наступления момента её актуальности.
-
Mask: Используется для отслеживания текущего экземпляра повторяющейся задачи.
Повторяющиеся задачи также зависят от конфигурации Taskwarrior, которая включает в себя параметр rc.recurrence.limit
, позволяющий определять, сколько экземпляров задачи может существовать предустановлено.
Пример
Рассмотрим простую задачу: ежедневное выполнение физической активности. Вы хотите, чтобы задача появлялась каждый день в 7 утра и оставалась видимой до конца дня. Настройки в Taskwarrior могут выглядеть следующим образом:
task add "Physical exercise" recur:daily due:eod wait:7:00
Здесь каждая новая задача будет появляться в 7:00 утра, и будет оставаться видимой до конца дня, после чего будет создан новый экземпляр на следующий день.
Применение
Теперь, когда мы разобрались с теорией и рассмотрели пример, давайте обсудим, как применить эти знания для решения вашей проблемы — исчезновения повторяющейся задачи после завершения.
В основном проблема заключается в том, что в вашем случае вы завершаете задачу, и она исчезает из отчетов, но новый экземпляр не создается автоматически. Чтобы это исправить, важно:
-
Проверьте атрибут
due
: Убедитесь, что вы указываете разумное значение, которое будет обновляться корректно при создании нового экземпляра. -
Используйте
until
иwait
: Эти атрибуты могут быть необязательными, но они помогают контролировать видимость задачи и устанавливать конечный срок для создания новых экземпляров. -
Понимание mask и интервала проверок Taskwarrior: Убедитесь, что сервер или ваше приложение Taskwarrior обновляется и проводит проверку регулярно, чтобы создать новый экземпляр задачи своевременно.
-
Обратите внимание на конфиги Taskwarrior: Настройте
rc.recurrence.limit
, если требуется создание нескольких экземпляров вперед.
Если у вас всё ещё возникают трудности с появлением новых задач и корректной работой повторяющихся настроек, рекомендуется приступать к отладке:
-
Запускайте команду
task diagnostics
для диагностики возможных ошибок в системе. -
Проверяйте настройки локальной конфигурации Taskwarrior и убедитесь, что условия выполнения и временные зоны настроены корректно.
-
Продумайте использование
task sync
, если вы используете Taskserver для синхронизации задач между устройствами.
Заключение
Оптимальное использование возможностей Taskwarrior для управления повторяющимися задачами требует тщательной настройки и тестирования. Несмотря на кажущуюся сложность, понимание ключевых компонентов и правильная их конфигурация позволяют автоматизировать множество ежедневных процессов. Кроме того, следуя описанным выше рекомендациям и уделяя внимание деталям, вы сможете эффективно управлять повторяющимися задачами, минимизируя временные потери и увеличивая продуктивность.