Files
email-assistant/openspec/changes/local-calendar-tasks/proposal.md
T

70 lines
4.0 KiB
Markdown
Raw 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: Локальные сервисы календаря (Radicale) и задач (Vikunja)
## Why
Для синхронизации календаря и задач с Android-телефоном нужны локальные
сервисы (без облака). Пользователь хочет:
- **Календарь** — нативная синхронизация с Android
- **Трекер задач** — с веб-UI и API, чтобы веб-интерфейс почты мог
создавать задачи кнопкой
- Всё **локально** (bigbox), без облачных зависимостей
Сейчас календаря и трекера задач **нет** (проверено: порт 5232 свободен,
образы radicale/vikunja не установлены). Порт 8080 занят NetBox.
## What Changes
Два новых сервиса в `/opt/hermes/email-assistant/`:
### 1. Radicale (CalDAV) — календарь + задачи VTODO
- **Порт:** 5232 (свободен)
- **Путь:** `/opt/hermes/email-assistant/radicale/`
- **Способ:** Python pip (лёгкий, systemd) ИЛИ docker
- **Назначение:** CalDAV-сервер для:
- Календаря «Личный» + «Рабочий» (синхронизация с Android через DAVx5)
- Задач (VTODO) — тоже через CalDAV
- **Конфиг:** лёгкий, single-user (правки через UI/файл)
### 2. Vikunja (трекер задач) — веб-UI + REST API + Android app
- **Порт:** 3456 (дефолт Vikunja, свободен)
- **Путь:** `/opt/hermes/email-assistant/vikunja/`
- **Способ:** docker compose (postgres + vikunja)
- **Назначение:**
- Трекер задач с веб-интерфейсом (kanban/список)
- **REST API** — для кнопки «Создать задачу» из веб-интерфейса почты
- Android-приложение (нативный клиент Vikunja)
- **БД:** PostgreSQL (docker), данные в volume
### Общие решения
- **Доступ:** 127.0.0.1 (локально) + опционально через Caddy reverse proxy
на поддомене (Caddy — контейнер на vps02, см. STATUS.md «Ресурсы проекта»)
- **Порты:** 5232 (radicale), 3456 (vikunja) — не конфликтуют с 8080 (NetBox)
- **Авторизация:** Radicale — HTTP Basic (логин/пароль в конфиге);
Vikunja — своя (регистрация/логин, API-токены)
## Capabilities
### New Capabilities
- `calendar-caldav`: Локальный CalDAV-сервер (Radicale) для календаря и
задач, синхронизация с Android через DAVx5
- `task-tracker-vikunja`: Локальный трекер задач Vikunja с веб-UI и REST API,
интеграция с веб-интерфейсом почты через API-токен
### Modified Capabilities
<!-- нет -->
## Impact
- **Новые сервисы:** `/opt/hermes/email-assistant/radicale/`, `/opt/hermes/email-assistant/vikunja/`
- **Порты:** 5232 (radicale), 3456 (vikunja) — новые
- **Данные:** календари/задачи будут храниться локально
- **Документация:** обновить README/STATUS (порты, логины, как синхронизировать)
- **Риск:** Vikunja тянет Postgres (память/диск); Radicale — минимален
## Rollback
1. **Radicale:** `systemctl stop radicale` + удалить `/opt/hermes/email-assistant/radicale/`
2. **Vikunja:** `docker compose -f /opt/hermes/email-assistant/vikunja/docker-compose.yml down -v`
(удалить контейнеры и volume с данными) + убрать `/opt/hermes/email-assistant/vikunja/`
3. Убрать упоминания из README/STATUS
4. Вернуть порты в исходное состояние (оба сейчас свободны, конфликтов нет)