Отличное форматирование

This commit is contained in:
2026-05-26 14:59:25 +03:00
parent 2b139a18b3
commit e3a615cb50
49 changed files with 1294 additions and 501 deletions

View File

@@ -0,0 +1,80 @@
@startuml fig_01_start_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