6c46b3043a
- 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
2.4 KiB
2.4 KiB
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.