From 258deb93d9d4771fae02bfc778403d20fba08069 Mon Sep 17 00:00:00 2001 From: busya Date: Sat, 9 Aug 2025 10:07:59 +0300 Subject: [PATCH] docs: Update project specs and align statuses - Add Timber to technical decisions in tech_spec.txt - Update feature statuses to 'backend_implemented' in tech_spec.txt - Update UI component statuses to 'needs_review' in project_structure.txt --- .../lens/data/api/mapper/TokenMapper.kt | 4 +++ .../lens/data/api/model/LoginRequest.kt | 29 +++++++++++++++++ .../repository/EncryptedPreferencesWrapper.kt | 4 +++ .../lens/data/security/CryptoManager.kt | 4 +++ .../lens/domain/model/TokenResponse.kt | 4 +++ tech_spec/project_structure.txt | 32 +++++++++---------- tech_spec/tech_spec.txt | 19 +++++++---- 7 files changed, 74 insertions(+), 22 deletions(-) create mode 100644 data/src/main/java/com/homebox/lens/data/api/mapper/TokenMapper.kt create mode 100644 data/src/main/java/com/homebox/lens/data/api/model/LoginRequest.kt create mode 100644 data/src/main/java/com/homebox/lens/data/repository/EncryptedPreferencesWrapper.kt create mode 100644 data/src/main/java/com/homebox/lens/data/security/CryptoManager.kt create mode 100644 domain/src/main/java/com/homebox/lens/domain/model/TokenResponse.kt diff --git a/data/src/main/java/com/homebox/lens/data/api/mapper/TokenMapper.kt b/data/src/main/java/com/homebox/lens/data/api/mapper/TokenMapper.kt new file mode 100644 index 0000000..6a28cc0 --- /dev/null +++ b/data/src/main/java/com/homebox/lens/data/api/mapper/TokenMapper.kt @@ -0,0 +1,4 @@ +package com.homebox.lens.data.api.mapper + +class TokenMapper { +} \ No newline at end of file diff --git a/data/src/main/java/com/homebox/lens/data/api/model/LoginRequest.kt b/data/src/main/java/com/homebox/lens/data/api/model/LoginRequest.kt new file mode 100644 index 0000000..e97ba2f --- /dev/null +++ b/data/src/main/java/com/homebox/lens/data/api/model/LoginRequest.kt @@ -0,0 +1,29 @@ +// [PACKAGE] com.homebox.lens.data.api.model +// [FILE] LoginRequest.kt +// [SEMANTICS] dto, network, serialization, authentication + +package com.homebox.lens.data.api + +import com.squareup.moshi.Json +import com.squareup.moshi.JsonClass + +/** + * [ENTITY: DataClass('LoginRequest')] + * [CONTRACT] + * DTO (Data Transfer Object) для запроса на аутентификацию. + * @property username Имя пользователя. + * @property password Пароль пользователя. + * @invariant Свойства не должны быть пустыми. + */ +@JsonClass(generateAdapter = true) +data class LoginRequest( + @Json(name = "username") val username: String, + @Json(name = "password") val password: String +) { + init { + // [INVARIANT_CHECK] + require(username.isNotBlank()) { "[INVARIANT_FAILED] Username cannot be blank." } + require(password.isNotBlank()) { "[INVARIANT_FAILED] Password cannot be blank." } + } +} +// [END_FILE_LoginRequest.kt] \ No newline at end of file diff --git a/data/src/main/java/com/homebox/lens/data/repository/EncryptedPreferencesWrapper.kt b/data/src/main/java/com/homebox/lens/data/repository/EncryptedPreferencesWrapper.kt new file mode 100644 index 0000000..aa7d460 --- /dev/null +++ b/data/src/main/java/com/homebox/lens/data/repository/EncryptedPreferencesWrapper.kt @@ -0,0 +1,4 @@ +package com.homebox.lens.data.repository + +class EncryptedPreferencesWrapper { +} \ No newline at end of file diff --git a/data/src/main/java/com/homebox/lens/data/security/CryptoManager.kt b/data/src/main/java/com/homebox/lens/data/security/CryptoManager.kt new file mode 100644 index 0000000..de7b5c9 --- /dev/null +++ b/data/src/main/java/com/homebox/lens/data/security/CryptoManager.kt @@ -0,0 +1,4 @@ +package com.homebox.lens.data.security + +class CryptoManager { +} \ No newline at end of file diff --git a/domain/src/main/java/com/homebox/lens/domain/model/TokenResponse.kt b/domain/src/main/java/com/homebox/lens/domain/model/TokenResponse.kt new file mode 100644 index 0000000..80f030c --- /dev/null +++ b/domain/src/main/java/com/homebox/lens/domain/model/TokenResponse.kt @@ -0,0 +1,4 @@ +package com.homebox.lens.domain.model + +class TokenResponse { +} \ No newline at end of file diff --git a/tech_spec/project_structure.txt b/tech_spec/project_structure.txt index 15af92e..fe0154b 100644 --- a/tech_spec/project_structure.txt +++ b/tech_spec/project_structure.txt @@ -17,52 +17,52 @@ Defines the routes for all screens in the app as a sealed class. - + UI for the Dashboard screen. - + ViewModel for the Dashboard screen, handles business logic. - + UI for the Inventory List screen. - + ViewModel for the Inventory List screen. - + UI for the Item Details screen. - + ViewModel for the Item Details screen. - + UI for the Item Edit screen. - + ViewModel for the Item Edit screen. - + UI for the Labels List screen. - + ViewModel for the Labels List screen. - + UI for the Locations List screen. - + ViewModel for the Locations List screen. - + UI for the Search screen. - + ViewModel for the Search screen. - + UI for the Setup screen. - + ViewModel for the Setup screen. diff --git a/tech_spec/tech_spec.txt b/tech_spec/tech_spec.txt index e92b749..c4bde20 100644 --- a/tech_spec/tech_spec.txt +++ b/tech_spec/tech_spec.txt @@ -5,8 +5,15 @@ An Android client for the Homebox inventory management system. It allows users to manage their inventory by interacting with a Homebox server instance. + + + Logging Library + The project uses Timber (timber.log.Timber) for all logging purposes. It provides a simple and extensible API for logging. + + + - + Dashboard Screen Displays a summary of the inventory, including statistics like total items, total value, and counts by location/label. @@ -19,7 +26,7 @@ - + Inventory List Screen Displays a searchable and filterable list of all inventory items. @@ -37,7 +44,7 @@ - + Item Details Screen Shows all details for a single inventory item, including its name, description, images, attachments, and custom fields. @@ -50,7 +57,7 @@ - + Create/Edit/Delete Items Allows users to create new items, update existing ones, and delete them. @@ -73,7 +80,7 @@ - + Manage Labels and Locations Allows users to view lists of all available labels and locations. @@ -92,7 +99,7 @@ - + Search Screen Provides a dedicated UI for searching items.