feat(agent): Implement item edit feature

Автоматизированная реализация на основе `Work Order`.

Завершенные задачи:
- 20250825_100001: Реализовать `ItemEditViewModel` для управления состоянием экрана редактирования товара.
- 20250825_100002: Реализовать пользовательский интерфейс экрана `ItemEditScreen`.
- 20250825_100003: Обновить навигацию для поддержки экрана редактирования товара.
This commit is contained in:
2025-08-28 16:10:00 +03:00
parent 11078e5313
commit 8ebdc3a7b3
8 changed files with 166 additions and 270 deletions

View File

@@ -0,0 +1,28 @@
<WORK_ORDER status="completed">
<METRICS>
<syntactic_validity>1.0</syntactic_validity>
<intent_clarity_score>1.0</intent_clarity_score>
<specification_adherence_score>1.0</specification_adherence_score>
<semantic_markup_quality>1.0</semantic_markup_quality>
<estimated_complexity_score>3</estimated_complexity_score>
<confidence_score>1.0</confidence_score>
<assumptions_made></assumptions_made>
</METRICS>
<GOAL>
Реализовать `ItemEditViewModel` для управления состоянием экрана редактирования товара.
</GOAL>
<INTENT_SPECIFICATION>
1. Открыть файл `app/src/main/java/com/homebox/lens/ui/screen/itemedit/ItemEditViewModel.kt`.
2. Внедрить в конструктор `CreateItemUseCase` и `UpdateItemUseCase`.
3. Определить `data class ItemEditUiState` для представления состояния экрана (редактируемый товар, флаги загрузки/ошибки).
4. Использовать `StateFlow` для управления `UiState`.
5. Реализовать функцию `loadItem(itemId: String)` для загрузки данных товара по ID через соответствующий UseCase.
6. Реализовать функцию `saveItem()` которая будет вызывать `CreateItemUseCase` или `UpdateItemUseCase` в зависимости от того, создается новый товар или редактируется существующий.
</INTENT_SPECIFICATION>
<ACCEPTANCE_CRITERIA>
- `ItemEditViewModel.kt` содержит `StateFlow` с `ItemEditUiState`.
- Зависимости `CreateItemUseCase` и `UpdateItemUseCase` корректно внедрены.
- Функции `loadItem` и `saveItem` реализованы и вызывают соответствующие use cases.
- ViewModel успешно компилируется.
</ACCEPTANCE_CRITERIA>
</WORK_ORDER>

View File

@@ -0,0 +1,30 @@
<WORK_ORDER status="completed">
<METRICS>
<syntactic_validity>1.0</syntactic_validity>
<intent_clarity_score>1.0</intent_clarity_score>
<specification_adherence_score>1.0</specification_adherence_score>
<semantic_markup_quality>1.0</semantic_markup_quality>
<estimated_complexity_score>3</estimated_complexity_score>
<confidence_score>1.0</confidence_score>
<assumptions_made></assumptions_made>
</METRICS>
<GOAL>
Реализовать пользовательский интерфейс экрана `ItemEditScreen`.
</GOAL>
<INTENT_SPECIFICATION>
1. Открыть файл `app/src/main/java/com/homebox/lens/ui/screen/itemedit/ItemEditScreen.kt`.
2. Добавить `ItemEditViewModel` в параметры Composable-функции `ItemEditScreen`.
3. Получить `UiState` из ViewModel.
4. На основе `UiState` отобразить поля для ввода данных товара (название, описание, и т.д.). Использовать `TextField` из Jetpack Compose.
5. Добавить кнопку "Сохранить" (`Button` или `FloatingActionButton`).
6. При изменении текста в полях, вызывать методы ViewModel для обновления состояния.
7. При нажатии на кнопку "Сохранить", вызывать метод `saveItem()` у ViewModel.
</INTENT_SPECIFICATION>
<ACCEPTANCE_CRITERIA>
- `ItemEditScreen.kt` отображает поля для редактирования данных товара.
- UI реагирует на изменения состояния (`UiState`) из ViewModel.
- Пользовательский ввод обновляет состояние в ViewModel.
- Кнопка "Сохранить" вызывает `saveItem()` в ViewModel.
- Экран успешно компилируется.
</ACCEPTANCE_CRITERIA>
</WORK_ORDER>

View File

@@ -0,0 +1,26 @@
<WORK_ORDER status="completed">
<METRICS>
<syntactic_validity>1.0</syntactic_validity>
<intent_clarity_score>1.0</intent_clarity_score>
<specification_adherence_score>1.0</specification_adherence_score>
<semantic_markup_quality>1.0</semantic_markup_quality>
<estimated_complexity_score>2</estimated_complexity_score>
<confidence_score>1.0</confidence_score>
<assumptions_made></assumptions_made>
</METRICS>
<GOAL>
Обновить навигацию для поддержки экрана редактирования товара.
</GOAL>
<INTENT_SPECIFICATION>
1. Открыть файл `app/src/main/java/com/homebox/lens/navigation/NavGraph.kt`.
2. Добавить в навигационный граф маршрут для `ItemEditScreen`, который сможет принимать опциональный `itemId` в качестве аргумента.
3. Реализовать навигацию на `ItemEditScreen` с `itemId` с экранов, где есть список товаров (например, `InventoryListScreen`).
4. Реализовать навигацию на `ItemEditScreen` без `itemId` (для создания нового товара), например, с кнопки "Добавить".
5. В `ItemEditScreen` реализовать навигацию назад (вызов `navigationActions.navController.popBackStack()`) после успешного сохранения товара.
</INTENT_SPECIFICATION>
<ACCEPTANCE_CRITERIA>
- В `NavGraph.kt` определен маршрут для `ItemEditScreen` с аргументом `itemId`.
- Осуществляется корректный переход на экран редактирования как для создания, так и для редактирования товара.
- После сохранения товара происходит возврат на предыдущий экран.
</ACCEPTANCE_CRITERIA>
</WORK_ORDER>