191 lines
18 KiB
XML
191 lines
18 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
||
<PROJECT_STRUCTURE>
|
||
<module name="app" type="android_app">
|
||
<purpose_summary>Основной модуль приложения, содержит UI и точки входа в приложение.</purpose_summary>
|
||
<coherence_note>Этот модуль зависит от data и domain; обеспечивает разделение UI от бизнес-логики через ViewModels и UseCases.</coherence_note>
|
||
<file name="app/src/main/java/com/homebox/lens/MainActivity.kt" status="implemented" spec_ref_id="entry_point">
|
||
<purpose_summary>Главная и единственная Activity приложения, содержит NavHost.</purpose_summary>
|
||
<coherence_note>Интегрирован с Hilt для DI; навигация через Compose Navigation.</coherence_note>
|
||
</file>
|
||
<file name="app/src/main/java/com/homebox/lens/MainApplication.kt" status="implemented" spec_ref_id="app_context">
|
||
<purpose_summary>Класс Application, используется для настройки внедрения зависимостей Hilt.</purpose_summary>
|
||
</file>
|
||
<file name="app/src/main/java/com/homebox/lens/di/AppModule.kt" status="implemented" spec_ref_id="di_app">
|
||
<purpose_summary>Модуль Hilt для зависимостей уровня приложения.</purpose_summary>
|
||
</file>
|
||
<file name="app/src/main/java/com/homebox/lens/navigation/NavGraph.kt" status="implemented" spec_ref_id="nav_graph">
|
||
<purpose_summary>Определяет навигационный граф для всего приложения с использованием Jetpack Compose Navigation.</purpose_summary>
|
||
</file>
|
||
<file name="app/src/main/java/com/homebox/lens/navigation/Screen.kt" status="implemented" spec_ref_id="nav_screen">
|
||
<purpose_summary>Определяет маршруты для всех экранов в приложении в виде запечатанного класса.</purpose_summary>
|
||
</file>
|
||
<file name="app/src/main/java/com/homebox/lens/ui/screen/dashboard/DashboardScreen.kt" status="implemented" spec_ref_id="screen_dashboard">
|
||
<purpose_summary>UI для экрана панели управления.</purpose_summary>
|
||
<coherence_note>Использует Compose для declarative UI; интегрирован с ViewModel для данных.</coherence_note>
|
||
</file>
|
||
<file name="app/src/main/java/com/homebox/lens/ui/screen/dashboard/DashboardViewModel.kt" status="implemented" spec_ref_id="screen_dashboard">
|
||
<purpose_summary>ViewModel для экрана панели управления, обрабатывает бизнес-логику.</purpose_summary>
|
||
</file>
|
||
<file name="app/src/main/java/com/homebox/lens/ui/screen/inventorylist/InventoryListScreen.kt" status="stub" spec_ref_id="screen_inventory_list">
|
||
<purpose_summary>UI для экрана списка инвентаря.</purpose_summary>
|
||
</file>
|
||
<file name="app/src/main/java/com/homebox/lens/ui/screen/inventorylist/InventoryListViewModel.kt" status="implemented" spec_ref_id="screen_inventory_list">
|
||
<purpose_summary>ViewModel для экрана списка инвентаря.</purpose_summary>
|
||
</file>
|
||
<file name="app/src/main/java/com/homebox/lens/ui/screen/itemdetails/ItemDetailsScreen.kt" status="stub" spec_ref_id="screen_item_details">
|
||
<purpose_summary>UI для экрана сведений о товаре.</purpose_summary>
|
||
</file>
|
||
<file name="app/src/main/java/com/homebox/lens/ui/screen/itemdetails/ItemDetailsViewModel.kt" status="implemented" spec_ref_id="screen_item_details">
|
||
<purpose_summary>ViewModel для экрана сведений о товаре.</purpose_summary>
|
||
</file>
|
||
<file name="app/src/main/java/com/homebox/lens/ui/screen/itemedit/ItemEditScreen.kt" status="stub" spec_ref_id="screen_item_edit">
|
||
<purpose_summary>UI для экрана редактирования товара.</purpose_summary>
|
||
</file>
|
||
<file name="app/src/main/java/com/homebox/lens/ui/screen/itemedit/ItemEditViewModel.kt" status="implemented" spec_ref_id="screen_item_edit">
|
||
<purpose_summary>ViewModel для экрана редактирования товара.</purpose_summary>
|
||
</file>
|
||
<file name="app/src/main/java/com/homebox/lens/ui/screen/labelslist/LabelsListScreen.kt" status="stub" spec_ref_id="screen_labels_list">
|
||
<purpose_summary>UI для экрана списка меток.</purpose_summary>
|
||
</file>
|
||
<file name="app/src/main/java/com/homebox/lens/ui/screen/labelslist/LabelsListViewModel.kt" status="implemented" spec_ref_id="screen_labels_list">
|
||
<purpose_summary>ViewModel для экрана списка меток.</purpose_summary>
|
||
</file>
|
||
<file name="app/src/main/java/com/homebox/lens/ui/screen/locationslist/LocationsListScreen.kt" status="implemented" spec_ref_id="screen_locations_list">
|
||
<purpose_summary>UI для экрана списка местоположений.</purpose_summary>
|
||
<coherence_note>Использует модель LocationOutCount для отображения количества элементов в каждой локации.</coherence_note>
|
||
</file>
|
||
<file name="app/src/main/java/com/homebox/lens/ui/screen/locationslist/LocationsListViewModel.kt" status="implemented" spec_ref_id="screen_locations_list">
|
||
<purpose_summary>ViewModel для экрана списка местоположений.</purpose_summary>
|
||
</file>
|
||
<file name="app/src/main/java/com/homebox/lens/ui/screen/search/SearchScreen.kt" status="stub" spec_ref_id="screen_search">
|
||
<purpose_summary>UI для экрана поиска.</purpose_summary>
|
||
</file>
|
||
<file name="app/src/main/java/com/homebox/lens/ui/screen/search/SearchViewModel.kt" status="implemented" spec_ref_id="screen_search">
|
||
<purpose_summary>ViewModel для экрана поиска.</purpose_summary>
|
||
</file>
|
||
<file name="app/src/main/java/com/homebox/lens/ui/screen/setup/SetupScreen.kt" status="stub" spec_ref_id="screen_setup">
|
||
<purpose_summary>UI для экрана настройки.</purpose_summary>
|
||
</file>
|
||
<file name="app/src/main/java/com/homebox/lens/ui/screen/setup/SetupViewModel.kt" status="implemented" spec_ref_id="screen_setup">
|
||
<purpose_summary>ViewModel для экрана настройки.</purpose_summary>
|
||
</file>
|
||
<file name="app/src/main/java/com/homebox/lens/ui/screen/setup/SetupUiState.kt" status="implemented" spec_ref_id="screen_setup">
|
||
<purpose_summary>Состояние UI для экрана настройки.</purpose_summary>
|
||
</file>
|
||
</module>
|
||
<module name="data" type="android_library">
|
||
<purpose_summary>Слой данных, отвечающий за источники данных (сеть, локальная БД) и реализации репозиториев.</purpose_summary>
|
||
<coherence_note>Интегрирует Retrofit для API и Room для локального хранения; обеспечивает оффлайн-поддержку.</coherence_note>
|
||
<file name="data/src/main/java/com/homebox/lens/data/api/HomeboxApiService.kt" status="implemented" spec_ref_id="api_service">
|
||
<purpose_summary>Интерфейс сервиса Retrofit для Homebox API.</purpose_summary>
|
||
</file>
|
||
<file name="data/src/main/java/com/homebox/lens/data/db/HomeboxDatabase.kt" status="implemented" spec_ref_id="database">
|
||
<purpose_summary>Определение базы данных Room для локального кэширования.</purpose_summary>
|
||
</file>
|
||
<file name="data/src/main/java/com/homebox/lens/data/repository/ItemRepositoryImpl.kt" status="implemented" spec_ref_id="repo_impl">
|
||
<purpose_summary>Реализация ItemRepository, координирующая данные из API и локальной БД.</purpose_summary>
|
||
</file>
|
||
<file name="data/src/main/java/com/homebox/lens/data/di/ApiModule.kt" status="implemented" spec_ref_id="di_api">
|
||
<purpose_summary>Модуль Hilt для предоставления зависимостей, связанных с сетью (Retrofit, OkHttp).</purpose_summary>
|
||
</file>
|
||
<file name="data/src/main/java/com/homebox/lens/data/di/DatabaseModule.kt" status="implemented" spec_ref_id="di_db">
|
||
<purpose_summary>Модуль Hilt для предоставления зависимостей, связанных с базой данных (Room DB, DAO).</purpose_summary>
|
||
</file>
|
||
<file name="data/src/main/java/com/homebox/lens/data/di/RepositoryModule.kt" status="implemented" spec_ref_id="di_repo">
|
||
<purpose_summary>Модуль Hilt для привязки интерфейсов репозиториев к их реализациям.</purpose_summary>
|
||
</file>
|
||
<file name="data/src/main/java/com/homebox/lens/data/di/StorageModule.kt" status="implemented" spec_ref_id="di_storage">
|
||
<purpose_summary>Модуль Hilt для предоставления зависимостей, связанных с хранилищем (EncryptedSharedPreferences).</purpose_summary>
|
||
</file>
|
||
<file name="data/src/main/java/com/homebox/lens/data/repository/CredentialsRepositoryImpl.kt" status="implemented" spec_ref_id="repo_credentials_impl">
|
||
<purpose_summary>Реализация CredentialsRepository.</purpose_summary>
|
||
</file>
|
||
<file name="data/src/main/java/com/homebox/lens/data/repository/AuthRepositoryImpl.kt" status="implemented" spec_ref_id="repo_auth_impl">
|
||
<purpose_summary>Реализация AuthRepository.</purpose_summary>
|
||
</file>
|
||
</module>
|
||
<module name="domain" type="kotlin_jvm_library">
|
||
<purpose_summary>Доменный слой, содержит бизнес-логику, сценарии использования и интерфейсы репозиториев. Чистый модуль Kotlin.</purpose_summary>
|
||
<coherence_note>Чистая бизнес-логика без зависимостей от Android; использует корутины для async.</coherence_note>
|
||
<file name="domain/src/main/java/com/homebox/lens/domain/model/Credentials.kt" status="implemented" spec_ref_id="model_credentials">
|
||
<purpose_summary>Класс данных для хранения учетных данных пользователя.</purpose_summary>
|
||
</file>
|
||
<file name="domain/src/main/java/com/homebox/lens/domain/repository/AuthRepository.kt" status="implemented" spec_ref_id="repo_auth_interface">
|
||
<purpose_summary>Интерфейс для репозитория аутентификации.</purpose_summary>
|
||
</file>
|
||
<file name="domain/src/main/java/com/homebox/lens/domain/repository/CredentialsRepository.kt" status="implemented" spec_ref_id="repo_credentials_interface">
|
||
<purpose_summary>Интерфейс для репозитория учетных данных.</purpose_summary>
|
||
</file>
|
||
<file name="domain/src/main/java/com/homebox/lens/domain/repository/ItemRepository.kt" status="implemented" spec_ref_id="repo_interface">
|
||
<purpose_summary>Интерфейс, определяющий контракт для операций с данными, связанными с товарами.</purpose_summary>
|
||
</file>
|
||
<file name="domain/src/main/java/com/homebox/lens/domain/usecase/LoginUseCase.kt" status="implemented" spec_ref_id="uc_login">
|
||
<purpose_summary>Сценарий использования для входа пользователя.</purpose_summary>
|
||
</file>
|
||
<file name="domain/src/main/java/com/homebox/lens/domain/usecase/CreateItemUseCase.kt" status="implemented" spec_ref_id="uc_create_item">
|
||
<purpose_summary>Сценарий использования для создания нового товара.</purpose_summary>
|
||
</file>
|
||
<file name="domain/src/main/java/com/homebox/lens/domain/usecase/DeleteItemUseCase.kt" status="implemented" spec_ref_id="uc_delete_item">
|
||
<purpose_summary>Сценарий использования для удаления товара.</purpose_summary>
|
||
</file>
|
||
<file name="domain/src/main/java/com/homebox/lens/domain/usecase/GetAllLabelsUseCase.kt" status="implemented" spec_ref_id="uc_get_all_labels">
|
||
<purpose_summary>Сценарий использования для получения всех меток.</purpose_summary>
|
||
</file>
|
||
<file name="domain/src/main/java/com/homebox/lens/domain/usecase/GetAllLocationsUseCase.kt" status="implemented" spec_ref_id="uc_get_all_locations">
|
||
<purpose_summary>Сценарий использования для получения всех местоположений со счетчиками элементов.</purpose_summary>
|
||
<coherence_note>Возвращает List<LocationOutCount>, а не базовую модель Location.</coherence_note>
|
||
</file>
|
||
<file name="domain/src/main/java/com/homebox/lens/domain/usecase/GetItemDetailsUseCase.kt" status="implemented" spec_ref_id="uc_get_item_details">
|
||
<purpose_summary>Сценарий использования для получения сведений о конкретном товаре.</purpose_summary>
|
||
</file>
|
||
<file name="domain/src/main/java/com/homebox/lens/domain/usecase/GetRecentlyAddedItemsUseCase.kt" status="implemented" spec_ref_id="uc_get_recent_items">
|
||
<purpose_summary>Сценарий использования для получения недавно добавленных товаров.</purpose_summary>
|
||
</file>
|
||
<file name="domain/src/main/java/com/homebox/lens/domain/usecase/GetStatisticsUseCase.kt" status="implemented" spec_ref_id="uc_get_stats">
|
||
<purpose_summary>Сценарий использования для получения статистики по инвентарю.</purpose_summary>
|
||
</file>
|
||
<file name="domain/src/main/java/com/homebox/lens/domain/usecase/SearchItemsUseCase.kt" status="implemented" spec_ref_id="uc_search_items">
|
||
<purpose_summary>Сценарий использования для поиска товаров.</purpose_summary>
|
||
</file>
|
||
<file name="domain/src/main/java/com/homebox/lens/domain/usecase/SyncInventoryUseCase.kt" status="implemented" spec_ref_id="uc_sync_inventory">
|
||
<purpose_summary>Сценарий использования для синхронизации локального инвентаря с удаленным сервером.</purpose_summary>
|
||
</file>
|
||
<file name="domain/src/main/java/com/homebox/lens/domain/usecase/UpdateItemUseCase.kt" status="implemented" spec_ref_id="uc_update_item">
|
||
<purpose_summary>Сценарий использования для обновления существующего товара.</purpose_summary>
|
||
</file>
|
||
<file name="domain/src/main/java/com/homebox/lens/domain/model/Item.kt" status="implemented" spec_ref_id="model_item">
|
||
<purpose_summary>Модель инвентарного товара.</purpose_summary>
|
||
<coherence_note>Data class с полями для контрактов; используется в UseCases и Repo.</coherence_note>
|
||
</file>
|
||
<file name="domain/src/main/java/com/homebox/lens/domain/model/Label.kt" status="implemented" spec_ref_id="model_label">
|
||
<purpose_summary>Модель метки.</purpose_summary>
|
||
</file>
|
||
<file name="domain/src/main/java/com/homebox/lens/domain/model/Location.kt" status="implemented" spec_ref_id="model_location">
|
||
<purpose_summary>Модель местоположения.</purpose_summary>
|
||
</file>
|
||
<file name="domain/src/main/java/com/homebox/lens/domain/model/Statistics.kt" status="implemented" spec_ref_id="model_statistics">
|
||
<purpose_summary>Модель статистики инвентаря.</purpose_summary>
|
||
</file>
|
||
</module>
|
||
<module name="app-test" type="android_test">
|
||
<purpose_summary>Модуль для unit и integration тестов приложения.</purpose_summary>
|
||
<coherence_note>Тесты основаны на контрактах из DbC; используют Kotest для assertions.</coherence_note>
|
||
<file name="app/src/test/java/com/homebox/lens/ui/screen/dashboard/DashboardViewModelTest.kt" status="implemented" spec_ref_id="screen_dashboard">
|
||
<purpose_summary>Unit-тесты для DashboardViewModel.</purpose_summary>
|
||
<coherence_note>Проверяет постусловия GetStatisticsUseCase.</coherence_note>
|
||
</file>
|
||
<file name="app/src/test/java/com/homebox/lens/navigation/NavGraphTest.kt" status="implemented" spec_ref_id="nav_graph">
|
||
<purpose_summary>Тесты навигационного графа.</purpose_summary>
|
||
</file>
|
||
</module>
|
||
<module name="domain-test" type="kotlin_test">
|
||
<purpose_summary>Модуль для unit-тестов доменного слоя.</purpose_summary>
|
||
<file name="domain/src/test/java/com/homebox/lens/domain/usecase/GetStatisticsUseCaseTest.kt" status="implemented" spec_ref_id="uc_get_stats">
|
||
<purpose_summary>Unit-тесты для GetStatisticsUseCase.</purpose_summary>
|
||
<coherence_note>Включает тесты на edge cases и нарушения контрактов.</coherence_note>
|
||
</file>
|
||
<file name="domain/src/test/java/com/homebox/lens/domain/model/ItemTest.kt" status="implemented" spec_ref_id="model_item">
|
||
<purpose_summary>Тесты модели Item.</purpose_summary>
|
||
</file>
|
||
</module>
|
||
</PROJECT_STRUCTURE> |