Автогенерация задач с сортировкой на основе TODO.md
Почему это требует внимания?¶
Я практически во всех своих проектах использую TODO.md для постановки задач и отслеживания прогресса.
Помощь при возвращении к проекту
Ведение подобных трекеров очень помогло мне вернутся даже к этому проекту. Несмотря на то, что последний коммит был около 8-ми месяцев назад, я смог беглым взглядом пройтись не по кодовой базе, а по собственному .md файлику, и сразу вспомнить что я делал, что не сделал, что хотел сделать. И бонусом - сразу же намечен план дальнейших действий.
Я стараюсь комментировать
Первая версия, которая пока что ушла на второй план¶
Изначально я думал получить генерацию вот такого вида:
| Текущие задачи | Выполено |
|---|---|
| Сделать выбор из списка веток, куда делать коммит для синхронизации | Адаптировать скрипт format_all_md_files под новый pre-commit, потому что он отправляет в скрипт файлы как аргументы |
| Поправить чтобы бэк отдавал не имена файлов, а названия разделов как это указано в mkdocs.yml | В синхронизации api\sync\sevice.py настроить пуши не в main, а в отдельную ветку, которую я потом буду мёржить с main веткой. |
| Сделать чтобы поддерживало пути по типу "FastAPI/Главная" | Сделать докерфайл для сборки |
| Поправить переходики, чтобы оно шло прям по Категория/раздел/подраздел, сейчас это падает с ошибкой | Добавить чекбокс, чтобы сделать заметку без кода |
| Сделать вкладку по типу inbox, для входящих но пока неотсортированных фрагментов | Сделать функцию, которая отдаёт dict: |
| Сделать модалку с выгрузкой. Можно скачать как архив с документацией. Либо же добавить из выгрузки, чтобы всё само подтягивалось, создавались нужные разделы и подразделы. | Написать статейку про приложение которое я написал, добавить ссылочки на них в readme отдельным блоком |
По итогу не очень понравилось как это всё читается и организованно в целом, когда там довольно много записей и пунктов.
Я даже написал скрипт, который через библиотеку преобразует списки в форматированные таблички в таком формате:
from tabulate import tabulate
md_table = tabulate(data, headers=["Текущие задачи", "Выполнено"], tablefmt="github")
Более простой вариант списком мне показался более простым и понятным. Добавил сортировку на выполненные и текущие, чтобы было проще ориентироваться, и не сильно запариваться при форматировании.
Открыл для себя удобную функцию в itertools
В процессе поиска более элегантного решения, даже удалось познакомиться с
for u_task, c_task in zip_longest(uncompleted, completed, fillvalue=""):
if u_task or c_task:
result_table.append([u_task, c_task])
Позволила очень быстро привести списки к формату столбцов. Поддерживает fillvalue, для заполнения тех, что не влезли. Невероятно удобно!
Я сделал по образу и подобию как с mkdocs.yml и парсинге/создании новых разделов:
-
Добавил в свою среду разработки vscode соответствующую задачу
-
В settings.json добавил отслеживание сохранения файла
-
Сделал эндпоинт на будущее, чтобы например привязать его к синхронизации с TODO.md или основной с GitHub
Посмотреть результат можно во вкладке Прогресс добавления функционала
Но функционал преобразования к таблице я не стал вырезать, наверняка с генерацией табличек можно ещё много всего придумать, из идей уже есть:
- Вкладка со статистикой например по количеству добавленных в каждый раздел записей
- Удобное оглавление или вроде того
В общем, наверняка пригодится!
А пока что сосредоточусь на создании другого функционала.