Я сама так как-то сделала и получила люлей от разработки, больше не делаю.
Если тоже не хотите получать люлей, то вот список вопросов, на которые нужно ответить при составлении сценариев, самостоятельно, а лучше с разработкой. Здесь нет готовых ответов, а вопросов очень много, поэтому под катом.
1. Форма загрузки файла
• Есть ли ограничения на количество файлов, их объём по весу, количеству строк?
• Где написать об этих ограничениях?
• Есть ли шаблон для заполнения и где его можно взять?
• Можно ли давать выбирать файлы только определённых форматов?
• Как удалить прикреплённый файл из формы?
2. Тип обработки файла
Система будет проверять файл на разные ошибки, забирать данные и что-то с ними делать.
• Что в этот момент может делать пользователь — он должен дождаться полной обработки файла или может выполнять другие задачи?
• Если пользователь должен дождаться обработки, что он видит?
Например, крутящийся лоадер, задизейбленный интерфейс, модалку, которую нельзя закрыть, прогресс бар
• Если перезагрузить страницу, процесс работы сбросится или частично выполнится? Как пользователь об этом узнает?
• Если перезагрузка критична, где и как об этом предупредить?
• Если пользователю не нужно ждать окончания (это обычно называется асинхронный / фоновый процесс), то как пользователь узнает, что процесс завершился? Где он увидит результаты?
• Где он сможет посмотреть, что сейчас происходит с файлом и понять, что система работает, файл обрабатывается?
Часто делают некий центр задач (фоновые задачи, фоновые процессы — любое название). Там есть список всех процессов со статусами, информацией, временем до завершения, кнопками действий и прочим важным.
3. Ошибки и предупреждения
• Как мы будем показывать ошибку, если вообще не можем прочитать данные?
Например, мы ожидаем структуру по шаблону, а пользователь загрузил файл с отсебятиной. Или строк в его файле больше, чем можно. Тогда мы даже обрабатывать файл не будем, а попросим пользователявыйти и зайти нормальнозагрузить нормальный файл
Если всё ок, то нужно проверить на более сложные ошибки. Дубли строк, отрицательные числа в количестве, несуществующие ID — зависит от данных в файле и правил продукта. Поиск таких ошибок обычно требует времени.
• Где выводить такие ошибки? Как пользователь будет исправлять эту ошибку?
• Если часть информации с ошибками, а часть нет — система проигнорирует всё или возьмёт в работу то, что без ошибок? Как пользователь поймёт, что применилось, а что нет?
Можно вывести модалку, где будет перечень ошибок, можно давать скачивать исходный файл с подробными пометками об ошибках, можно давать пользователю возможность скопировать ошибочные значения одной кнопкой, не показывая их в интерфейсе.
Можно дать пользователю возможность проигнорировать все ошибочные записи.
• Есть ли предупреждения, что пользователь может с ними сделать? Как просмотреть, как исправить, как проигнорировать?
4. Успешная обработка
• Нужен ли предпросмотр полученных из файла данных? Как он должен выглядеть?
• Должен ли пользователь подтверждать изменения или всё происходит без его вмешательства?
• Где показываем статус о том, что всё прошло хорошо?
• Можно ли отменить успешную загрузку?
• Как посмотреть историю загрузок, время, автора?
И вот из 2 экранов флоу превращается в огромную паутину макетов с корнеркейсами и разветвлениями. Зато потом пользователь не сидит в растерянности с мыслью «я что-то загрузил, оно куда-то делось, что теперь?»
