Files
hermes 7550aff102 feat: классификация писем Qwen3:8b + обработчики (urgent→TG, task→VTODO, meeting→VEVENT)
- mail_archive.py: фикс вложений himalaya --dir → --downloads-dir; attachments/ только при has_attachment; идемпотентно
- email_classifier.py: Qwen3:8b (Ollama) → теги info/urgent/task/meeting в frontmatter email.md
- email_handlers.py: urgent→Telegram (Bot API+SOCKS5), task→Radicale VTODO, meeting→Radicale VEVENT; handled_* идемпотентность; --dry-run
- .gitignore: игнор *.env.bak*
- openspec: чейндж email-classification-handlers (в работе)
- STATUS/TODO/WALKTHROUGH: прогресс сессии, подводные камни Radicale (http.client, Depth:1, формат дат)
2026-09-13 20:35:58 +00:00

61 lines
4.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Proposal: Убрать Vikunja, задачи через Radicale (VTODO)
## Why
В проекте email-assistant были развёрнуты два сервиса для календаря/задач:
- **Radicale** (CalDAV/CardDAV) — календари Личный/Рабочий/Задачи
- **Vikunja** (трекер задач) — отдельная сущность на :3456, tasks.nixg.ru
Это лишняя сложность: Radicale из коробки поддерживает **VTODO** (задачи через
CalDAV), а календарь «Задачи» в Radicale уже создан. На Android задачи из
CalDAV-VTODO прекрасно синхронизирует **jtx board** (и DAVx5), не требуя
отдельного трекера.
Vikunja добавляет:
- лишний docker-контейнер + PostgreSQL
- отдельный API, токен, админа (не созданы — блокер)
- отдельный домен tasks.nixg.ru (reverse proxy, сертификат)
- дублирование логики «создать задачу» (Vikunja API вместо простого VTODO)
- усложнение чейнджа классификации (обработчик `task` зависел от несуществующего токена)
Убираем Vikunja из проекта. Задачи — через Radicale (VTODO в календаре «Задачи»).
Это упрощает архитектуру, убирает лишнюю сущность, не теряя функциональности.
## What Changes
1. **Обработчик задач переключается на Radicale VTODO** — в чейндже
`email-classification-handlers` обработчик `task` создаёт не задачу в Vikunja,
а **VTODO в календаре «Задачи» Radicale** (CalDAV PUT). Тема письма → SUMMARY,
ссылка на письмо → DESCRIPTION.
2. **Vikunja выводится из эксплуатации** — остановить и удалить контейнеры
`vikunja` и `vikunja-db`, убрать docker-compose.yml, .env (или пометить
deprecated), освободить порт 3456.
3. **tasks.nixg.ru** — если reverse proxy уже настроен, убрать/закомментировать;
если нет — не настраивать. Radicale остаётся единственным CalDAV-сервером.
4. **Обновить документацию** — STATUS.md, TODO.md, design чейнджей убрать Vikunja,
зафиксировать «задачи = Radicale VTODO, jtx board».
5. **TODO/общий список** — задача «Vikunja» закрыта как «не нужна»,
«Caddy tasks.nixg.ru» — отменена.
## Capabilities
### New Capabilities
- `radicale-tasks`: создание задач (VTODO) в Radicale через CalDAV — заменяет
Vikunja для обработчика `task` в email-classification-handlers.
### Modified Capabilities
- (нет) — Vikunja не является capability проекта; это внешний сервис, который
выводится из эксплуатации. Radicale-tasks — новое поведение.
## Impact
- **Docker**: остановить/удалить `vikunja`, `vikunja-db` (compose в
`/opt/hermes/email-assistant/vikunja/`)
- **Скрипты**: `email_handlers.py` (в чейндже classification) — обработчик `task`
→ Radicale VTODO вместо Vikunja API
- **Радикал**: календарь «Задачи» уже существует, туда пишутся VTODO
- **Документация**: STATUS.md, TODO.md, design.md (local-calendar-tasks,
email-classification-handlers) — убрать Vikunja, зафиксировать Radicale VTODO
- **Caddy (если настроен)**: убрать/закомментировать tasks.nixg.ru
- **TODO.md**: закрыть задачи Vikunja (2, 3, 6 — «создать задачу» теперь Radicale)