Скорректированы подписи скриншотов
This commit is contained in:
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user