Постановка задачи
Имеется работающее frontend-приложение для водителя маршрутки на React + TypeScript. Архитектура управления состояниями (FSM) реализована неправильно. Требуется спроектировать и переписать модуль конечного автомата с нуля, следуя принципам чистой архитектуры.
Требования к реализации
- База - TypeScript, без классов;
- У движка должны быть четкие интерфейсы состояний, событий (transition) и условий переходов (guards);
- Код FSM должен быть изолирован от UI и подключаться как кастомный хук;
- Генерировать строгую типизацию всех возможных переходов (union types);
- Не должно быть пересечения логики FSM с вспомогательной отрисовкой;
- Движок должен легко переиспользоваться в других частях проекта.
Дополнительные детали
- Сроки: не критичны, но работа требует изучения основ FSM-архитектуры в React;
- Ожидаемый уровень: новичок/джун, который хочет разобраться в паттернах и реализовать их на практике;
- Прошлые исполнители не справились - требуется внимательный Pre-review и чёткое описание переходов;
- Бюджет: ограничен, подходит для режима учебного проекта или легкой фриланс-задачи.
Критерии приёмки
- Типизированный FSM с отдельными файлами для описания состояний (states, transitions, guards);
- Полностью функционирует в вёрстке водительского приложения (без регрессии UI-логики);
- Находит и исправляет все недочеты текущей FSM среди пользовательских сценариев;
- Прилагаются комментарии в коде для объяснения архитектуры новичкам.