81 lines
2.9 KiB
Plaintext
81 lines
2.9 KiB
Plaintext
@startuml wallenc_01_start_and_sync
|
||
' Увеличенный растр для вставки в отчёт (Word / печать)
|
||
scale 3
|
||
title
|
||
Wallenc — старт приложения и параллельная синхронизация
|
||
(проектное решение; фоновая синхронизация к реализации)
|
||
end title
|
||
|
||
skinparam defaultFontName "DejaVu Sans"
|
||
skinparam activity {
|
||
BackgroundColor #F8F8F8
|
||
BorderColor #333333
|
||
DiamondBackgroundColor #E8F4FF
|
||
}
|
||
skinparam noteBackgroundColor #FFFDE7
|
||
skinparam noteBorderColor #F9A825
|
||
|
||
start
|
||
|
||
:Старт приложения (Android);
|
||
|
||
:Инициализация Room,
|
||
загрузка метаданных vault;
|
||
|
||
if (Есть сохранённые vault?) then (нет)
|
||
:Экран «первый запуск» /
|
||
создание локального vault;
|
||
else (да)
|
||
endif
|
||
|
||
if (Нужен удалённый провайдер
|
||
и нет учётной записи?) then (да)
|
||
:Экран удалённых vault /
|
||
OAuth Яндекс;
|
||
else (нет)
|
||
endif
|
||
|
||
partition "**Основной поток (UI)**" {
|
||
:(A) Главный экран:
|
||
список локальных и удалённых vault;
|
||
:Действия пользователя
|
||
(открыть, зашифровать, содержимое…);
|
||
}
|
||
|
||
fork
|
||
partition "**Фон: синхронизация (по таймеру)**" #E8F5E9 {
|
||
note right
|
||
**Проектная механика (не реализовано в коде)**
|
||
• Таймер / WorkManager Android
|
||
• Таблица в Room: UUID **storage_id**
|
||
для очереди синхронизации
|
||
• Для каждого storage — **история коммитов**
|
||
(аналог git): дерево/цепочка снимков
|
||
• Сервис: сравнение коммитов
|
||
локально vs удалённо → вычисление diff
|
||
• Применение изменений →
|
||
**одинаковое зашифрованное содержимое**
|
||
на клиенте и у провайдера
|
||
(ключи на сервер не передаются)
|
||
end note
|
||
:По срабатыванию таймера:
|
||
запуск **SyncService** / Worker;
|
||
:Чтение из БД списка
|
||
**UUID storage** из очереди;
|
||
while (Есть необработанный UUID?) is (да)
|
||
:Загрузить историю **коммитов**
|
||
для этого Storage (локально + у провайдера);
|
||
:Найти расхождения
|
||
(common ancestor / merge);
|
||
:Свести содержимое
|
||
к единому состоянию;
|
||
:Обновить очередь /
|
||
метаданные синхронизации;
|
||
endwhile (нет)
|
||
}
|
||
end fork
|
||
|
||
stop
|
||
|
||
@enduml
|