Files
promts/project_structure.xml
2025-08-24 11:42:16 +03:00

191 lines
18 KiB
XML
Raw Permalink 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"?>
<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>