Перейти к содержимому
Инциденты
Процесс

Инциденты и восстановление

Неопределённость — отдельное состояние, а не успех. Каждый случай имеет денежный эффект, событие аудита, восстановление и тест.

Последовательность

Основной и альтернативный потоки

Схема показывает только ключевые события; детали ошибок перечислены ниже.

На узком экране прокручивается по горизонтали
Отрисовываем схему…
Все действия на портале демонстрационные. Внешние системы не вызываются.

Состояния

Машина состояний

Недопустимые переходы должны блокироваться проверками, а не только интерфейсом.

На узком экране прокручивается по горизонтали
Отрисовываем схему…
Неопределённый результат команды не должен превращаться в успех.

Шаги процесса

1
Обнаружение
Тайм-аут, расхождение, ошибка кассы, устаревшая телеметрия или ролевой отказ.
Актор: Система
2
Классификация
Тип, важность, связанный объект и correlation ID.
Актор: Backend
3
Безопасное состояние
Запрет опасных действий, сохранение денежного следа и истории.
Актор: Backend
4
Разбор
Оператор/поддержка видят временную шкалу и связанные записи.
Актор: Оператор
5
Восстановление
Повтор безопасной операции, сверка или компенсирующая запись.
Актор: Оператор
6
Закрытие
Причина, действие и результат попадают в аудит.
Актор: Система

Правила

  • Не превращать неопределённость в успешное состояние.
  • Не терять денежный след.
  • Не повторять внешнюю команду без проверки предыдущего результата.
  • Не менять исторический расчёт.
  • Сохранять ID и контекст для поддержки.

Отказы и граничные случаи

СлучайПоведениеДенежный эффектТест
Клиент не получил ответ StartПроверить состояние до повторной команды.Резерв не списывается без подтверждения.AT-05
Ошибка кассыИстория сохранена, чек в очереди.Списание сохранено, документ дорабатывается.AT-11
Попытка действия вне ролиFORBIDDEN, действие не меняет состояние.Нет изменений.AT-12
Порт выведен из эксплуатацииИнцидент, проверка будущих броней, уведомление.Возвраты по правилам D02.AT-10, AT-12

Каталог отказов

СобытиеСостояниеЗапрещеноВосстановлениеТест
Телефон потерял сеть во время активной зарядкиACTIVE на сервереСчитать сессию завершённойПосле сети запросить серверное состояниеAT-09
Backend временно недоступенНеизвестноПоказывать успехПовторить безопасно, показать correlation IDAT-05
CSMS не отвечает на StartCOMMAND_PENDINGСоздавать вторую командуПроверить состояние командыAT-05
Статус порта устарелSTALEACTIVE/StartОбновить статус, поддержкаAT-05
QR относится к другому портуПроверкаЗапускВыбрать порт вручнуюAT-05
Несовместимый разъёмПроверкаStartДругой автомобиль/портAT-05
Две заявки на один интервалSLOT_CONFLICTДвойное подтверждениеОдна бронь, вторая без списанияAT-02
Hold истёк перед webhookEXPIREDСоздавать конфликтующую броньВозврат/сверкаAT-04
Платёж подтверждён, слот занятRECONCILIATIONВторая броньВозврат, инцидентAT-04
Повторный webhookCONFIRMEDНовая проводкаИдемпотентный ответAT-04
Повторный Start/StopАктивная операцияДубль командыВернуть существующий результатAT-04
Stop при разрыве сетиSTOP_REQUESTEDFINISHED без подтвержденияПроверить состояниеAT-08
Финальные измерения задержалисьSTOPPINGПодставлять суммуОжидание/сверкаAT-08
Счётчик не растёт или расходитсяACTIVE/STOPPINGСчитать успешнымИнцидент и сверкаAT-08
Приложение переустановленоACTIVEТерять сессиюВосстановить после входаAT-09
Push отключёнСобытие естьСкрывать in-appIn-app уведомлениеAT-13
Предыдущая машина занимает местоAWAITING_RELEASEЗелёный «свободно»Предупреждение/поддержкаAT-10
Касса вернула ошибкуFINISHED, receipt errorУдалять сессиюОчередь повтораAT-11
Платёж в промежуточном статусеPENDINGЗачислять балансПроверка webhookAT-03
Администратор вне ролиFORBIDDENВыполнять действиеОтказ и аудитAT-12
Тариф меняется во время сессииACTIVEПереписывать снимокБудущая версияAT-12
Поддержка меняет проводкуFORBIDDENРедактировать историюЭскалация администраторуAT-12
Порт выведен при будущей брониMAINTENANCEИгнорировать броньИнцидент, связь с клиентомAT-10