openspec: contacts-caldav-server — двусторонний синк (правки с телефона → в базу)
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user