Черновик ПЗ
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
@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
|
||||
Reference in New Issue
Block a user