## Purpose Создание задач через Radicale как VTODO-объектов в календаре «Задачи» (CalDAV). Используется обработчиком `task` в чейндже email-classification-handlers вместо Vikunja. Упрощает архитектуру: Radicale — единственный сервис календаря и задач. ## ADDED Requirements ### Requirement: Задача создаётся как VTODO в Radicale Задача MUST создаваться как VTODO-объект (CalDAV) в календаре «Задачи» Radicale по адресу `https://cal.nixg.ru/estorozhenko/Задачи/`, а не через Vikunja API. #### Scenario: Обработчик task - **WHEN** `email_handlers.py` обрабатывает письмо с тегом `task` - **THEN** в календаре «Задачи» Radicale создаётся VTODO (PUT по адресу `https://cal.nixg.ru/estorozhenko//.ics`) ### Requirement: Поля VTODO из письма VTODO MUST содержать: SUMMARY — тема письма, DESCRIPTION — ссылка на файл `email.md` письма. При наличии даты/дедлайна в классификации — DTSTART/DUE. #### Scenario: Создание VTODO из письма с задачей - **WHEN** `email_handlers.py` создаёт задачу из письма с тегом `task` - **THEN** VTODO имеет SUMMARY=тема письма, DESCRIPTION=путь к email.md, и (если указано) DTSTART/DUE из классификации ### Requirement: Идемпотентность задач Radicale Повторный запуск обработчика MUST NOT создавать дубликат VTODO для одного письма (поле `handled_task: true` в frontmatter после успешного создания). #### Scenario: Повторный запуск обработчика task - **WHEN** `email_handlers.py` запущен повторно на письме с уже созданной задачей (`handled_task: true`) - **THEN** новый VTODO не создаётся ### Requirement: Совместимость с jtx board / DAVx5 Созданный VTODO MUST быть читаемым стандартными CalDAV-клиентами (jtx board, DAVx5), т.е. валидным VCALENDAR с VTODO компонентом. #### Scenario: Чтение задачи в jtx board - **WHEN** пользователь открывает календарь «Задачи» в jtx board (через DAVx5) - **THEN** VTODO отображается как задача с SUMMARY и DESCRIPTION