Files
QuizPlease/Agent/Task/TASK-0003.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.3 KiB

TASK-0003: BootFlowService и запуск сценария

Цель

Реализовать внешний flow coordinator, который запускает и управляет сценарием загрузки приложения.

Что сделать

  • Создать BootFlowService : Service или сервис с аналогичным lifecycle.
  • Реализовать сценарий Splash -> Load -> Menu -> Load -> Menu ....
  • Сделать так, чтобы SplashState выполнялся один раз при старте.
  • После MenuState возвращаться в LoadState по restart-сигналу.
  • Создать BootstrapEntryPoint, который запускается через VContainer entry point.
  • Запустить BootFlowService из entry point через UniTask.
  • Корректно обработать штатную отмену, не логируя ее как ошибку.

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

  • Использовать IAsyncStartable или подходящий VContainer entry point для запуска.
  • Не запускать boot flow из MonoBehaviour.Start() вручную.
  • Не делать самопереключающиеся states, которые вызывают EnterStateAsync(...) изнутри своего EnterAsync(...).
  • OperationCanceledException считать нормальным завершением при уничтожении scope или остановке flow.
  • Все ожидания должны использовать токен, полученный сверху.

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

  • При старте выполняется последовательность Splash -> Load -> Menu.
  • Нажатие Restart запускает новый цикл Load -> Menu.
  • При отмене токена boot flow завершается без зависших UniTask.
  • Orchestration-код находится в plain C# классе, не во View.

Заметки

Рекомендуемый сценарий: внешний сервис вызывает _states.EnterStateAsync(...) последовательно. Это проще защищать на ревью и не создает проблем с reentrancy внутри states.