mirror of
https://github.com/TronoSfera/Law.git
synced 2026-05-18 10:03:45 +03:00
27 KiB
27 KiB
Матрица User Flow для Тестирования Платформы (CLIENT / LAWYER / ADMIN)
Назначение
Этот файл описывает полный набор пользовательских сценариев для тестирования платформы через веб-интерфейс. Используется как:
- чеклист ручной приемки,
- источник для e2e/интеграционных сценариев,
- карта corner cases по ролям.
Общие правила проверки
- Все ключевые сценарии проверять через UI (не только по API).
- Для каждого сценария проверять:
- видимость данных по роли,
- корректность уведомлений/непрочитанного,
- записи в истории статусов/чата,
- отсутствие утечки служебной/финансовой информации клиенту.
- Для статусов:
важная датавидна клиенту, юристу и администратору,- для юриста/администратора это дедлайн текущего статуса,
- смена статуса логируется вместе с
важной датойи комментарием.
- Для файлов:
- проверять и успешный сценарий, и ошибки (размер, MIME, предпросмотр, поврежденный файл).
Тестовые роли и данные (рекомендуемые)
ADMIN:admin@example.com/admin123LAWYER #1: основной юрист (назначенные заявки)LAWYER #2: другой юрист (для проверок запрета доступа к чужим данным)CLIENT #1: новый клиент (новый номер телефона)CLIENT #2: второй клиент (для проверки изоляции JWT/заявок)
CLIENT (Пользователь / Заказчик)
C01. Просмотр лендинга и создание заявки (happy path)
- Открыть лендинг.
- Открыть модальную форму создания заявки.
- Заполнить:
- ФИО,
- телефон,
- тему,
- описание.
- Пройти OTP-подтверждение телефона.
- Создать заявку.
- Проверить:
- выдан уникальный номер заявки,
- создается запись клиента (
client) и связь с заявкой, - клиент не видит служебные поля (ставка, стоимость, внутренние ID, ответственные ID, финансовые поля).
C02. Повторный вход в клиентский контур по номеру/OTP
- На лендинге нажать кнопку перехода к работе с заявкой.
- Если нет JWT (новое устройство/браузер), пройти OTP.
- Открыть страницу работы с заявкой.
- Проверить:
- доступ только к своим заявкам,
- после авторизации создается 7-дневный JWT/сессия устройства,
- повторный вход на том же устройстве не требует OTP до истечения срока.
C03. Переключение между заявками клиента
- Создать 2+ заявки на один телефон.
- Открыть клиентский кабинет.
- Переключаться между заявками в UI.
- Проверить:
- отображаются только заявки этого клиента,
- корректно обновляются статус, чат, файлы, важная дата, уведомления,
- переход не ломает состояние JWT/авторизации.
C04. Просмотр карточки заявки (видимость данных)
- Открыть заявку в клиентском кабинете.
- Проверить, что видны:
- номер заявки,
- тема,
- статус,
- важная дата (дедлайн),
- история/маршрут статусов,
- чат,
- файлы,
- запросы дополнительных данных.
- Проверить, что НЕ видны:
- ставка юриста,
- внутренние финансовые поля,
- служебные ID,
- служебные комментарии/системная информация, не предназначенная клиенту.
C05. Чат клиент <-> юрист (happy path)
- Клиент отправляет сообщение юристу.
- Юрист отвечает.
- Клиент обновляет/переоткрывает заявку.
- Проверить:
- сообщения отображаются в стиле чата,
- метки времени/даты корректны,
- непрочитанные индикаторы появляются и сбрасываются после открытия заявки,
- история сообщений сохраняется.
C06. Загрузка файлов клиентом (happy path)
- В карточке заявки/чате прикрепить файл.
- Отправить сообщение с файлом.
- Проверить:
- файл загружается,
- появляется в чате и во вкладке файлов,
- доступен предпросмотр/скачивание,
- размер учитывается в лимитах заявки.
C07. Запрос дополнительных данных от юриста (частичное заполнение)
- Юрист создает
Запросс несколькими полями. - Клиент открывает сообщение
Запрос. - Заполняет часть полей, сохраняет.
- Повторно открывает запрос и дозаполняет остальное.
- Проверить:
- заполненные поля отмечаются и зачеркиваются в чате,
- незаполненные остаются активными,
- после полного заполнения запрос сворачивается и меняет цвет/состояние.
C08. file-поле в запросе дополнительных данных
- Юрист создает запрос с полем типа
file. - Клиент загружает файл в это поле.
- Проверить:
- файл реально загружается как attachment,
- поле считается заполненным,
- файл доступен в файлах заявки и в контексте запроса,
- юрист видит, что запрос выполнен.
C09. Оповещения клиента
- Юрист меняет статус.
- Юрист отправляет сообщение.
- Юрист загружает файл.
- Клиент открывает кабинет.
- Проверить:
- есть визуальные индикаторы новых событий,
- открытие заявки сбрасывает непрочитанное состояние,
- важная дата обновляется при смене статуса.
C10. Терминальный статус (завершение заявки)
- Юрист/админ переводит заявку в терминальный статус.
- Клиент открывает заявку.
- Проверить:
- терминальный статус отображается корректно,
- маршрут/история статусов содержит финальную запись,
- важная дата по финальному статусу отображается.
C11. Ошибка загрузки файла (корнер-кейсы)
Проверить UI-реакцию и корректный текст ошибки:
- Слишком большой файл (>25MB).
- Превышение суммарного лимита по заявке (>250MB).
- Обрыв сети/ошибка presigned upload.
- Неподдерживаемый или некорректный MIME.
- Проверить:
- пользователь видит понятную ошибку,
- UI не зависает,
- частично неуспешная отправка не ломает чат,
- дубликаты/битые attachments не создаются.
C12. Слишком длинное сообщение / некорректное сообщение
- Отправить очень длинный текст (выше backend-лимита, если установлен).
- Отправить пустое сообщение.
- Отправить сообщение из пробелов.
- Проверить:
- понятная ошибка в UI,
- ничего лишнего в чат не попадает,
- состояние формы остается консистентным.
C13. Предпросмотр файлов (валидный / невалидный)
- Валидный
pdf,jpg,mp4,txt. - Невалидный PDF (файл с MIME
application/pdf, но без%PDF-). .txtс кривым MIME (application/pdf).- Проверить:
- валидные файлы открываются,
- невалидный PDF дает fallback (понятное сообщение / текстовый предпросмотр),
.txtоткрывается текстом даже при кривом MIME.
C14. Безопасность доступа клиента (изоляция)
- Открыть чужой номер заявки.
- Использовать JWT клиента #1 для заявки клиента #2.
- Попробовать открыть прямые URL файлов чужой заявки.
- Проверить:
- доступ запрещен,
- нет утечки метаданных.
LAWYER (Юрист)
L01. Вход и видимость заявок
- Войти как юрист.
- Открыть список заявок.
- Проверить видимость:
- свои заявки,
- неназначенные заявки,
- отсутствие чужих назначенных заявок.
L02. Claim неназначенной заявки
- В списке или в канбане выбрать неназначенную заявку.
- Нажать
Взять в работу. - Проверить:
- заявка назначается текущему юристу,
- в канбане/таблице обновляется исполнитель,
- claim логируется (audit),
- другой юрист больше не может ее claim'ить.
L03. Канбан: просмотр и работа с карточками
- Открыть
Канбан. - Проверить:
- группировка по группам статусов,
- карточки содержат ключевые поля (номер, клиент, тема, дедлайн/важная дата, индикаторы новых сообщений/файлов),
- горизонтальная прокрутка внутри блока, без растягивания страницы.
L04. Канбан: drag&drop смена статуса (однозначная группа)
- Перетащить карточку в колонку, где целевая группа сопоставляется с одним статусом.
- Проверить:
- статус меняется,
- важная дата проставляется по умолчанию (
+3 дня), если не задана явно, - изменение отображается в карточке и в истории статусов.
L05. Канбан: drag&drop в группу с несколькими статусами
- Перетащить карточку в колонку, где в группе >1 статуса.
- Проверить:
- открывается карточка заявки / модалка смены статуса,
- доступны только статусы соответствующей группы,
- можно выбрать конкретный статус и важную дату.
L06. Смена статуса из карточки заявки (happy path)
- Открыть карточку заявки.
- Нажать кнопку смены статуса.
- Выбрать новый статус, указать важную дату, добавить комментарий и файл.
- Отправить.
- Проверить:
- статус заявки обновился,
- важная дата изменилась,
- запись появилась в истории статусов,
- комментарий/файл попали в чат.
L07. Терминальный статус (закрытие заявки юристом)
- Юрист переводит заявку в терминальный статус.
- Проверить:
- статус обновлен,
- заявка считается завершенной в dashboard/метриках,
- история статусов содержит терминальный этап.
L08. История статусов в модалке смены статуса
- Открыть модалку смены статуса для заявки с несколькими сменами статусов.
- Проверить:
- список прокручивается внутри фиксированного блока,
- новые записи сверху, старые снизу,
- видны дата назначения, важная дата, длительность нахождения, комментарий (если есть).
L09. Важные даты (дедлайн) у юриста
- Сменить статус без указания даты.
- Проверить автоподстановку
+3 дня. - Сменить статус с ручной датой.
- Проверить:
- дедлайн отображается в карточке заявки,
- дедлайн отображается в канбане,
- цвет дедлайна в канбане соответствует сроку.
L10. Чат и файлы юриста
- Отправка сообщений клиенту.
- Отправка файлов.
- Отправка файла+сообщения.
- Drag&drop файлов в чат.
- Проверить:
- сообщения/файлы видит клиент,
- непрочитанные индикаторы работают,
- предпросмотр/скачивание работают.
L11. Запрос дополнительных данных (шаблоны)
- Открыть модалку
Запросить. - Выбрать существующий шаблон.
- Проверить автозагрузку полей шаблона в таблицу (без дубликатов).
- Добавить поле из справочника.
- Создать новое поле через тот же инпут.
- Сохранить шаблон:
- новый,
- перезапись своего.
- Проверить:
- чужой шаблон нельзя перезаписать (UI + backend),
- badge/tooltip соответствуют статусу шаблона.
L12. Ограничения редактирования заполненных клиентом доп.данных
- После заполнения клиентом открыть запрос в чате.
- Проверить, что юрист НЕ может:
- менять название поля,
- тип,
- порядок,
- удалять заполненное поле.
- Проверить backend-защиту (через UI негативный сценарий / при попытке сохранить).
L13. Ограничения по правам (чужая заявка)
- Попробовать открыть/изменить чужую назначенную заявку.
- Попробовать сменить статус чужой заявки.
- Попробовать загрузить файл/написать сообщение в чужую заявку.
- Ожидание: запрет доступа/операции.
L14. Финансовые ограничения
- Юрист не должен иметь возможность менять запрещенные финансовые поля через CRUD заявки.
- Юрист не может подтверждать оплату счета (
PAID). - Проверить UI/API сообщения об ошибке.
ADMIN (Администратор)
A01. Вход и доступ ко всем разделам
- Войти как администратор.
- Проверить доступ:
- Обзор,
- Канбан,
- Заявки,
- Счета,
- Справочники,
availableTablesпо прямой ссылке.
A02. Справочник пользователей (CRUD)
- Создать юриста:
- имя, email, пароль,
- роль,
- основная тема,
- дополнительные темы,
- ставка по умолчанию,
- процент,
- телефон,
- аватар.
- Отредактировать пользователя.
- Деактивировать/активировать.
- Проверить:
- данные сохраняются,
- аватар/инициалы отображаются корректно,
- роль и RBAC применяются.
A03. Справочники статусов и групп статусов
- Создать/редактировать группы статусов.
- Создать/редактировать статусы:
- группа,
- терминальность,
- kind (обычный / счет / оплачено).
- Проверить:
- канбан строится по группам,
- статусы появляются в свободном выборе смены статуса.
A04. Таблицы в справочниках и availableTables
- Открыть
/admin.html?section=availableTables. - Включать/выключать таблицы.
- Проверить:
- неактивные таблицы исчезают из списка справочников,
- активные появляются без фронтовой доработки (универсальное отображение),
clientsвидны в справочниках, если таблица активна.
A05. Заявки: полный CRUD и ручное управление
- Создать заявку вручную.
- Привязать существующего клиента.
- Создать нового клиента через форму заявки (если нет в списке).
- Изменить тему/описание/исполнителя/стоимость.
- Проверить:
client_idкорректно проставляется,- стоимость заявки видна админу/юристу, скрыта клиенту.
A06. Смена статуса заявки (с важной датой)
- Открыть карточку заявки.
- Через модалку смены статуса:
- выбрать любой статус,
- указать важную дату,
- добавить комментарий/файл.
- Проверить:
- изменения видны клиенту/юристу/админу,
- история статусов содержит важную дату и комментарий.
A07. Администратор может корректировать заполненные доп.данные
- После заполнения клиентом доп.данных открыть запрос.
- Удалить/изменить заполненную строку (если требуется).
- Проверить:
- операция разрешена админу,
- изменения консистентны.
A08. Счета и оплаты (happy path)
- Создать счет вручную.
- Проверить формирование PDF.
- Перевести в
Оплачен. - Проверить:
- дата оплаты проставляется,
- данные видны в списке счетов,
- юрист видит свои счета, админ — все.
A09. Billing через статусы
- Перевести заявку в billing-статус (если используется
INVOICE/PAID). - Проверить:
- срабатывает логика счетов/оплаты,
- сумма/зарплата отражается в дашборде.
A10. Dashboard администратора
Проверить плитки и метрики:
- Новые / в работе / и др. статусы.
- Выручка за месяц.
- Расходы (зарплата юристов) за месяц.
- Карточки загрузки юристов:
- активные,
- новые,
- закрыто,
- сумма,
- зарплата.
- Модалка статистики юриста:
- фиксированные хедеры,
- таблица активных заявок,
- сумматоры внизу,
- корректные переходы в карточки заявок.
A11. Безопасность / аудит / доступы
- Проверка доступа к файлам S3 по ролям.
- Предпросмотр PDF/файлов через iframe/same-origin.
- Проверка аудита действий (security audit / audit log).
- Проверка, что ПДн и финансовые данные не уходят в публичный контур.
A12. Corner cases администратора
- Ошибки сохранения (невалидные поля, несуществующие ссылки).
- Одновременное редактирование (refresh после сохранения).
- Попытка удалить сущность, на которую есть ссылки.
- Некорректные даты/числа в универсальных формах.
- Проверить понятные ошибки и отсутствие “битого” состояния UI.
Межролевые интеграционные сценарии (сквозные)
X01. Полный цикл заявки (client -> lawyer -> terminal)
- Клиент создает заявку.
- Юрист берет в работу.
- Юрист ведет чат, запрашивает данные/файлы.
- Клиент заполняет запрос.
- Юрист меняет статусы, выставляет важные даты.
- Юрист завершает заявку терминальным статусом.
- Проверить весь таймлайн и видимость по ролям.
X02. Цикл со счетом и оплатой
- Клиент создает заявку.
- Юрист/админ переводит в статус выставления счета.
- Админ формирует/подтверждает оплату счета.
- Проверить:
- счет виден в заявке и в списке счетов,
- статус оплаты влияет на финансовые метрики,
- зарплата юриста считается после
Оплачено.
X03. Непрочитанные события и уведомления
- Создать набор событий: статус, сообщение, файл.
- Проверить отображение индикаторов:
- в списках,
- в канбане,
- в карточке заявки.
- Проверить сброс после открытия заявки соответствующей ролью.
X04. Ограничения прав и изоляция
- CLIENT не видит служебные/финансовые поля.
- LAWYER не видит/не меняет чужие заявки.
- LAWYER не подтверждает оплату.
- LAWYER не редактирует заполненные клиентом доп.данные.
- ADMIN имеет доступ ко всем данным и операциям.
Corner Cases (общий список для обязательного покрытия)
- Пустые поля / пробельные значения.
- Слишком длинные тексты сообщений / комментариев.
- Файлы:
-
25MB,
- превышение 250MB на заявку,
- невалидный PDF,
.txtс кривым MIME.
-
- Повторные клики / double-submit.
- Потеря сети во время upload/send/status-change.
- Истекший JWT / отсутствие OTP.
- Конфликт назначения заявки (claim race).
- Удаление/изменение связанной сущности (клиент/статус/пользователь).
- Переключение между заявками/разделами при открытых модалках.
Рекомендация по автоматизации (e2e backlog)
Приоритетно выделить в отдельные Playwright-сценарии:
public_client_notifications_flowlawyer_status_change_modal_flow(важная дата + комментарий + файл)kanban_multi_status_group_flow(drag&drop -> выбор статуса)admin_finance_billing_dashboard_flowclient_file_upload_errors_flowrbac_negative_flows(client/lawyer/admin)