Fix: Handle missing 'color', 'isArchived' and 'value' fields in DTOs and mappers to prevent JsonDataException

This commit is contained in:
2025-10-06 09:40:47 +03:00
parent 9500d747b1
commit 78b827f29e
31 changed files with 691 additions and 619 deletions

View File

@@ -1,84 +0,0 @@
<![CDATA[
<work_order>
<title>Миграция Moshi с Kapt на KSP</title>
<description>
Устранить предупреждение "Kapt support in Moshi Kotlin Code Gen is deprecated".
Это требует миграции генерации кода Moshi с `kapt` на `KSP` (Kotlin Symbol Processing).
</description>
<steps>
<step>
<description>Добавить плагин KSP в корневой файл `build.gradle.kts`.</description>
<tool>
<name>apply_diff</name>
<args>
<file>
<path>build.gradle.kts</path>
<diff>
<content>
<![CDATA[
<<<<<<< SEARCH
// [PLUGIN] Hilt Android plugin
id("com.google.dagger.hilt.android") version "2.48.1" apply false
}
=======
// [PLUGIN] Hilt Android plugin
id("com.google.dagger.hilt.android") version "2.48.1" apply false
// [PLUGIN] KSP plugin
id("com.google.devtools.ksp") version "1.9.23-1.0.19" apply false
}
>>>>>>> REPLACE
]]>
</content>
<start_line>9</start_line>
</diff>
</file>
</args>
</tool>
</step>
<step>
<description>Применить плагин KSP и заменить зависимость `kapt` на `ksp` для Moshi в файле `data/build.gradle.kts`.</description>
<tool>
<name>apply_diff</name>
<args>
<file>
<path>data/build.gradle.kts</path>
<diff>
<content>
<![CDATA[
<<<<<<< SEARCH
id("org.jetbrains.kotlin.android")
id("com.google.dagger.hilt.android")
id("kotlin-kapt")
}
=======
id("org.jetbrains.kotlin.android")
id("com.google.dagger.hilt.android")
id("kotlin-kapt")
id("com.google.devtools.ksp")
}
>>>>>>> REPLACE
]]>
</content>
<start_line>6</start_line>
</diff>
<diff>
<content>
<![CDATA[
<<<<<<< SEARCH
implementation(Libs.moshiKotlin)
kapt(Libs.moshiCodegen)
=======
implementation(Libs.moshiKotlin)
ksp(Libs.moshiCodegen)
>>>>>>> REPLACE
]]>
</content>
<start_line>53</start_line>
</diff>
</file>
</args>
</tool>
</step>
</steps>
</work_order>
]]>

View File

@@ -1,35 +0,0 @@
<![CDATA[
<work_order>
<title>Удаление атрибута package из AndroidManifest.xml</title>
<description>
Устранить предупреждение "Setting the namespace via the package attribute in the source AndroidManifest.xml is no longer supported".
Это требует удаления устаревшего атрибута `package` из файла `app/src/main/AndroidManifest.xml`.
</description>
<steps>
<step>
<description>Удалить атрибут `package` из тега `manifest` в файле `app/src/main/AndroidManifest.xml`.</description>
<tool>
<name>apply_diff</name>
<args>
<file>
<path>app/src/main/AndroidManifest.xml</path>
<diff>
<content>
<![CDATA[
<<<<<<< SEARCH
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.homebox.lens">
=======
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
>>>>>>> REPLACE
]]>
</content>
<start_line>2</start_line>
</diff>
</file>
</args>
</tool>
</step>
</steps>
</work_order>
]]>

View File

@@ -1,86 +0,0 @@
<![CDATA[
<work_order>
<title>Устранение предупреждений сборки Gradle</title>
<description>
Необходимо устранить два типа предупреждений, возникающих при сборке проекта:
1. Использование устаревшего метода `Configuration.fileCollection(Spec)` в плагине `org.jetbrains.kotlin.android`.
2. Использование устаревшей версии Java 8 для компиляции.
</description>
<steps>
<step>
<description>Обновить версию Android Gradle Plugin (AGP) и плагина Kotlin в корневом файле `build.gradle.kts`.</description>
<tool>
<name>apply_diff</name>
<args>
<file>
<path>build.gradle.kts</path>
<diff>
<content>
<![CDATA[
<<<<<<< SEARCH
// [PLUGIN] Android Application plugin
id("com.android.application") version "8.13.0" apply false
// [PLUGIN] Kotlin Android plugin
id("org.jetbrains.kotlin.android") version "1.9.22" apply false
=======
// [PLUGIN] Android Application plugin
id("com.android.application") version "8.4.0" apply false
// [PLUGIN] Kotlin Android plugin
id("org.jetbrains.kotlin.android") version "1.9.23" apply false
>>>>>>> REPLACE
]]>
</content>
<start_line>5</start_line>
</diff>
</file>
</args>
</tool>
</step>
<step>
<description>Обновить версию Java до 17 в файлах сборки всех модулей. Начать с `data/build.gradle.kts`.</description>
<tool>
<name>apply_diff</name>
<args>
<file>
<path>data/build.gradle.kts</path>
<diff>
<content>
<![CDATA[
<<<<<<< SEARCH
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = "1.8"
}
=======
compileOptions {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
kotlinOptions {
jvmTarget = "17"
}
>>>>>>> REPLACE
]]>
</content>
<start_line>29</start_line>
</diff>
</file>
</args>
</tool>
</step>
<step>
<description>Применить аналогичные изменения для `app/build.gradle.kts` и других модулей. (Примечание: этот шаг потребует поиска и изменения всех `build.gradle.kts` файлов в проекте).</description>
<tool>
<name>search_files</name>
<args>
<path>.</path>
<regex>build\.gradle\.kts</regex>
</args>
</tool>
</step>
</steps>
</work_order>
]]>

View File

@@ -0,0 +1,65 @@
<![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<WorkOrder>
<WO_ID>20251006_add_missing_string_resources</WO_ID>
<Originator>Architect</Originator>
<Created>2025-10-06T06:05:22Z</Created>
<Project>Homebox-Lens</Project>
<Title>Add Missing String Resources to Resolve Build Failure</Title>
<Description>
The project build is currently failing due to multiple 'Unresolved reference' errors in `ItemEditScreen.kt` and `SettingsScreen.kt`. These errors are caused by missing string resources. To fix this, the specified string resources must be added to the `app/src/main/res/values/strings.xml` file.
</Description>
<Scope>
<File>app/src/main/res/values/strings.xml</File>
</Scope>
<AcceptanceCriteria>
- The project must compile successfully without any 'Unresolved reference' errors related to string resources.
- All new strings must be added to `app/src/main/res/values/strings.xml`.
- The new strings should have meaningful English values.
</AcceptanceCriteria>
<Constraints>
- Changes should be limited to the `app/src/main/res/values/strings.xml` file. No other files should be modified unless absolutely necessary to resolve the primary issue.
</Constraints>
<Deliverables>
<File>app/src/main/res/values/strings.xml</File>
</Deliverables>
<ImplementationDetails>
<LinguisticContext>
The new strings are for the item editing screen and settings screen. The text should be clear and concise.
</LinguisticContext>
<TechnicalContext>
The following string resources are missing and must be added to `app/src/main/res/values/strings.xml`:
- `item_edit_general_information`
- `item_edit_location`
- `item_edit_labels`
- `item_edit_select_labels`
- `dialog_ok`
- `dialog_cancel`
- `item_edit_purchase_information`
- `item_edit_purchase_price`
- `item_edit_purchase_from`
- `item_edit_purchase_time`
- `item_edit_select_date`
- `item_edit_warranty_information`
- `item_edit_lifetime_warranty`
- `item_edit_warranty_details`
- `item_edit_warranty_expires`
- `item_edit_identification`
- `item_edit_asset_id`
- `item_edit_serial_number`
- `item_edit_manufacturer`
- `item_edit_model_number`
- `item_edit_status_notes`
- `item_edit_archived`
- `item_edit_insured`
- `item_edit_notes`
- `item_edit_sold_information`
- `item_edit_sold_price`
- `item_edit_sold_to`
- `item_edit_sold_notes`
- `item_edit_sold_time`
- `screen_title_settings`
</TechnicalContext>
</ImplementationDetails>
</WorkOrder>
]]>

View File

@@ -1,97 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<WorkOrder>
<Configuration>
<MaxConcurrentAgents>1</MaxConcurrentAgents>
<MaxIterations>25</MaxIterations>
<TaskChannel>
<Implementation>
<Plugin>filesystem</Plugin>
<Parameters>
<BasePath>tasks/temp</BasePath>
</Parameters>
</Implementation>
</TaskChannel>
<MetricsSink>
<Implementation>
<Plugin>xml_file</Plugin>
<Parameters>
<OutputPath>logs/metrics</OutputPath>
</Parameters>
</Implementation>
</MetricsSink>
<LogSink>
<Implementation>
<Plugin>xml_file</Plugin>
<Parameters>
<OutputPath>logs/main</OutputPath>
</Parameters>
</Implementation>
</LogSink>
</Configuration>
<Objective>
<HumanReadable>Создать полнофункциональный экран "Inventory", который будет отображать список предметов инвентаря. Экран должен использовать существующую архитектуру и компоненты.</HumanReadable>
</Objective>
<SystemContext>
<System>
<OperatingSystem>Linux</OperatingSystem>
<Shell>/usr/bin/zsh</Shell>
</System>
<Project>
<Name>Homebox Lens</Name>
<Framework>Android (Jetpack Compose)</Framework>
<Language>Kotlin</Language>
<BuildSystem>Gradle</BuildSystem>
<Architecture>MVVM, Clean Architecture</Architecture>
</Project>
</SystemContext>
<InitialContext>
<File>
<Path>domain/src/main/java/com/homebox/lens/domain/model/ItemSummary.kt</Path>
</File>
<File>
<Path>app/src/main/java/com/homebox/lens/ui/screen/inventorylist/InventoryListScreen.kt</Path>
</File>
</InitialContext>
<AcceptanceCriteria>
<Criterion>
<Description>Создан новый Gradle-модуль `feature:inventory`.</Description>
</Criterion>
<Criterion>
<Description>В модуле `feature:inventory` реализован `InventoryScreen`, `InventoryViewModel` и `InventoryUiState`.</Description>
</Criterion>
<Criterion>
<Description>`InventoryViewModel` использует `SearchItemsUseCase` для получения списка предметов.</Description>
</Criterion>
<Criterion>
<Description>`InventoryScreen` отображает список предметов, используя `ItemSummary` в качестве модели представления для каждого элемента списка.</Description>
</Criterion>
<Criterion>
<Description>Новый экран интегрирован в навигацию приложения.</Description>
</Criterion>
<Criterion>
<Description>Весь новый код соответствует стайлгайду проекта и семантически корректен.</Description>
</Criterion>
</AcceptanceCriteria>
<Workflow>
<Step>
<Name>Создание модуля</Name>
<Description>Создать новый feature-модуль с именем `inventory`.</Description>
</Step>
<Step>
<Name>Реализация ViewModel</Name>
<Description>Создать `InventoryViewModel` который будет запрашивать данные из `SearchItemsUseCase` и управлять состоянием экрана `InventoryUiState`.</Description>
</Step>
<Step>
<Name>Реализация UI</Name>
<Description>Создать `InventoryScreen`, который будет отображать список `ItemSummary` из `InventoryUiState`. Для каждого элемента списка создать `ItemRow` composable.</Description>
</Step>
<Step>
<Name>Интеграция навигации</Name>
<Description>Добавить `InventoryScreen` в граф навигации приложения.</Description>
</Step>
<Step>
<Name>Рефакторинг</Name>
<Description>Удалить старый `InventoryListScreen` из `app` модуля, если он больше не нужен.</Description>
</Step>
</Workflow>
</WorkOrder>