#import "../includes/common.typ": pz-fig

== Обзор программного продукта Wallenc

Wallenc – мобильное приложение для Android: `VaultsManager` объединяет vault (один локальный и удалённые по OAuth), внутри каждого vault пользователь управляет storage с файлами и клиентским шифрованием. Продукт не использует собственный сервер; взаимодействие с облаком выполняется через API внешних провайдеров после OAuth.

== Техническое задание

Полный текст технического задания на разрабатываемое ПО (производственная практика, ООО НМФ «Нейротех»):

#import "tz-pdf.typ": pz-embed-tz-pdf
#pz-embed-tz-pdf()

== Программа и методика испытаний

Испытания проводятся на устройстве или эмуляторе 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")

=== Открытие и закрытие зашифрованного storage

1. Для зашифрованного storage выберите «Открыть».
2. Введите пароль. При успехе содержимое storage доступно для просмотра (`IUnlockManager`).
3. Используйте «Закрыть» для блокировки storage.

#pz-fig("fig_07_open_close_dialog.jpg", [Диалог открытия и закрытия], "fig-07-rp")

=== Переименование и удаление

Долгое нажатие или меню storage → «Переименовать» / «Удалить». Подтвердите действие в диалоге.

#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).
