52 lines
2.6 KiB
Markdown
52 lines
2.6 KiB
Markdown
# Calendar CalDAV — Requirement Spec (Delta)
|
||
|
||
> New capability: `calendar-caldav`
|
||
> Change: `local-calendar-tasks`
|
||
|
||
## ADDED Requirements
|
||
|
||
### Requirement: REQ-CAL-001: Локальный CalDAV-сервер
|
||
|
||
**MUST** — на bigbox должен работать CalDAV-сервер (Radicale), доступный по
|
||
HTTP на 127.0.0.1:5232, предоставляющий календари и задачи по стандарту CalDAV.
|
||
|
||
#### Scenario: Radicale отвечает
|
||
|
||
**GIVEN** Radicale запущен
|
||
**WHEN** выполняется `curl -i -X PROPFIND http://127.0.0.1:5232/ -u login:pass`
|
||
**THEN** ответ содержит HTTP 207 (Multi-Status) и список коллекций.
|
||
|
||
### Requirement: REQ-CAL-002: Календарь и задачи через CalDAV
|
||
|
||
**MUST** — Radicale должен поддерживать как календари (VEVENT), так и задачи
|
||
(VTODO), чтобы Android-клиент (DAVx5) синхронизировал и календарь, и задачи.
|
||
|
||
#### Scenario: Создание события
|
||
|
||
**GIVEN** настроенный календарь пользователя
|
||
**WHEN** клиент (DAVx5 на Android / curl) создаёт VEVENT через `PUT`
|
||
**THEN** событие сохраняется в Radicale и доступно для чтения обратно.
|
||
|
||
### Requirement: REQ-CAL-003: Синхронизация с Android
|
||
|
||
**MUST** — сервер должен поддерживать стандарт CalDAV (RFC 4791) для
|
||
двусторонней синхронизации с Android через DAVx5 (или аналог).
|
||
|
||
#### Scenario: Двусторонняя синхронизация
|
||
|
||
**GIVEN** DAVx5 настроен на Android с URL Radicale
|
||
**WHEN** создаётся событие на телефоне
|
||
**THEN** оно появляется на bigbox (Radicale) и наоборот (событие из Radicale
|
||
доступно на телефоне).
|
||
|
||
### Requirement: REQ-CAL-004: Безопасность
|
||
|
||
**MUST** — Radicale доступен только локально (127.0.0.1) или через TLS-прокси
|
||
(Caddy) с авторизацией; не должен быть открыт в интернет без TLS.
|
||
|
||
#### Scenario: Доступ снаружи
|
||
|
||
**GIVEN** Caddy reverse proxy настроен для Radicale
|
||
**WHEN** Android подключается по https://<домен>/
|
||
**THEN** соединение TLS + аутентификация работают; без Caddy доступ
|
||
ограничен локальным интерфейсом. |