@startuml fig_02_vault_lifecycle scale 3 title Wallenc — жизненный цикл storage (IStorage) внутри IVault; журнал синхронизации end title skinparam defaultFontName "DejaVu Sans" skinparam state { BackgroundColor #F8F8F8 BorderColor #333333 } skinparam noteBackgroundColor #E3F2FD skinparam noteBorderColor #1565C0 state "(Б) Список storage\n(LocalVault или VaultBrowser)" as List List --> Create : Создать storage\n(FAB) Create --> List : Storage создан List --> EncryptDlg : Включить шифрование storage EncryptDlg --> Encrypting : Подтверждение, ключ state Encrypting { state "Шифрование + метаданные Room" as EncWork } Encrypting --> List : Готово note right of Encrypting Запись в журнал sync (проект): UUID **storage** → очередь группы DbStorageSyncGroup end note List --> OpenDlg : Открыть зашифрованный storage OpenDlg --> Opened : Ключ верный OpenDlg --> List : Отмена / неверный ключ state Opened { state "Файлы, секреты, 2FA\n(StorageHome)" as Browse } Opened --> List : Закрыть / заблокировать storage List --> RenameDel : Переименовать / удалить storage RenameDel --> List : Подтверждение note bottom of List **Синхронизация:** изменения в **storage** пишутся в журнал; StorageSyncEngine согласует группы storage по ревизиям (зашифрованное содержимое, без ключей). end note @enduml