openspec: contacts-caldav-server — двусторонний синк (правки с телефона → в базу)

This commit is contained in:
2026-09-13 16:07:27 +00:00
parent de07fae246
commit 17252ebfa9
4 changed files with 120 additions and 36 deletions
@@ -25,8 +25,15 @@
- на каждый контакт — один `.vcf` в адресной книге
- при обновлении контакта — PUT с новым ETag
- удаление контакта, которого больше нет в базе — DELETE (опционально, см. design)
3. **Остаётся локальная база contacts.json** — она продолжает быть источником
истины (дедупликация, трекинг processed_uids), а Radicale — цель синка.
3. **Двусторонний синк** — правки, сделанные с телефона (DAVx5) в адресной
книге, синхронизируются обратно в `contacts.json`:
- изменённые карточки → обновление контакта
- новые карточки → новые контакты
- удалённые карточки → soft-delete (`deleted: true`) в базе
- конфликт (изменено и в почте, и на телефоне) → приоритет телефону,
локальная версия сохраняется в лог, данные не теряются
4. **Локальная база contacts.json** остаётся источником истины (дедупликация,
трекинг processed_uids) и хранит состояние синка (ETag карточки).
## Capabilities
@@ -48,10 +55,8 @@
параллельном редактировании на телефоне решаются по ETag (см. design).
- **Документация:** обновить README/STATUS (как подключить адресную книгу
на Android, порты).
- **Риски:** двусторонняя синхронизация (правка на телефоне → обратно в базу)
— НЕ в скоупе этого change (односторонний синк: почта → сервер).
Односторонний синк без конфликтов: только PUT новых/обновлённых, DELETE
только явно помеченных.
- **Риски:** двусторонний синк требует разрешения конфликтов (в change —
приоритет телефону + лог локальной версии, см. REQ-011).
## Rollback