Как известно если у вас в руках молоток - любая проблема видится гвоздем.
Вот и я люблю писать код - соответственно для любой проблемы ищу решение через написание кода. А может быть ищу себе проблемы, чтобы можно было кода пописать
Мне нравится obsidian, управлял своими проектами тут. Поэтому когда начал курс по системному саморазвитию и коснулись темы инвестирования и учета времени захотел прикрутить сюда же и учет инвестированного времени.
До того как задумался учетом времени - вел проекты с помощью трелло плагина в obsidian:
- несколько колонок с проектами, в которых отсортированные по приоритету карточки(старался их делать размером с 1-2 помодорки)
- одна колонка(сегодня)
- каждый вечер наполнял эту колонку из других проектных колонок
- следил чтобы кол-во помодорок на следующий день было ± такое чтобы можно было выполнить
Когда понадобилось учитывать инвестированное время - понял, что трелло-плагин не подходит от слова совсем(может он на самом деле подходит и это все можно сделать, просто я не знаю как). Стал придумывать как сделать учет.
Сначала продолжил проекты как было, но завел отдельный googleSheet со временем, под каждый проект своя страница, с колонками-подпроектами. Где указывал дату начала/конца, сколько всего, из этого рассчитывалось сколько нужно в день, так же каждый день отмечал в часах сколько инвестировал.
(пример взят из страницы учета времени по курсу Системное Саморазвитие)
Был прикольный график, который показывал мне какой у меня прогресс, я опаздываю или норм иду:
Так же была страница с агрегацией по всем моим проектам, которая показывала сколько я сделал за сегодня и по какому проекту и сколько мне еще осталось сделать:
В целом все было норм. Но:
- Графики мне постоянно не нужны
- Идти в отдельную GoogleSheet мне не хотелось, хотелось в одном месте это все
- Шаблон на проект получился очень уже геморный и не особо гибкий(если я хотел проекты с пропусками, или нерегулярные, или повторяющиеся - стройная картина не особо вырисовывалась)
- Трелло-плагин был довольно убогий и не получалось в трелло-карточки запихнуть что хотелось
Далее узнал, что в Obsidian есть плагин Dataview, который умеет индексировать содержимое страниц и позволяет строить запросы к этому индексу.
Хм, ну так это идеально что нужно, если есть язык запросов к содержимому то можно делать почти все что угодно.
А потом еще оказалось что у страниц в Obsidian можно поддерживает FrontMatter свойства. Ну вообще здорово, не придется выдумывать свой формат и как-то криво размещать его на страницах, все уже есть.
Так появился шаблон под каждый проект, если мне нужен проект, просто создаю новую страницу с такими полями:
Тут отмечаю проект в работе или нет, сколько запланировано в день, сколько сделано за сегодня, приоритет для сортировки, и reportKey - это для экспорта(коснусь позже). Это для случая если проект простой и у меня нет подпроектов.
Если же я хочу репортить подпроекты - я делаю вот такой формат
Где doneToday заменено на набор |название подпроекта|_sub_done_today.
В поля doneToday или subdone я делаю +1 каждый раз когда закончилась помодорка.
Далее, с помощью возможностей Dataview вывожу список всех активных проектов и прогресс по ним за сегодня
Это что касается на день. И обычно меня только дневные вопросы и интересуют. Но нужно сохранять все эти данные для статистики.
И тут довольно просто:
-
свойства о том, сколько я сделал за сегодня хранятся в Markdown во Frontmatter формате, это yaml, который легко парсить
-
написал немного когда который проходит по всем проектным файлам и вытягивает сколько помодорок сделано за сегодня и с помощью reportKey раскидывает их по нужным категориям, дополнительно конвертирует помодорки в часы, так у меня есть возможность в будущем менять длительность помодорок и все будет работать
-
этот код запускается автоматически каждый день в 21:00 (я завершаю все активности в 20:30 и не сижу за компом после)
- добавляет результат за сегодня в .csv файл
- чистит doneToday во всех файлах
-
итоговый файл получается вот таким
-
Просто складируется, время от времени ради интереса я строю какой-то график по этим данным. Или делаю репорт об инвестированном времени в канал группы