mirror of
https://gitverse.ru/kpa39l/email-assistant.git
synced 2026-09-29 09:15:09 +00:00
openspec: contacts-caldav-server — двусторонний синк (правки с телефона → в базу)
This commit is contained in:
@@ -27,10 +27,14 @@
|
||||
`--caldav-user`, `--caldav-pass` (или env CALDAV_PASS). По умолчанию
|
||||
синк выключен. Проверка: `python3 scripts/contacts_extractor.py --help`
|
||||
показывает все флаги; без `--sync-caldav` поведение прежнее.
|
||||
- [ ] 2.4 ETag-конфликты: при PUT с If-Match и ответе 412 — записать
|
||||
`caldav-sync.log` (контакт, conflict) и продолжить. Проверка: ручной
|
||||
тест — изменить vCard на сервере, запустить синк, увидеть conflict
|
||||
в логе.
|
||||
- [ ] 2.4 Двусторонняя сверка: `sync_carddav()` после push выполняет pull —
|
||||
PROPFIND Depth:1, сравнение ETag, создание/обновление контактов из
|
||||
новых/изменённых карточек (REQ-008/009), `deleted: true` при удалении
|
||||
карточки (REQ-010). Проверка: см. 3.5-3.8 (reverse-pull тесты).
|
||||
- [ ] 2.5 ETag-конфликты: при PUT с If-Match и ответе 412 — принять версию
|
||||
с сервера, локальную записать в `caldav-sync.log` (`conflict_local`),
|
||||
продолжить (REQ-011). Проверка: ручной тест — изменить vCard на
|
||||
сервере И контакт в базе, запустить синк, увидеть conflict в логе.
|
||||
|
||||
## 3. Сквозной тест sync
|
||||
|
||||
@@ -44,6 +48,14 @@
|
||||
синк обновляет карточку (TEL появился, ETag изменился).
|
||||
- [ ] 3.4 `--prune-caldav`: удалить контакт из contacts.json → карточка
|
||||
удалена с сервера.
|
||||
- [ ] 3.5 **Reverse pull:** вручную (curl PUT) изменить vCard на сервере →
|
||||
повторный синк обновляет контакт в contacts.json.
|
||||
- [ ] 3.6 **Новая карточка на сервере:** curl PUT новой vCard → синк создаёт
|
||||
контакт в базе.
|
||||
- [ ] 3.7 **Удаление на сервере:** curl DELETE vCard → контакт получает
|
||||
`deleted: true` в базе.
|
||||
- [ ] 3.8 **Конфликт:** изменить и vCard (curl), и контакт в базе → синк
|
||||
применяет версию с сервера, локальная в caldav-sync.log.
|
||||
|
||||
## 4. Интеграция в cron и документация
|
||||
|
||||
@@ -61,4 +73,5 @@
|
||||
- [ ] V1: `curl -X PROPFIND -u estorozhenko:PASS http://127.0.0.1:5232/estorozhenko/Контакты/` → 207 + addressbook
|
||||
- [ ] V2: после синка количество vCard в адресной книге == числу контактов с email в contacts.json
|
||||
- [ ] V3: повторный синк → 0 новых карточек
|
||||
- [ ] V4: `python3 scripts/contacts_extractor.py --sync-caldav` из cron-обёртки завершается кодом 0 и пишет caldav-sync.log
|
||||
- [ ] V4: правка контакта на сервере (curl PUT vCard) → контакт в contacts.json обновлён после синка
|
||||
- [ ] V5: `python3 scripts/contacts_extractor.py --sync-caldav` из cron-обёртки завершается кодом 0 и пишет caldav-sync.log
|
||||
Reference in New Issue
Block a user