Files
QuizPlease/Agent/Task/TASK-0002.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.4 KiB
Raw Blame History

TASK-0002: Базовая архитектура Boot Flow

Цель

Создать минимальную архитектурную основу для boot flow: сервисный lifecycle, state-контракты и generic state controller.

Что сделать

  • Создать IService с методами InitializeAsync(CancellationToken ct) и ReleaseAsync(CancellationToken ct).
  • Создать базовый Service : IService, если это упростит общую структуру.
  • Создать IState с методами EnterAsync(CancellationToken ct) и ExitAsync(CancellationToken ct).
  • Создать IStatesController<TEnum> с методом EnterStateAsync(TEnum code, CancellationToken ct).
  • Реализовать StatesController<TEnum>.
  • Создать BootStateCode для состояний Splash, Load, Menu.
  • Создать BootStatesController, который собирает конкретные boot states и передает их в базовый controller.

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

  • Использовать UniTask для всех async-методов.
  • Во все async-операции передавать CancellationToken.
  • Контракт перехода должен быть строгим: сначала ExitAsync текущего state, затем EnterAsync нового state.
  • StatesController<TEnum> не должен знать бизнес-логику boot flow.
  • State не должен сам решать, какой state будет следующим.

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

  • EnterStateAsync вызывает ExitAsync текущего state перед EnterAsync нового state.
  • Первый вход в state работает без попытки выйти из отсутствующего текущего state.
  • Повторный вход в другой state не оставляет предыдущий state активным.
  • CancellationToken проброшен через EnterStateAsync, ExitAsync и EnterAsync.

Заметки

Generic state machine должна уметь только переключать состояния. Сценарий Splash -> Load -> Menu -> Load должен жить отдельно, чтобы не смешивать control flow и инфраструктуру state machine.