Скорректированы подписи скриншотов
This commit is contained in:
@@ -47,23 +47,23 @@ Wallenc – мобильное приложение для Android: `VaultsManag
|
||||
2. Введите пароль. При успехе содержимое storage доступно для просмотра (`IUnlockManager`).
|
||||
3. Используйте «Закрыть» для блокировки storage.
|
||||
|
||||
#pz-fig("fig_07_open_close_dialog.jpg", [Диалог открытия и закрытия], "fig-07-rp")
|
||||
#pz-fig("fig_07_open_close_dialog.jpg", [Диалог открытия зашифрованного storage], "fig-07-rp")
|
||||
|
||||
=== Переименование и удаление
|
||||
|
||||
Долгое нажатие или меню storage → «Переименовать» / «Удалить». Подтвердите действие в диалоге.
|
||||
Долгое нажатие или меню storage → «Переименовать» / «Удалить» (рис. @fig-08-rp). Подтвердите действие в диалоге.
|
||||
|
||||
#pz-fig("fig_08_rename_delete_dialog.jpg", [Диалог переименования и удаления], "fig-08-rp")
|
||||
#pz-fig("fig_08_rename_delete_dialog.jpg", [Меню storage: переименование и удаление], "fig-08-rp")
|
||||
|
||||
=== Удалённые vault и Яндекс
|
||||
|
||||
1. Перейдите на экран удалённых vault.
|
||||
2. Нажмите «+» → выберите авторизацию Яндекс.
|
||||
3. Пройдите OAuth в браузере/встроенном окне.
|
||||
4. После успеха добавьте удалённое хранилище.
|
||||
1. Перейдите на экран удалённых vault (рис. @fig-09-rp).
|
||||
2. Нажмите «+» и в диалоге выберите провайдера «Яндекс» (рис. @fig-10-rp).
|
||||
3. Пройдите OAuth в браузере или встроенном окне (последовательность – рис. @fig-20, гл. 1).
|
||||
4. После успеха аккаунт отображается в списке удалённых vault.
|
||||
|
||||
#pz-fig("fig_09_remote_vaults.jpg", [Экран удалённых vault], "fig-09-rp")
|
||||
#pz-fig("fig_10_yandex_oauth.jpg", [OAuth Яндекс], "fig-10-rp")
|
||||
#pz-fig("fig_09_remote_vaults.jpg", [Экран удалённых vault: подключённый аккаунт], "fig-09-rp")
|
||||
#pz-fig("fig_10_yandex_oauth.jpg", [Диалог «Добавить хранилище»: выбор провайдера Яндекс], "fig-10-rp")
|
||||
|
||||
=== Секреты и 2FA внутри storage
|
||||
|
||||
@@ -78,4 +78,4 @@ Wallenc – мобильное приложение для Android: `VaultsManag
|
||||
|
||||
=== Фоновые задачи
|
||||
|
||||
На экране задач отображаются операции шифрования и синхронизации. Уведомления информируют о завершении (см. рис. 12 и 13 в гл. 5).
|
||||
На экране задач отображаются операции шифрования и синхронизации (рис. @fig-12, гл. 5). Уведомления информируют о прогрессе и завершении (рис. @fig-13, гл. 5).
|
||||
|
||||
Binary file not shown.
@@ -29,13 +29,13 @@
|
||||
| 04 | `fig_04_domain_class.png` | PlantUML | ready | гл. 2.3.2, 4.2.1 | Классы `:domain`. **PUML** | fig-04 |
|
||||
| 05 | `fig_05_local_vaults.jpg` | Скриншот UI | ready | гл. 3.4, 5, прил. Б, В | Список storage (локальный vault) | fig-05 |
|
||||
| 06 | `fig_06_encrypt_dialog.jpg` | Скриншот UI | ready | гл. 3.4, 4.1.1, 5, прил. Б, В | Диалог включения шифрования | fig-06 |
|
||||
| 07 | `fig_07_open_close_dialog.jpg` | Скриншот UI | ready | гл. 3.4, 4.1.2, прил. Б, В | Открытие/закрытие storage | fig-07 |
|
||||
| 08 | `fig_08_rename_delete_dialog.jpg` | Скриншот UI | ready | гл. 3.4, 5, прил. Б, В | Переименование или удаление | fig-08 |
|
||||
| 09 | `fig_09_remote_vaults.jpg` | Скриншот UI | ready | гл. 3.4, 4.2.3, прил. Б, В | Удалённые vault | fig-09 |
|
||||
| 10 | `fig_10_yandex_oauth.jpg` | Скриншот UI | ready | гл. 1, 3.4, 4.2.3, прил. Б, В | OAuth Яндекс | fig-10 |
|
||||
| 07 | `fig_07_open_close_dialog.jpg` | Скриншот UI | ready | гл. 3.4, 4.1.2, прил. Б, В | Диалог открытия зашифрованного storage | fig-07 |
|
||||
| 08 | `fig_08_rename_delete_dialog.jpg` | Скриншот UI | ready | гл. 3.4, прил. Б, В | Меню storage: переименование и удаление | fig-08 |
|
||||
| 09 | `fig_09_remote_vaults.jpg` | Скриншот UI | ready | гл. 1, 3.4, 4.2.3, 5, прил. Б, В | Удалённые vault: подключённый аккаунт Яндекс | fig-09 |
|
||||
| 10 | `fig_10_yandex_oauth.jpg` | Скриншот UI | ready | гл. 1, 3.4, 4.2.3, 5, прил. Б, В | Диалог «Добавить хранилище»: выбор провайдера Яндекс (не OAuth) | fig-10 |
|
||||
| 11 | `fig_11_room_schema.png` | PlantUML | ready | гл. 2.3.2, 4.2.2, прил. В | Схема Room. **PUML** | fig-11 |
|
||||
| 12 | `fig_12_tasks_screen.jpg` | Скриншот UI | ready | гл. 5.2.3, прил. В | Экран задач | fig-12 |
|
||||
| 13 | `fig_13_tasks_notification.jpg` | Скриншот UI | ready | гл. 5.2.3, прил. В | Уведомление о задаче | fig-13 |
|
||||
| 12 | `fig_12_tasks_screen.jpg` | Скриншот UI | ready | гл. 5, прил. Б, В | Экран «Очередь задач» | fig-12 |
|
||||
| 13 | `fig_13_tasks_notification.jpg` | Скриншот UI | ready | гл. 5, прил. Б, В | Уведомление Android о синхронизации хранилищ | fig-13 |
|
||||
| 14 | `fig_14_context_system.png` | PlantUML | ready | гл. 1.2.1, 2.1.4 | Контекстная диаграмма. **PUML** | fig-14 |
|
||||
| 15 | `fig_15_bpmn_vault.png` | PlantUML | ready | гл. 2.1.3 | BPMN жизненный цикл **storage** (шифрование storage, не vault). **PUML** | fig-15 |
|
||||
| 16 | `fig_16_dfd_level0.png` | PlantUML | ready | гл. 2.2 | DFD-0. **PUML** | fig-16 |
|
||||
@@ -44,7 +44,6 @@
|
||||
| 19 | `fig_19_clean_architecture.png` | PlantUML | ready | гл. 2.3, 4.3 | Clean Architecture. **PUML** | fig-19 |
|
||||
| 20 | `fig_20_oauth_sequence.png` | PlantUML | ready | гл. 1.5.2, 4.2.3 | OAuth sequence. **PUML** | fig-20 |
|
||||
| 21 | `fig_21_encrypt_flow.png` | PlantUML | ready | гл. 4.1.1, 5.2.1 | Блок-схема шифрования. **PUML** | fig-21 |
|
||||
| 22 | `fig_22_cjm_vault.png` | PlantUML | ready | гл. 3.3.2 | CJM. **PUML** | fig-22 |
|
||||
| 23 | `fig_23_module_deps.png` | PlantUML | ready | гл. 4.3 | Зависимости Gradle. **PUML** | fig-23 |
|
||||
| 24 | `fig_24_domain_class_manual.png` | Ручная схема | ready | гл. 4 (ИИ) | Диаграмма классов `:domain` до Cursor; исх. `Domain_Диаграмма_классов.png` | fig-24 |
|
||||
| 27 | `fig_27_gradle_domain_test.png` | Gradle | ready | гл. 5.2.1 | `:domain:test` SUCCESS | fig-27 |
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 31 KiB |
@@ -52,7 +52,7 @@
|
||||
|
||||
==== Удалённые хранилища и авторизация во внешних провайдерах
|
||||
|
||||
Реализован поток OAuth 2.0 для Яндекса @oauth-rfc6749 @yandex-oauth (рис. @fig-20).
|
||||
Подключение удалённого vault выполняется через экран удалённых vault (рис. @fig-09, @fig-10) и поток OAuth 2.0 для Яндекса @oauth-rfc6749 @yandex-oauth (рис. @fig-20).
|
||||
|
||||
#pz-fig("fig_20_oauth_sequence.png", [Диаграмма последовательности OAuth Яндекс], "fig-20")
|
||||
|
||||
|
||||
@@ -38,12 +38,6 @@
|
||||
[US-6], [Храню TOTP и текстовые секреты в storage], [`TwoFaTotpTest`, UI IT],
|
||||
) <tbl-userstory>
|
||||
|
||||
=== Customer Journey Map
|
||||
|
||||
CJM сценария «защитить и открыть storage» представлен на рисунке @fig-22.
|
||||
|
||||
#pz-fig("fig_22_cjm_vault.png", [Customer Journey Map: защита и открытие storage], "fig-22")
|
||||
|
||||
=== Пользовательский сценарий
|
||||
|
||||
Диаграммы потоков: старт приложения и фоновая синхронизация (@fig-01), жизненный цикл storage (@fig-02), навигация Main: LocalVault / удалённые vault → storage (@fig-03).
|
||||
@@ -54,20 +48,20 @@ CJM сценария «защитить и открыть storage» предст
|
||||
|
||||
== Проработка прототипа и особенности дизайна
|
||||
|
||||
Интерфейс реализован на Jetpack Compose @smith-jetpack-compose @compose-docs. Экраны локальных и удалённых vault, диалоги шифрования, OAuth, а также разделы текстовых секретов и 2FA внутри storage показаны на рис. @fig-05–@fig-10 и @fig-33–@fig-34 (подробно – приложение В и руководство пользователя в приложении Б).
|
||||
Интерфейс реализован на Jetpack Compose @smith-jetpack-compose @compose-docs. Экраны локального и удалённого vault, диалоги работы со storage, а также разделы текстовых секретов и 2FA показаны на рис. @fig-05–@fig-10 и @fig-33–@fig-34 (подробно – приложение В и руководство пользователя в приложении Б). Поток OAuth 2.0 для Яндекса – на рис. @fig-20 (гл. 1).
|
||||
|
||||
#pz-fig("fig_05_local_vaults.jpg", [Список storage в локальном vault (экран «локальные vault»)], "fig-05")
|
||||
#pz-fig("fig_06_encrypt_dialog.jpg", [Диалог включения шифрования], "fig-06")
|
||||
#pz-fig("fig_07_open_close_dialog.jpg", [Диалог открытия и закрытия storage], "fig-07")
|
||||
#pz-fig("fig_08_rename_delete_dialog.jpg", [Диалог переименования и удаления], "fig-08")
|
||||
#pz-fig("fig_09_remote_vaults.jpg", [Экран удалённых vault], "fig-09")
|
||||
#pz-fig("fig_10_yandex_oauth.jpg", [Добавление удалённого vault, OAuth Яндекс], "fig-10")
|
||||
#pz-fig("fig_07_open_close_dialog.jpg", [Диалог открытия зашифрованного storage], "fig-07")
|
||||
#pz-fig("fig_08_rename_delete_dialog.jpg", [Меню storage: переименование и удаление], "fig-08")
|
||||
#pz-fig("fig_09_remote_vaults.jpg", [Экран удалённых vault: подключённый аккаунт Яндекс], "fig-09")
|
||||
#pz-fig("fig_10_yandex_oauth.jpg", [Диалог «Добавить хранилище»: выбор провайдера Яндекс], "fig-10")
|
||||
#pz-fig("fig_33_storage_secrets_2fa.jpg", [Экран storage: разделы «Секреты» и «2FA»], "fig-33")
|
||||
#pz-fig("fig_34_2fa_single_token.jpg", [Экран 2FA: список с одним TOTP-токеном], "fig-34")
|
||||
|
||||
== Требования к эргономике и доступности
|
||||
|
||||
Интерфейс должен отображать состояние каждого storage без перехода в технические экраны: признаки «зашифровано», «открыто» (`IUnlockManager.openedStorages`), «выполняется операция» (`isBusy`). Диалоги деструктивных действий (удаление storage, отключение шифрования) требуют явного подтверждения. Тексты сообщений об ошибках OAuth и неверном ключе формулируются нейтрально, без раскрытия внутренних путей и имён файлов.
|
||||
Интерфейс должен отображать состояние каждого storage без перехода в технические экраны: признаки «зашифровано», «открыто» (`IUnlockManager.openedStorages`), «выполняется операция» (`isBusy`). Диалоги и меню деструктивных действий (удаление storage, отключение шифрования; см. @fig-08) требуют явного подтверждения. Тексты сообщений об ошибках OAuth и неверном ключе формулируются нейтрально, без раскрытия внутренних путей и имён файлов.
|
||||
|
||||
== Вывод
|
||||
|
||||
|
||||
@@ -56,6 +56,13 @@
|
||||
|
||||
#pz-fig("fig_31_gradle_connected_test.png", [Gradle connectedDebugAndroidTest], "fig-31")
|
||||
|
||||
=== Экран задач и уведомления
|
||||
|
||||
Очередь фоновых операций (шифрование, синхронизация, тестовые задачи) и системное уведомление о прогрессе показаны на рис. @fig-12 и @fig-13.
|
||||
|
||||
#pz-fig("fig_12_tasks_screen.jpg", [Экран «Очередь задач»], "fig-12")
|
||||
#pz-fig("fig_13_tasks_notification.jpg", [Уведомление Android о синхронизации хранилищ], "fig-13")
|
||||
|
||||
== Ручное и UI-тестирование
|
||||
|
||||
Ручные прогоны выполнялись по чек-листу T-7…T-12 на эмуляторе и физическом устройстве.
|
||||
@@ -67,9 +74,9 @@
|
||||
[T-7], [Создать storage в LocalVault], [OK], [Storage в списке], [@fig-05],
|
||||
[T-8], [Включить шифрование], [OK], [Статус encrypted], [@fig-06],
|
||||
[T-9], [Открыть/закрыть storage], [OK], [Контент только при открытом storage], [@fig-07],
|
||||
[T-10], [OAuth Яндекс], [OK], [Запись в `DbYandexAccount`], [@fig-10],
|
||||
[T-11], [Фоновая задача шифрования], [OK], [Прогресс на экране задач], [рис. 12],
|
||||
[T-12], [Уведомление о завершении], [OK], [Notification отображён], [рис. 13],
|
||||
[T-10], [OAuth Яндекс], [OK], [Аккаунт на @fig-09, выбор провайдера @fig-10, OAuth @fig-20], [@fig-09],
|
||||
[T-11], [Фоновая задача шифрования], [OK], [Прогресс на экране задач], [@fig-12],
|
||||
[T-12], [Уведомление о завершении], [OK], [Notification отображён], [@fig-13],
|
||||
) <tbl-testres>
|
||||
|
||||
#pz-fig("fig_32_manual_test_checklist.png", [Чек-лист ручного UI-тестирования], "fig-32")
|
||||
|
||||
@@ -1,23 +0,0 @@
|
||||
@startuml fig_22_cjm_vault
|
||||
!include _gost-theme.inc.puml
|
||||
scale 3
|
||||
|
||||
|Этап|
|
||||
|Осознание|
|
||||
|Выбор|
|
||||
|Использование|
|
||||
|Лояльность|
|
||||
|
||||
|Действия|
|
||||
|Понимает риск облака|
|
||||
|Создаёт storage, включает шифрование storage|
|
||||
|Открывает storage, работает с файлами|
|
||||
|Синхронизирует storage без передачи ключей|
|
||||
|
||||
|Ожидания|
|
||||
|Данные не читаются провайдером|
|
||||
|Простой ввод пароля|
|
||||
|Быстрый доступ|
|
||||
|Надёжная синхронизация|
|
||||
|
||||
@enduml
|
||||
File diff suppressed because one or more lines are too long
@@ -65,14 +65,16 @@
|
||||
|
||||
#pz-appendix-title[Скриншоты пользовательского интерфейса]
|
||||
|
||||
#pz-fig("fig_05_local_vaults.jpg", [Локальные vault], "fig-05-app")
|
||||
#pz-fig("fig_06_encrypt_dialog.jpg", [Диалог шифрования], "fig-06-app")
|
||||
#pz-fig("fig_07_open_close_dialog.jpg", [Открытие и закрытие storage], "fig-07-app")
|
||||
#pz-fig("fig_08_rename_delete_dialog.jpg", [Переименование и удаление], "fig-08-app")
|
||||
#pz-fig("fig_09_remote_vaults.jpg", [Удалённые vault], "fig-09-app")
|
||||
#pz-fig("fig_10_yandex_oauth.jpg", [OAuth Яндекс], "fig-10-app")
|
||||
Дубли иллюстраций интерфейса из гл. 1, 3 и 5 (@fig-05–@fig-10, @fig-12, @fig-13, @fig-33, @fig-34) приведены ниже в полном размере.
|
||||
|
||||
#pz-fig("fig_05_local_vaults.jpg", [Список storage в локальном vault], "fig-05-app")
|
||||
#pz-fig("fig_06_encrypt_dialog.jpg", [Диалог включения шифрования], "fig-06-app")
|
||||
#pz-fig("fig_07_open_close_dialog.jpg", [Диалог открытия зашифрованного storage], "fig-07-app")
|
||||
#pz-fig("fig_08_rename_delete_dialog.jpg", [Меню storage: переименование и удаление], "fig-08-app")
|
||||
#pz-fig("fig_09_remote_vaults.jpg", [Экран удалённых vault: аккаунт Яндекс], "fig-09-app")
|
||||
#pz-fig("fig_10_yandex_oauth.jpg", [Диалог выбора провайдера Яндекс], "fig-10-app")
|
||||
#pz-fig("fig_11_room_schema.png", [Схема Room], "fig-11-app")
|
||||
#pz-fig("fig_12_tasks_screen.jpg", [Экран задач], "fig-12-app")
|
||||
#pz-fig("fig_13_tasks_notification.jpg", [Уведомление о задачах], "fig-13-app")
|
||||
#pz-fig("fig_33_storage_secrets_2fa.jpg", [Экран storage: секреты и 2FA], "fig-33-app")
|
||||
#pz-fig("fig_34_2fa_single_token.jpg", [Экран 2FA с токеном], "fig-34-app")
|
||||
#pz-fig("fig_12_tasks_screen.jpg", [Экран «Очередь задач»], "fig-12-app")
|
||||
#pz-fig("fig_13_tasks_notification.jpg", [Уведомление Android о синхронизации хранилищ], "fig-13-app")
|
||||
#pz-fig("fig_33_storage_secrets_2fa.jpg", [Экран storage: разделы «Секреты» и «2FA»], "fig-33-app")
|
||||
#pz-fig("fig_34_2fa_single_token.jpg", [Экран 2FA: список с одним TOTP-токеном], "fig-34-app")
|
||||
|
||||
Reference in New Issue
Block a user