Перейти к содержимому
Приёмка
Критерии приёмки

AT-01 – AT-13

Обязательные сценарии проверки. Портал различает «показано в приложении» и «пройдено на реальном оборудовании»: второе не присваивается без испытания.
Сценариев
13
Показано в приложении
12
Частично
1
Что не считается доказательством
Успешный клик по кнопке не заменяет проверку. Для AT нужно показать состояние до/после, связанные ID, денежный эффект, событие аудита и путь восстановления. Для реальных интеграций требуется стенд, ключи и протокол испытаний.
01

Поиск без GPS и проверка актуальности

Без геолокации выбрать район, найти совместимый порт и увидеть, насколько свежи данные.

Показано в приложении

Предусловия

  • Пользователь не обязан входить
  • GPS отклонён или недоступен

Шаги

  1. 1Открыть приложение приложения.
  2. 2Отказаться от GPS или включить сценарий без геолокации.
  3. 3Выбрать демонстрационный район вручную.
  4. 4Применить фильтр по разъёму Type 2 и мощности.
  5. 5Открыть карточку станции и проверить время последнего обновления.

Ожидаемый результат

  • Карта и список доступны без входа.
  • Ручной поиск работает без GPS.
  • Порт с устаревшим статусом не выглядит свободным.
  • Для бронирования требуется демонстрационный вход.
Доказательство: Скриншот карты, карточки станции и предупреждения об устаревших данных.
Данные:ST-04PORT-0401PortAvailability
D:D07
Показано в приложении: карта и фильтры работают, статус stale отображается отдельно.
02

Конкурирующие брони одного интервала

Убедиться, что только одна заявка получает интервал, а вторая не теряет средства.

Показано в приложении

Предусловия

  • Сценарий «Конкурирующая бронь»
  • Два пользователя претендуют на один интервал

Шаги

  1. 1Включить сценарий конкурирующей брони.
  2. 2Открыть календарь PORT-0101 на 24 октября.
  3. 3Попробовать выбрать интервал, пересекающийся с RSV-9001.
  4. 4Проверить, что кнопка бронирования заблокирована с причиной.
  5. 5Убедиться, что баланс не изменился.

Ожидаемый результат

  • Конфликтующий интервал недоступен.
  • Проигравшая заявка не создаёт бронь.
  • Средства не списываются без подтверждённой брони.
  • Показана причина с учётом буфера 15 минут.
Доказательство: Экран календаря с причиной блокировки и неизменный баланс.
Данные:RSV-9001SlotHoldReservation
Показано в приложении на локальной логике календаря; серверная транзакция не проверялась.
03

Бронь с достаточным балансом и пополнение

Проверить разделение стоимости брони и энергии, а также сценарий недостатка средств.

Показано в приложении

Предусловия

  • Пользователь вошёл
  • Есть доступный и резервный баланс

Шаги

  1. 1Выбрать свободный интервал.
  2. 2Создать hold и увидеть срок действия.
  3. 3Проверить стоимость брони отдельно от энергии.
  4. 4При недостатке средств открыть демо-пополнение.
  5. 5Подтвердить оплату и проверить проводку.

Ожидаемый результат

  • Сумма брони и энергия показаны раздельно.
  • Недостаток средств блокирует подтверждение до пополнения.
  • После успешной демо-оплаты создаётся бронь и проводка.
  • Возврат из платёжной страницы не считается подтверждением.
Доказательство: Экран подтверждения брони, кошелёк и проводка с ID.
Данные:SlotHoldPaymentWalletEntryReservation
Показано в приложении с симулированными успехом, отказом и ожиданием.
04

Повтор webhook и повтор кнопки

Убедиться, что повтор события не создаёт второй платёж, проводку, бронь или Start.

Показано в приложении

Предусловия

  • Есть подтверждённый платёж
  • Есть доступ к демо-админке

Шаги

  1. 1Открыть раздел платежей в админке.
  2. 2Выбрать подтверждённый платёж.
  3. 3Нажать «Повторить webhook».
  4. 4Проверить число проводок до и после.
  5. 5Повторно нажать Start или Stop в сессии.

Ожидаемый результат

  • Повтор webhook не создаёт новую проводку.
  • Повтор Start не создаёт вторую сессию.
  • Повтор Stop не создаёт второй итог.
  • В аудите есть запись об идемпотентной обработке.
Доказательство: Счётчик проводок, повторная операция и запись аудита.
Данные:PaymentWalletEntryCommand
Показано в приложении: повтор webhook не меняет число проводок.
05

Блокировка запуска до резерва

Проверить, что неверный QR, разъём, устаревшая телеметрия и конфликт календаря блокируют Start.

Показано в приложении

Предусловия

  • Есть автомобиль и выбранный порт
  • Доступны сценарии сбоя

Шаги

  1. 1Включить сценарий старой телеметрии.
  2. 2Попробовать запустить зарядку.
  3. 3Проверить сообщение и отсутствие активной сессии.
  4. 4Выбрать несовместимый разъём.
  5. 5Убедиться, что резерв не остался активным.

Ожидаемый результат

  • Запуск блокируется до отправки команды.
  • Причина видна пользователю.
  • Резерв не удерживается при отказе.
  • Активная сессия не появляется.
Доказательство: Экран запуска с ошибкой, журнал статусов и отсутствие активной сессии.
Данные:CommandChargingSessionWalletHold
Показано в приложении; реальное оборудование не использовалось.
06

Активная сессия после подтверждения старта

Проверить, что ACTIVE появляется только после подтверждения станции, а телеметрия обновляется.

Показано в приложении

Предусловия

  • Порт доступен
  • Баланс достаточен
  • Совместимый автомобиль

Шаги

  1. 1Запустить демонстрационную сессию.
  2. 2Наблюдать START_REQUESTED и STARTING.
  3. 3Дождаться подтверждения и статуса ACTIVE.
  4. 4Ускорить виртуальное время.
  5. 5Проверить рост кВт·ч и текущую мощность.

Ожидаемый результат

  • ACTIVE не появляется мгновенно после нажатия.
  • Энергия и мощность обновляются детерминированно.
  • Время последней телеметрии видно.
  • Сессия сохраняется при переходе между экранами.
Доказательство: Последовательность статусов и экран активной сессии.
Данные:ChargingSessionMeterSampleCommand
Показано в приложении с симулированной телеметрией.
07

Добавление объёма до следующей брони

Проверить, что объём увеличивается только при достаточном интервале.

Показано в приложении

Предусловия

  • Активная сессия
  • У порта есть следующая бронь

Шаги

  1. 1Открыть активную сессию.
  2. 2Нажать «Добавить объём».
  3. 3Ввести объём, превышающий доступное время.
  4. 4Проверить отказ и неизменность резерва.
  5. 5Ввести допустимый объём и проверить успех.

Ожидаемый результат

  • При нехватке времени изменение не фиксируется.
  • Причина отказа содержит следующую бронь и ограничение.
  • При успехе резерв и лимит увеличиваются одной операцией.
  • Календарь не ломается.
Доказательство: Экран добавления объёма, отказ и обновлённый резерв.
Данные:ChargingSessionReservationWalletHold
D:D03
Показано в приложении на локальных правилах.
08

Остановка и финальный расчёт

Проверить остановку, финальные показания, освобождение резерва и чек.

Показано в приложении

Предусловия

  • Активная сессия с накопленной энергией

Шаги

  1. 1Нажать «Остановить зарядку» и подтвердить.
  2. 2Наблюдать STOP_REQUESTED и STOPPING.
  3. 3Дождаться финального статуса.
  4. 4Проверить итоговую сумму и возврат резерва.
  5. 5Открыть чек-макет.

Ожидаемый результат

  • FINISHED не показывается до подтверждения.
  • Итог считается по тарифному снимку.
  • Неиспользованный резерв освобождён.
  • Чек помечен как демонстрационный и нефискальный.
  • Повторная финализация не дублирует проводку.
Доказательство: Итоговый экран, проводки, резерв и чек.
Данные:MeterSampleWalletEntryWalletHoldReceipt
Показано в приложении; суммы рассчитаны локально.
09

Потеря сети во время зарядки

Проверить, что офлайн приложения не останавливает физическую сессию и состояние восстанавливается.

Показано частично

Предусловия

  • Активная сессия
  • Доступен переключатель сетевого сбоя

Шаги

  1. 1Включить демонстрационный сетевой сбой.
  2. 2Перейти между экранами приложения.
  3. 3Убедиться, что сессия не помечена завершённой.
  4. 4Отключить сбой.
  5. 5Проверить восстановление серверного состояния.

Ожидаемый результат

  • Сессия остаётся активной.
  • Опасные действия блокируются при устаревших данных.
  • После восстановления показан актуальный статус.
  • Пользователь видит путь к поддержке.
Доказательство: Состояние сессии до и после сбоя.
Данные:ChargingSessionMeterSample
D:D06
В демо состояние сохраняется между переходами; реальный офлайн мобильного клиента не проверялся.
10

Задержка предыдущего автомобиля

Проверить, что неизвестная занятость не выдаётся за свободное место.

Показано в приложении

Предусловия

  • Порт в статусе ожидания освобождения

Шаги

  1. 1Открыть станцию «Библиотека №7».
  2. 2Найти порт со статусом ожидания освобождения.
  3. 3Проверить предупреждение и недоступность ближайшего интервала.
  4. 4Открыть инцидент/поддержку с контекстом.

Ожидаемый результат

  • Порт не отображается зелёным как свободный.
  • Ближайший интервал блокируется до подтверждения.
  • Показано предупреждение «Место может быть занято».
  • Задержка не создаёт автоматическое наказание следующего клиента.
Доказательство: Карточка станции и предупреждение.
Данные:PortAvailabilityIncident
Показано в приложении на статусе awaiting_release.
11

Ошибка кассы без потери истории

Проверить, что ошибка фискализации не удаляет сессию и платёж и создаёт задачу повтора.

Показано в приложении

Предусловия

  • Есть завершённая сессия с ошибочным чеком

Шаги

  1. 1Открыть очередь чеков в админке.
  2. 2Найти чек RCPT-3003 со статусом ошибки.
  3. 3Проверить, что сессия и платёж доступны.
  4. 4Повторить демо-операцию.
  5. 5Проверить аудит и статус чека.

Ожидаемый результат

  • История сессии сохранена.
  • Ошибка чека видна пользователю и оператору.
  • Повтор обновляет статус без удаления операции.
  • Создаётся запись аудита.
Доказательство: Очередь чеков, карточка сессии и аудит.
Данные:ReceiptChargingSessionPaymentAuditEvent
Показано в приложении на локальной очереди.
12

Новый тариф и аудит

Проверить, что новый тариф действует на будущие операции и не переписывает историю.

Показано в приложении

Предусловия

  • Роль администратора
  • Есть активная или завершённая сессия

Шаги

  1. 1Открыть тарифы в админке.
  2. 2Создать будущую версию тарифа.
  3. 3Проверить, что сессия сохраняет прежний tariffVersion.
  4. 4Открыть аудит.
  5. 5Проверить старое и новое значение.

Ожидаемый результат

  • Будущий тариф не меняет активную и историческую сессию.
  • Изменение записано в аудит.
  • Причина и автор видны.
  • Существующие брони не пересчитываются.
Доказательство: Список тарифов, карточка сессии и запись аудита.
Данные:TariffVersionChargingSessionAuditEvent
Показано в приложении: новая версия создаётся, снимок сессии не меняется.
13

Чек, история и контекст поддержки

Проверить, что чек доступен, история связана с операцией, а поддержка получает контекст.

Показано в приложении

Предусловия

  • Сессия завершена
  • Чек готов или формируется

Шаги

  1. 1Открыть историю в кабинете.
  2. 2Найти завершённую сессию.
  3. 3Перейти к чеку и связанным проводкам.
  4. 4Открыть обращение с контекстом сессии.
  5. 5Проверить, что оператор видит те же ID.

Ожидаемый результат

  • Чек доступен после готовности.
  • История связывает RSW/SESS/PAY/WAL/RCPT.
  • Обращение содержит контекст.
  • Поддержка видит ID и не требует повторного описания.
Доказательство: История, чек-макет и карточка обращения.
Данные:ReceiptSupportTicketWalletEntry
Показано в приложении на сквозных демонстрационных ID.
Как читать статусы
«Показано в приложении» означает, что сценарий воспроизведён на демонстрационных данных портала. «Показано частично» — часть шагов недоступна без реального клиента/оборудования. «Не показано» — нет реализации или доказательства. Испытание на физическом оборудовании оформляется отдельным протоколом.
Автоматические проверки самого портала: unit-тесты демо-логики, компонентные тесты критичных элементов, Playwright-сценарий бронирования и зарядки, lint, typecheck и production build. Фактические результаты запуска указаны в README и итоговом отчёте.