Files
QuizPlease/Agent/Task/TASK-0001.md
T
horooko 6c46b3043a 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
2026-05-27 03:36:25 +07:00

2.5 KiB
Raw Blame History

TASK-0001: Composition Root и зависимости

Цель

Настроить корневую точку композиции проекта через VContainer так, чтобы orchestration-логика жила в plain C# классах, а MonoBehaviour использовались только как View-компоненты сцены.

Что сделать

  • Создать GameLifetimeScope.
  • Зарегистрировать сервисы и контроллеры через VContainer как managed dependencies.
  • Зарегистрировать BootstrapEntryPoint как entry point приложения.
  • Зарегистрировать BootStatesController как IStatesController<BootStateCode> и при необходимости как self.
  • Зарегистрировать SplashState, LoadState, MenuState.
  • Зарегистрировать scene View через RegisterComponent(...).
  • Зарегистрировать settings asset через [SerializeField] и RegisterInstance(...).

Технические требования

  • Использовать VContainer.
  • Сервисы регистрировать через builder.Register<Impl>(Lifetime.Singleton).As<IInterface>().
  • Не использовать RegisterInstance(...) для сервисов и controller-объектов.
  • RegisterInstance(...) использовать только для settings/config assets.
  • Не использовать FindObjectOfType, Singleton.Instance и static-хранилища состояния.
  • MonoBehaviour не должны содержать orchestration-логику boot flow.

Критерии готовности

  • В сцене есть один GameLifetimeScope.
  • Все boot flow зависимости собираются через VContainer.
  • View-компоненты подключаются через ссылки из сцены, а не через поиск объектов.
  • Entry point запускается контейнером.
  • Сервисы и state machine не создаются вручную через new внутри MonoBehaviour.

Заметки

Scene View допустимо регистрировать как компоненты, потому что они физически живут в сцене. Settings asset допустимо регистрировать через RegisterInstance(...), потому что это данные, а не сервис с жизненным циклом.