Add start dashboard
This commit is contained in:
@@ -10,6 +10,41 @@
|
||||
<summary>Библиотека логирования</summary>
|
||||
<description>В проекте используется Timber (timber.log.Timber) для всех целей логирования. Он предоставляет простой и расширяемый API для логирования.</description>
|
||||
</DECISION>
|
||||
<DECISION id="tech_i18n" status="defined">
|
||||
<summary>Интернационализация (Мультиязычность)</summary>
|
||||
<description>
|
||||
Приложение должно поддерживать несколько языков для обеспечения доступности для глобальной аудитории.
|
||||
Реализация будет основана на стандартном механизме ресурсов Android.
|
||||
- Все строки, видимые пользователю, должны быть вынесены в файл `app/src/main/res/values/strings.xml`. Использование жестко закодированных строк в коде запрещено.
|
||||
- Язык по умолчанию - русский (ru). Файл `strings.xml` будет содержать русские строки.
|
||||
- Для поддержки других языков (например, английского - en) будут создаваться соответствующие каталоги ресурсов (например, `app/src/main/res/values-en/strings.xml`).
|
||||
- В коде для доступа к строкам необходимо использовать ссылки на ресурсы (например, `R.string.app_name`).
|
||||
</description>
|
||||
</DECISION>
|
||||
<DECISION id="tech_ui_framework" status="defined">
|
||||
<summary>UI Framework</summary>
|
||||
<description>Пользовательский интерфейс приложения построен с использованием Jetpack Compose, современного декларативного UI-фреймворка от Google. Это обеспечивает быстрое создание, гибкость и поддержку динамических данных.</description>
|
||||
</DECISION>
|
||||
<DECISION id="tech_di" status="defined">
|
||||
<summary>Внедрение зависимостей (Dependency Injection)</summary>
|
||||
<description>Для управления зависимостями в проекте используется Hilt. Он интегрирован с компонентами Jetpack и упрощает внедрение зависимостей в Android-приложениях.</description>
|
||||
</DECISION>
|
||||
<DECISION id="tech_navigation" status="defined">
|
||||
<summary>Навигация</summary>
|
||||
<description>Навигация между экранами (Composable-функциями) реализована с помощью библиотеки Navigation Compose, которая является частью Jetpack Navigation.</description>
|
||||
</DECISION>
|
||||
<DECISION id="tech_async" status="defined">
|
||||
<summary>Асинхронные операции</summary>
|
||||
<description>Все асинхронные операции, такие как сетевые запросы или доступ к базе данных, выполняются с использованием Kotlin Coroutines. Это обеспечивает эффективное управление фоновыми задачами без блокировки основного потока.</description>
|
||||
</DECISION>
|
||||
<DECISION id="tech_networking" status="defined">
|
||||
<summary>Сетевое взаимодействие</summary>
|
||||
<description>Для взаимодействия с API сервера Homebox используется стек технологий: Retrofit для создания типобезопасных HTTP-клиентов, OkHttp в качестве HTTP-клиента и Moshi для парсинга JSON.</description>
|
||||
</DECISION>
|
||||
<DECISION id="tech_database" status="defined">
|
||||
<summary>Локальное хранилище</summary>
|
||||
<description>Для кэширования данных на устройстве используется библиотека Room. Она предоставляет абстракцию над SQLite и обеспечивает надежное локальное хранение данных.</description>
|
||||
</DECISION>
|
||||
</TECHNICAL_DECISIONS>
|
||||
|
||||
<FEATURES>
|
||||
@@ -112,6 +147,92 @@
|
||||
</FUNCTIONALITY>
|
||||
</FEATURE>
|
||||
</FEATURES>
|
||||
|
||||
<UI_SPECIFICATIONS>
|
||||
<SCREEN id="screen_dashboard" status="defined">
|
||||
<summary>Главный экран "Панель управления"</summary>
|
||||
<description>
|
||||
Экран предоставляет обзорную информацию и быстрый доступ к основным функциям. Компоновка должна быть чистой и интуитивно понятной, аналогично веб-интерфейсу HomeBox.
|
||||
</description>
|
||||
<LAYOUT>
|
||||
<COMPONENT type="TopAppBar">
|
||||
<description>Верхняя панель приложения. Содержит иконку навигационного меню (гамбургер), название/логотип приложения и иконку для запуска сканера (например, QR-кода).</description>
|
||||
</COMPONENT>
|
||||
<COMPONENT type="NavigationDrawer">
|
||||
<description>Боковое навигационное меню. Открывается по нажатию на иконку в TopAppBar. Содержит основные разделы: Главная, Локации, Поиск, Профиль, Инструменты, а также кнопку "Выйти".</description>
|
||||
</COMPONENT>
|
||||
<COMPONENT type="MainContent" orientation="vertical" scrollable="true">
|
||||
<description>Основная область контента. Содержит несколько информационных блоков.</description>
|
||||
<SUB_COMPONENT type="Section" title="Быстрая статистика">
|
||||
<description>Сетка из 2x2 карточек, отображающих ключевые метрики.</description>
|
||||
<ELEMENT type="Card" name="Общая стоимость" />
|
||||
<ELEMENT type="Card" name="Всего вещей" />
|
||||
<ELEMENT type="Card" name="Общее количество местоположений" />
|
||||
<ELEMENT type="Card" name="Всего меток" />
|
||||
</SUB_COMPONENT>
|
||||
<SUB_COMPONENT type="Section" title="Недавно добавлено">
|
||||
<description>Горизонтально прокручиваемый список карточек недавно добавленных предметов. Если предметов нет, отображается сообщение "Элементы не найдены".</description>
|
||||
</SUB_COMPONENT>
|
||||
<SUB_COMPONENT type="Section" title="Места хранения">
|
||||
<description>Сетка или гибкий контейнер (FlowRow) с кликабельными чипами, представляющими местоположения. Нажатие на чип ведет к списку предметов в этом местоположении.</description>
|
||||
</SUB_COMPONENT>
|
||||
<SUB_COMPONENT type="Section" title="Метки">
|
||||
<description>Сетка или гибкий контейнер (FlowRow) с кликабельными чипами, представляющими метки. Нажатие на чип ведет к списку предметов с этой меткой.</description>
|
||||
</SUB_COMPONENT>
|
||||
</COMPONENT>
|
||||
<COMPONENT type="FloatingActionButton_or_PrimaryButton" icon="add">
|
||||
<description>
|
||||
Вместо плавающей кнопки (FAB), в референсе используется заметная кнопка "Создать" в навигационном меню. Мы будем придерживаться этого подхода для консистентности. Эта кнопка инициирует процесс создания нового предмета.
|
||||
</description>
|
||||
</COMPONENT>
|
||||
</LAYOUT>
|
||||
</SCREEN>
|
||||
|
||||
<!-- [ЯКОРЬ] Начало спецификации UI для экрана Локаций. Добавлено на основе референса HomeBox. -->
|
||||
<SCREEN id="screen_locations_list" status="defined">
|
||||
<summary>Экран "Локации"</summary>
|
||||
<description>
|
||||
Отображает вертикальный список всех доступных местоположений. Экран должен быть интегрирован в общую структуру навигации приложения (TopAppBar, NavigationDrawer).
|
||||
</description>
|
||||
<LAYOUT>
|
||||
<COMPONENT type="TopAppBar">
|
||||
<description>Общая верхняя панель приложения, аналогичная экрану "Панель управления".</description>
|
||||
</COMPONENT>
|
||||
<COMPONENT type="NavigationDrawer">
|
||||
<description>Общее боковое меню навигации.</description>
|
||||
</COMPONENT>
|
||||
<COMPONENT type="MainContent" orientation="vertical">
|
||||
<description>Основная область контента, занимающая все доступное пространство под TopAppBar.</description>
|
||||
<SUB_COMPONENT type="Header" title="Локации">
|
||||
<description>Заголовок экрана, расположенный вверху основной области контента.</description>
|
||||
</SUB_COMPONENT>
|
||||
<SUB_COMPONENT type="List" name="LocationsList">
|
||||
<description>Вертикальный, прокручиваемый список (LazyColumn) всех местоположений.</description>
|
||||
<ELEMENT type="ListItem">
|
||||
<description>Элемент списка, представляющий одно местоположение. Состоит из иконки (например, 'place') и названия местоположения. Весь элемент является кликабельным и ведет на экран со списком предметов в данной локации.</description>
|
||||
</ELEMENT>
|
||||
</SUB_COMPONENT>
|
||||
</COMPONENT>
|
||||
<COMPONENT type="FloatingActionButton" icon="add">
|
||||
<description>
|
||||
Плавающая кнопка действия, расположенная в правом нижнем углу. Позволяет пользователю добавить новое местоположение. В веб-версии для этого используются иконки в углу, но FAB является более нативным паттерном для Android.
|
||||
</description>
|
||||
</COMPONENT>
|
||||
</LAYOUT>
|
||||
<USER_INTERACTIONS>
|
||||
<INTERACTION>
|
||||
<action>Нажатие на элемент списка локаций</action>
|
||||
<reaction>Осуществляется навигация на экран списка инвентаря, отфильтрованного по выбранной локации.</reaction>
|
||||
</INTERACTION>
|
||||
<INTERACTION>
|
||||
<action>Нажатие на FloatingActionButton</action>
|
||||
<reaction>Открывается диалоговое окно или новый экран для создания нового местоположения.</reaction>
|
||||
</INTERACTION>
|
||||
</USER_INTERACTIONS>
|
||||
</SCREEN>
|
||||
<!-- [ЯКОРЬ] Конец спецификации UI для экрана Локаций. -->
|
||||
|
||||
</UI_SPECIFICATIONS>
|
||||
|
||||
<IMPLEMENTATION_MAP>
|
||||
<!-- Use Cases -->
|
||||
|
||||
Reference in New Issue
Block a user