#import "../includes/common.typ": pz-fig == Обзор программного продукта Wallenc Wallenc — мобильное приложение для Android: `VaultsManager` объединяет vault (один локальный и удалённые по OAuth), внутри каждого vault пользователь управляет storage с файлами и клиентским шифрованием. Продукт не использует собственный сервер; взаимодействие с облаком выполняется через API внешних провайдеров после OAuth. == Техническое задание (выдержка) *Наименование:* мобильное приложение для защищённого хранения пользовательских данных (Wallenc). *Основание для разработки:* производственная практика, задание ООО НМФ «Нейротех», направление 09.03.04. *Назначение:* обеспечение конфиденциального хранения пользовательских данных на недоверенных хранилищах. *Требования к функциям:* см. табл. @tbl-req (глава 1). *Требования к надёжности:* устойчивость к прерыванию операций шифрования; восстановление метаданных из Room. *Стадии разработки:* аналитический этап; реализация ядра; тестирование; оформление документации. *Порядок контроля:* модульные и ручные испытания по программе (ниже). == Программа и методика испытаний Испытания проводятся на устройстве или эмуляторе Android. Матрица сценариев — табл. @tbl-testplan. Критерий приёмки: отсутствие блокирующих дефектов по сценариям T-1–T-6. == Отчёт о результатах испытаний Результаты приведены в табл. @tbl-testres (глава 5). Модульные тесты криптографии — пройдены. == Руководство пользователя === Установка Установите APK сборки debug/release, полученной от разработчика, или соберите проект из репозитория GitLab ЮФУ. Разрешите доступ к файловой системе при запросе системы. === Первый запуск и storage в локальном vault 1. Откройте приложение Wallenc. 2. На экране «локальные vault» (список storage в единственном LocalVault) нажмите «+» для создания storage. 3. Укажите имя storage и подтвердите создание. #pz-fig("fig_05_local_vaults.jpg", [Экран списка storage (локальный vault)], "fig-05-rp") === Шифрование storage 1. Выберите storage в списке. 2. Выберите действие «Включить шифрование». 3. Введите пароль (мастер-ключ) и подтвердите. *Важно:* без пароля восстановление невозможно. #pz-fig("fig_06_encrypt_dialog.jpg", [Диалог включения шифрования], "fig-06-rp") === Открытие и закрытие зашифрованного vault 1. Для зашифрованного vault выберите «Открыть». 2. Введите пароль. При успехе содержимое доступно для просмотра. 3. Используйте «Закрыть» для блокировки. #pz-fig("fig_07_open_close_dialog.jpg", [Диалог открытия и закрытия], "fig-07-rp") === Переименование и удаление Долгое нажатие или меню vault → «Переименовать» / «Удалить». Подтвердите действие в диалоге. #pz-fig("fig_08_rename_delete_dialog.jpg", [Диалог переименования и удаления], "fig-08-rp") === Удалённые vault и Яндекс 1. Перейдите на экран удалённых vault. 2. Нажмите «+» → выберите авторизацию Яндекс. 3. Пройдите OAuth в браузере/встроенном окне. 4. После успеха добавьте удалённое хранилище. #pz-fig("fig_09_remote_vaults.jpg", [Экран удалённых vault], "fig-09-rp") #pz-fig("fig_10_yandex_oauth.jpg", [OAuth Яндекс], "fig-10-rp") === Секреты и 2FA внутри storage 1. Откройте storage (после создания или из списка). 2. На экране storage перейдите в разделы «Секреты» и «2FA». #pz-fig("fig_33_storage_secrets_2fa.jpg", [Экран storage: секреты и 2FA], "fig-33-rp") 3. В разделе 2FA добавьте TOTP-токен; на экране отображается сгенерированный код. #pz-fig("fig_34_2fa_single_token.jpg", [Экран 2FA с одним токеном], "fig-34-rp") === Фоновые задачи На экране задач отображаются операции шифрования и синхронизации. Уведомления информируют о завершении (см. рис. 12 и 13 в гл. 5).