4.9 KiB
4.9 KiB
Верстак — синхронизация, backup и активность
1. Синхронизация
Цель:
- рабочая машина и домашняя машина имеют один vault;
- обе работают offline;
- сервер используется для обмена и восстановления;
- при потере локальных файлов можно восстановиться с сервера.
2. Sync server
verstak-server — простой Go HTTP server.
Функции:
- API key auth;
- device registry;
- operation log;
- blob storage by sha256;
- snapshots;
- restore manifest;
- deleted item retention.
Пример server storage:
server-data/
db.sqlite
blobs/
ab/
cd/
abcdef...blob
snapshots/
3. API MVP
GET /api/v1/health
POST /api/v1/device/register
POST /api/v1/sync/push
POST /api/v1/sync/pull
POST /api/v1/blobs/upload
GET /api/v1/blobs/{sha256}
GET /api/v1/restore/manifest
Auth:
Authorization: Bearer <api_key>
4. Push/pull
Client push:
{
"device_id": "device-uuid",
"ops": [],
"blobs": ["sha256..."]
}
Server response:
{
"accepted": true,
"missing_blobs": ["sha256..."]
}
Client pull:
{
"device_id": "device-uuid",
"since_revision": 42
}
Response:
{
"server_revision": 50,
"ops": []
}
5. Восстановление
Сценарий:
- Установить Верстак.
- Ввести server URL.
- Ввести API key/recovery key.
- Нажать Restore.
- Скачать manifest.
- Скачать blobs.
- Применить ops.
- Пересобрать SQLite/FTS.
- Проверить целостность.
6. Конфликты
Не пытаться магически мержить всё.
Если заметка изменилась на двух устройствах:
nginx.md
nginx.conflict-home-2026-05-30.md
Если docx изменился на двух устройствах:
dogovor.docx
dogovor.conflict-work-2026-05-30.docx
UI:
Конфликт: nginx.md
[Открыть обе версии] [Оставить локальную] [Оставить серверную] [Склеить вручную]
7. Sync не равен backup
Если удалить файл на одной машине, sync может удалить везде.
Поэтому сервер должен иметь:
- tombstones;
- trash retention;
- note versions;
- daily snapshots;
- integrity check;
- manual export.
Retention example:
retention:
deleted_items_days: 90
note_versions_days: 180
daily_snapshots_days: 30
8. Activity tracking
Верстак не должен быть шпионской программой. Activity tracking должен быть явным и настраиваемым.
Источники MVP
- opened node;
- edited note;
- added file;
- changed file through app;
- launched action.
Источники later
- file watcher/scanner;
- active window title;
- browser URL extension;
- sshkeeper integration;
- idle detection.
9. Как понять, что пользователь работал 3 часа
Верстак не “знает точно”. Он предлагает версию.
Пример:
Похоже, ты работал по делу “ООО Ромашка / Сайт”:
14:05–17:12, примерно 3ч.
Основания:
- открывалась админка сайта;
- изменялся catalog.xlsx;
- запускался sshkeeper profile romashka-vps;
- создавался screenshot-result.png;
- открывалась заметка “Витрина”.
[Записать 3ч] [Исправить] [Игнорировать]
10. Группировка активности
Правило MVP:
- события одного дела;
- разрыв меньше 20 минут — один интервал;
- разрыв больше 20 минут — новый интервал;
- итог округлить до 5/10/15 минут;
- показать evidence.
11. Privacy modes
Minimal
- only inside Verstak;
- actions;
- manual worklog.
Work
-
- file scanner/watcher;
-
- files opened from Verstak;
-
- sshkeeper events.
Full
-
- active windows;
-
- browser URLs;
-
- idle detection.
По умолчанию не включать Full.
12. Client report
Из журнала работ можно собрать отчёт:
По сайту ООО “Ромашка” было сделано:
- обновлена витрина сайта;
- внесены изменения в каталог товаров;
- обновлены баннеры;
- проверено отображение результата.
Ориентировочное время: 3 часа.
MVP — шаблонный отчёт без ИИ.