МВД Модуль ввода данных Доработки модуля ввода данных Бизнес-требования Пользователь должен видеть корректную подпись и форматирование строки итогов, без схлопывания текста и с явным словом «Итого»; ввод и отображение должны соответствовать типу данных полей. После удаления строк идентификаторы строк должны оставаться последовательными и предсказуемыми для ссылок, формул и интеграций. Наличие комментария к ячейке должно быть заметно в интерфейсе без открытия каждой ячейки. Ограничения видимости столбцов формы, заданные в DIS для пользователя, не должны обходиться при открытии той же формы во Fastboard: пользователь не видит столбцы, которые ему запрещены. В модальных окнах со длинными списками выбора должен быть быстрый поиск по списку. В базовом и режиме редактирования доступность элементов настройки и работы с формой должна соответствовать правилам: выражение настраивается только в режиме редактирования; строка итогов доступна всегда; бизнес-процесс виден в режиме редактирования, но не настраивается; консолидация работает в штатном режиме без лишних ограничений. Решение Строка итогов Пользовательский интерфейс Расположение: Модуль ввода данных → ПКМ по форме → Добавить/редактировать строку итогов → Модальное окно редактирования строки итогов Изменения: Добавить чекбокс "Показывать подпись «Итого» в первом столбце", по умолчанию не выбран Если выбран чекбокс "Показывать подпись «Итого» в первом столбце", то для первого столбца в блоке выбора операции агрегирования будет недоступен раскрывающийся список В раскрывающихся списках для выбора агрегации недоступны варианты, которые не применимы для типа данных столбца: функции СУММ, СРЗНАЧ, ПРОИЗВЕД, МАКС, МИН не работают на столбцах с НЕ числовым типом данных Системная логика – фронтенд Если выбран чекбокс "Показывать подпись «Итого» в первом столбце", то блокируется возможность подсчета итогов по этому столбцу, в этом столбце в строке итогов пишется "Итого"+ В раскрывающихся списках для каждого столбца должны быть только те варианты агрегации, которые доступны для указанного типа: Для типов "Целое число" и "Дробное число" – все варианты агрегации Для остальных типов – варианты агрегации НЕ СЧИТАТЬ, СЧЁТ, СЧЁТЗ Пересчёт идентификаторов строк при удалении Системная логика – бэкенд При выполнении запроса на удаление (table/{tableId}/batch с передачей в теле запроса непустого массива delete) пересчитывать идентификаторы в системном столбце id заново, начиная с 1 по порядку без пропусков и возвращать на фронт Визуальная индикация комментария к ячейке Пользовательский интерфейс Расположение: Модуль ввода данных → ячейки формы Изменения: Ячейка с комментарием отличается от ячейки без комментария: добавляется маркер угла При наведении на ячейку с маркером комментария доступен просмотр текста комментария. Системная логика – бэкенд Возвращать на фронт вместе с данными ячеек метку hasComments логического типа для каждой ячейки формы: True, если есть хотя бы один комментарий, False, если нет ни одного комментария Возвращать на фронт вместе с меткой комментария список комментов массивом объектов: каждый объект включает в себя текст комментария, автора, дату и время создания, отдельный массив для каждой ячейки с комментариями Системная логика – фронтенд При наличии комментария у ячейки (hasComments = "True") рисовать маркер на углу ячейки При наведении курсора на ячейку с комментариями показывать во всплывающем окне комментарии списком в формате: Блок первого комментария: Автор + дата/время Комментарий Строка отступа Блок второго комментария и т.д. для всех комментариев Если комментариев больше 5, то показывать последние 5 Согласованность ограничений видимости столбцов МВД и Fastboard (CLS) Краткий сценарий: МВД отдает в FB список в формате: юзер айди в FB: список запрещенных столбцов Бэк FB создает таблицу-связь между юзерами и источниками-МВД В этой таблице-связи указываются userId, sourceId, bannedColumns – запрещенные колонки Фронт запрашивает file_preview от имени юзера. Бэк отдает только те колонки, которых нет в bannedColumns При вызове запроса на формирование скрипта с колонкой, которая недоступна пользователю (например, при вызове script/{id}/table/without-save) не пропускать такие запросы с возвратом ошибки Если есть возможность, контролировать загрузку данных из таких источников: например, устанавливать constraint для столбцов для определенных юзеров Системная логика – бэкенд МВД При получении запроса PUT table/{tableId}/access/columns на обновление прав доступа к таблице передавать в Fastboard тело запроса с фронта: Заменяя user_id на user_id в Fastboard Добавляя table_id той формы, из которой пришли изменения Оставляя только can_read, игнорируя can_edit { "table_id": "id", [ { "column_name": "string", "permissions": [ { "user_id": "id", "can_read": "boolean" } ] }, { "column_name": "string", "permissions": [] } ] } Системная логика – бэкенд Fastboard Требуется таблица-связь пользователей с источниками, необходимо, чтобы в этой таблице было поле bannedColumns (запрещенные столбцы) Настроить получение от МВД запросов на ограничение доступов к столбцам определенных источников, определенных пользователей: Если для user_id и table_id приходит column_name с permission.can_read = "False", то в таблицу-связь этого юзера и этой таблицы источника-МВД добавляется значение column_name в bannedColumns При любых запросах с фронта к этой таблице возвращать только те столбцы, которых нет в bannedColumns (например, в запросе file_preview) При вызове запроса на формирование скрипта с колонкой, которая недоступна пользователю (например, при вызове script/{id}/table/without-save) не пропускать такие запросы с возвратом ошибки Если есть возможность, контролировать загрузку данных из таких источников: например, устанавливать constraint для столбцов таблиц для определенных юзеров Если такой возможности нет, написать об этом в таске Поиск по спискам в модальных окнах Проблема: во многих полях ввода есть шеврон для раскрытия списка, но самого списка, по сути, нет – система отдает в формате подсказки возможные варианты. Некоторые списки некорректны, так как вызываются из окна одной таблицы, а должны ссылаться на другую таблицу Пользовательский интерфейс Расположение полей без списков: МВД → ПКМ по ячейке таблицы → Настроить выражение → Добавить правило → Целевая колонка Консолидация → Добавить источник → Таблица источник Добавить сопоставление ключей → Исходный ключ Ключевая колонка текущей таблицы Добавить сопоставление значений → Исходное значение Колонка текущей таблицы Расположение списков с лишним значением: МВД → ПКМ по ячейке таблицы → Настроить бизнес-процесс → Включить → Начальный статус Переходы между статусами → Из статуса В статус Фильтры → Выберите колонку Изменения : Для полей без списков – заменить на раскрывающиеся списки Для списков с лишними значениями – убрать дефолтное значение из списка, по умолчанию подставляется первое значение из набора данных Системная логика – фронтенд Реализовать в указанных в пользовательском интерфейсе местах раскрывающиеся списки Во всех списках по умолчанию стоит первое из доступных значений Свободный ввод (как в поле ввода) запрещён Подтягивать в эти списки значения: В целевую колонку бизнес-правил – все колонки открытой таблицы В таблицу-источник в консолидации – все таблицы всех доступных проектов, первыми в списке идут таблицы текущего проекта, если имеются (кроме той таблицы, из которой вызвана консолидация) В исходный ключи и исходное значение консолидации: При наличии выбранной таблицы-источника – поля выбранной таблицы-источника При отсутствии выбранной таблицы-источника – ничего В ключевую колонку текущей таблицы и колонку текущей таблицы консолидации – поля из текущей таблицы Удалить первое значение в указанных в пользовательском интерфейсе раскрывающихся списках Системная логика – бэкенд Возвращать в ответ на запрос search не только проекты и таблицы, но и столбцы всех этих таблиц Режим редактирования Пользовательский интерфейс Контекстное меню ячейки в режиме редактирования (с максимальным уровнем прав): Консолидация Настроить выражение Массовая операция по подмножеству Добавить строку итогов ——————————— Добавить строку ниже Добавить строку выше Удалить строку Контекстное меню ячейки в базовом режиме (с максимальным уровнем прав): Режим редактирования Редактировать форму Настроить права доступа ——————————— Консолидация Настроить бизнес-процесс Добавить строку итогов Показать ID ——————————— Импорт из Excel Экспорт в Excel ——————————— Комментарий ячейки История ячейки Системная логика – фронтенд Перегруппировать контекстные меню (см. порядок в пользовательском интерфейсе) Добавить разделители в контекстные меню (см. порядок в пользовательском интерфейсе) Изменить доступность кнопок: Настроить выражение: настройка доступна только при включённом режиме редактирования; в базовом режиме недоступна. Массовая операция по подмножеству: только в режиме редактирования Строка итогов: работает всегда, вне зависимости от режима. Настроить бизнес-процесс: в режиме редактирования отображается только интерфейсная часть текущего процесса, элементы настройки привязки и параметров недоступны Настроить права доступа: только в базовом режиме Консолидация: работает всегда, вне зависимости от режима. Критерии приёмки Строка итогов: Открыть модальное окно добавления или редактирования строки итогов (ПКМ по форме → Добавить/редактировать строку итогов) – отображается чекбокс «Показывать подпись «Итого» в первом столбце», по умолчанию не выбран. Включить чекбокс, сохранить настройки и открыть форму – в строке итогов в первом столбце отображается «Итого»; при повторном открытии модального окна для первого столбца список операций агрегирования недоступен. Открыть список агрегации для столбца типа «Целое число» или «Дробное число» – в списке доступны все операции, включая СУММ, СРЗНАЧ, ПРОИЗВЕД, МАКС, МИН. Открыть список агрегации для столбца с любым другим типом – доступны только НЕ СЧИТАТЬ, СЧЁТ, СЧЁТЗ; СУММ, СРЗНАЧ, ПРОИЗВЕД, МАКС, МИН отсутствуют или недоступны. Пересчёт идентификаторов строк при удалении: Включить «Показать ID», зафиксировать номера в столбце id – номера отображаются. Удалить одну или несколько строк из середины таблицы – в столбце id остаётся непрерывная нумерация с 1 без пропусков; оставшиеся строки редактируются и сохраняются без ошибок. Визуальная индикация комментария к ячейке: Добавить комментарий к ячейке и сохранить – у ячейки появляется маркер в углу. Просмотреть таблицу после добавления комментариев в разные ячейки – ячейки с комментариями отличаются маркером, ячейки без комментариев – без маркера. Навести курсор на ячейку с одним или несколькими комментариями – во всплывающем окне для каждого комментария отображаются автор, дата и время, текст. Добавить в одну ячейку более пяти комментариев, навести курсор – во всплывающем окне отображаются пять последних комментариев с автором, датой и текстом. Согласованность ограничений видимости столбцов МВД и Fastboard (CLS): В МВД запретить тестовому пользователю чтение одного или нескольких столбцов формы – права сохранены. Открыть ту же форму во Fastboard под этим пользователем – запрещённых столбцов нет в таблице и при предпросмотре. Под пользователем с запретом выполнить действие с недоступным столбцом (например формирование скрипта) – операция не выполняется, отображается понятная ошибка. Открыть форму во Fastboard под пользователем с полным доступом – отображаются все столбцы формы. Раскрывающиеся списки в модальных окнах и полях настройки: Открыть настройку выражения, консолидации, бизнес-процесса или фильтр в перечисленных в ТЗ полях – вместо свободного ввода отображается раскрывающийся список, произвольный текст ввести нельзя. Открыть любое из этих окон без предварительного выбора – в каждом списке по умолчанию выбрано первое доступное значение, пустая строка не подставлена. Открыть «Целевую колонку» в правиле выражения – в списке только колонки открытой таблицы. Открыть «Таблицу-источник» в консолидации – в списке таблицы доступных проектов, таблицы текущего проекта в начале; таблица, из которой открыта консолидация, отсутствует. Открыть консолидацию без выбранной таблицы-источника – списки «Исходный ключ» и «Исходное значение» пусты; выбрать таблицу-источник – в списках появляются поля выбранной таблицы. Открыть настройку бизнес-процесса или фильтр – в списках «Начальный статус», «Из статуса», «В статус», «Выберите колонку» нет пустого значения по умолчанию, сразу доступны реальные статусы или колонки. Режим редактирования: Открыть контекстное меню ячейки в базовом режиме (максимальный уровень прав) – порядок пунктов и разделители соответствуют ТЗ; пунктов «Настроить выражение» и «Массовая операция по подмножеству» нет. Включить режим редактирования, открыть контекстное меню – порядок пунктов и разделители соответствуют ТЗ; пункта «Настроить права доступа» нет. В базовом режиме вызвать «Добавить строку итогов» и «Консолидация» – окна открываются; повторить в режиме редактирования – окна также открываются. В режиме редактирования вызвать «Настроить выражение» и «Массовая операция по подмножеству» – функции доступны; в базовом режиме эти пункты в меню отсутствуют или недоступны. В базовом режиме вызвать «Настроить права доступа» – окно открывается; в режиме редактирования пункта в меню нет. В режиме редактирования открыть «Настроить бизнес-процесс» – текущий процесс на форме виден, элементы настройки привязки и параметров недоступны для изменения.