Files
homebox_lens/tasks/work_order_login_screen.xml

59 lines
4.7 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="UTF-8"?>
<WORK_ORDER>
<META>
<ID>WO-LOGIN-REFACTOR</ID>
<TITLE>[ARCHITECT -> DEV] Рефакторинг экрана входа и логики первого запуска</TITLE>
<DESCRIPTION>Цель этой задачи - изменить логику запуска приложения. Экран входа (SetupScreen) должен появляться только при первом запуске, когда учетные данные еще не сохранены. В последующие запуски пользователь должен сразу попадать на главный экран (Dashboard). Также необходимо улучшить визуальное оформление экрана входа.</DESCRIPTION>
<CREATED_BY>architect-agent</CREATED_BY>
<ASSIGNED_TO>developer-agent</ASSIGNED_TO>
<STATUS>pending</STATUS>
</META>
<TASK_BREAKDOWN>
<STEP n="1" file="app/src/main/java/com/homebox/lens/ui/screen/setup/SetupViewModel.kt">
<ACTION>Добавить public-метод для синхронной проверки наличия учетных данных.</ACTION>
<DETAILS>
Добавьте в класс `SetupViewModel` новый метод `fun areCredentialsSaved(): Boolean`.
Этот метод должен синхронно проверять, сохранены ли учетные данные в `CredentialsRepository`.
Текущая реализация `getCredentials()` асинхронна, что не подходит для быстрой проверки в `NavGraph`.
Вам может потребоваться изменить `CredentialsRepository` для поддержки синхронной проверки (например, используя `SharedPreferences` напрямую).
</DETAILS>
</STEP>
<STEP n="2" file="app/src/main/java/com/homebox/lens/ui/screen/splash/SplashScreen.kt">
<ACTION>Создать новый `SplashScreen`.</ACTION>
<DETAILS>
Создайте новый Composable-экран `SplashScreen.kt`.
Этот экран будет новой точкой входа в `NavGraph`.
Он будет использовать `SetupViewModel` для вызова `areCredentialsSaved()` и, в зависимости от результата, немедленно навигироваться либо на `Screen.Setup`, либо на `Screen.Dashboard`.
Пока идет проверка, на экране должен отображаться `CircularProgressIndicator`.
</DETAILS>
</STEP>
<STEP n="3" file="app/src/main/java/com/homebox/lens/navigation/NavGraph.kt">
<ACTION>Обновить `NavGraph` для использования `SplashScreen`.</ACTION>
<DETAILS>
Измените `startDestination` в `NavHost` на `Screen.Splash.route`.
Добавьте `composable` для `SplashScreen`.
В `SplashScreen` вызовите `navController.navigate` с очисткой бэкстека (`popUpTo(Screen.Splash.route) { inclusive = true }`), чтобы пользователь не мог вернуться на сплэш-экран.
</DETAILS>
</STEP>
<STEP n="4" file="app/src/main/java/com/homebox/lens/ui/screen/setup/SetupScreen.kt">
<ACTION>Улучшить UI экрана `SetupScreen`.</ACTION>
<DETAILS>
Текущий UI слишком прост. Добавьте заголовок, иконку приложения, и более приятное расположение элементов.
Используйте `Card` для группировки полей ввода. Добавьте `Spacer` для лучшего отступа.
Кнопку "Connect" сделайте более заметной.
</DETAILS>
</STEP>
</TASK_BREAKDOWN>
<ACCEPTANCE_CRITERIA>
<CRITERION>При первом запуске приложения открывается `SetupScreen`.</CRITERION>
<CRITERION>После успешного ввода данных и входа, при последующих перезапусках приложения открывается `DashboardScreen`, минуя `SetupScreen`.</CRITERION>
<CRITERION>`SetupScreen` имеет улучшенный и более привлекательный дизайн.</CRITERION>
</ACCEPTANCE_CRITERIA>
</WORK_ORDER>