feat: add agent tasks and update documentation
- Create 7 new task files (TASK-0001 through TASK-0007) - Add task template file for future use - Update Agent.md with project information - Update TASK.md with task tracking
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
# TASK-0004: UI база и ViewModel слой
|
||||
|
||||
## Цель
|
||||
|
||||
Создать базовый UI слой, в котором View отвечает только за Unity-ссылки и биндинги, а логика находится во ViewModel или state/flow сервисах.
|
||||
|
||||
## Что сделать
|
||||
|
||||
- Создать `IUIViewModel`.
|
||||
- Создать `UIView : MonoBehaviour` с методами `Initialize()` и `Release()`.
|
||||
- Создать `UIView<TVm> : UIView where TVm : IUIViewModel`.
|
||||
- Добавить явную привязку ViewModel во View через метод вроде `Bind(TVm vm)` или `Setup(TVm vm)`.
|
||||
- Сделать `Release()` идемпотентным для всех View.
|
||||
- Подготовить View для splash, loading и menu экранов.
|
||||
|
||||
## Технические требования
|
||||
|
||||
- ViewModel должна быть обычным C#-классом, не `MonoBehaviour`.
|
||||
- Runtime-данные передавать во View явно, а не через DI-поля MonoBehaviour.
|
||||
- View не должна содержать orchestration-логику boot flow.
|
||||
- Все подписки и listeners должны сниматься в `Release()`.
|
||||
- Повторный вызов `Release()` не должен приводить к ошибкам.
|
||||
|
||||
## Критерии готовности
|
||||
|
||||
- Есть базовые классы `UIView` и `UIView<TVm>`.
|
||||
- ViewModel можно передать во View явно перед `Initialize()`.
|
||||
- `Release()` безопасен при повторном вызове.
|
||||
- View не вызывает `FindObjectOfType`, не хранит глобальное состояние и не управляет переходами state machine.
|
||||
|
||||
## Заметки
|
||||
|
||||
MonoBehaviour должны оставаться presentation layer. Это соответствует задаче: логика находится в VM или сервисах, View только показывает состояние и прокидывает UI-события.
|
||||
Reference in New Issue
Block a user