Skip to main content

Доработки модуля ввода данных

Бизнес-требования

  • Пользователь должен видеть корректную подпись и форматирование строки итогов, без схлопывания текста и с явным словом «Итого»; ввод и отображение должны соответствовать типу данных полей.
  • После удаления строк идентификаторы строк должны оставаться последовательными и предсказуемыми для ссылок, формул и интеграций.
  • Наличие комментария к ячейке должно быть заметно в интерфейсе без открытия каждой ячейки.
  • Ограничения видимости столбцов формы, заданные в 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 для столбцов таблиц для определенных юзеров
    • Если такой возможности нет, написать об этом в таске

Поиск по спискам в модальных окнах

Проблема: во многих полях ввода есть шеврон для раскрытия списка, но самого списка, по сути, нет – система отдает в формате подсказки возможные варианты. Некоторые списки некорректны, так как вызываются из окна одной таблицы, а должны ссылаться на другую таблицу

 

Доработать бэк – отдавать не только список форм, но и список ВСЕХ их полей.

Доработать фронт – везде сделать раскрывающиеся списки с выбором из этих значений, без свободы текста

Поправить некоторые списки: убрать значение "Выберите колонку" (массовая операция по подмножеству)

 

 

Пользовательский интерфейс

Расположение полей без списков:

  • МВД → ПКМ поду ячейке таблицы →
    • Настроить выражение → Добавить правило → Целевая колонка
    • Консолидация → Добавить источник →
      • Таблица источник
      • Добавить сопоставление ключей →
        • Исходный ключ
        • Ключевая колонка дтекущей таблицы
      • Добавить сопоставление зныачений →
        • Исх -> модальныое окзначение
        • с
        • Колонка дтекущей таблицы

Расположеннымие списков с лишним взначением:

  • МВД → ПКМ по ячейке таблицы → Настроить бизнес-прорцесс → Включить → 
    • На (конкретчальный пстатус
    • Перечень — в пходы между статусами →
      • Из стадтусач
      • В статус
  • Фильтры → Выберите иколонвентаризации).ку

Изменения:

  • НадДля полей без списком или в ш– запкменить модального окна раскрывающиеся списки
  • Для списков с лишними значениями – убрать дефолтное значение из споиска с фильтрацией, по умолчанию подстрокавляе без учёта регистра (илия по перавилам продукта).
  • Пустой поиск показывает полный список; при отсутствии результатов — понятное сообщзначение. из набора данных

 

Системная логика – фронтенд
  • Реализовациять в указанных в поильзовательскаом дляинтерфейсе модесталох раск рывающиесоя списки
  • Вом цвселиком на клиенте: фильтрация уже загруженногох списка;х по умолчанию стоит первое из необходимоступных значений
  • Свободный ввод (как в полебаунс ввода.) запрещён
  • Для мПодтягивалок,ть гдев эти списки значения:
    • В целевую колонку бизнес-правил – все колонки открытой таблицы
    • В таблицу-источник в консолидации – все таблицы всех доступных проектов, первыми в списке идут таблицы текущего пружоекта, если имеются (кроме той таблицы, из которой вызвана консолидация)
    • В исходный ключи и исходное значение консолидации:
      • При наличии выбранной таблицы-источника – поля выбранной таблицы-источника
      • При отсутствии выбранной таблицы-источника – ничего
    • В ключевую колонку текущей таблицы и колонку текущей таблицы консолидации – поля из текущей таблицы
  • Удалить первоер значение стрв указаницами,ных при доработке API — параметрв пользовательском интерфейсе раскрывающихся списках

 

Системная логика – бэкенд

Возвращать в ответ на запрос search не столько проекты иск таблицы, но и согласованное поведение пустойлбцы выдсех этих тачблиц

(оформляется

 отдельным подпунктом при появлении изменений на бэкенде).

Базовый режим и рРежим редактирования: доступность элементов

Пользовательский интерфейс

РаКонтексптноложе меню ячейки в режиме редактирования (с максимальным уровнем прав):

  • МКонсолидулация
  • Настроить выражение
  • Массовая операция по подмножеству
  • Добавить строку итогов
  • ———————————
  • Добавить строку ниже
  • Добавить строку выше
  • Уданных -> панелить истроку

Контекстное меню ячейки в базовом режиме (с максимальным уровнем прав):

  • Режим редактирования
  • Редактировать форму
  • Настроить права доступа
  • ———————————
  • Консолидация
  • Настроить бизнес-процесс
  • Добавить строку фитогов
  • Показать ID
  • ———————————
  • Импорт из Excel
  • Экспорт в Excel
  • ———————————
  • Комы.ментарий ячейки
  • История ячейки

 

Системная логика – фронтенд
  • Перегруппировать контекстные меню (см. порядок в пользовательском интерфейсе)
  • Добавить разделители в контекстные меню (см. порядок в пользовательском интерфейсе)
  • Изменить доступностиь кнопок:

    • ВНастроить выражение: настройка «Выражение» доступна только при включённом режиме редактирования; в базовом режиме скрыта или недоступна.
    • Массовая операция по подмножеству: только в режиме редактирования
    • Строка итогов: работает всегда, вне зависимости от режима (отображение и использование итогов; при отдельном редакторе правил итогирования границы базового режима согласовать с продуктовой политикой, см. примечания).
    • БНастроить бизнес-процесс: в режиме редактирования секция отображается только интерфейсная часть текущего процесса, элементы настройки привязки и параметров недоступны
    • (
    • Настроить права доступа: только пв базовом росежимотр, read-only или disabled).е
    • Консолидация: работает всегда, вне зависимости обоихт режимах. без
      искусственного отключения в базовом режиме, если иное не следует из политики безопасности.
    Системная
  • логика

 фронтенд

  • Единые флаги режима редактирования для условного рендера и недоступности (disabled) элементов н

    Настройки; единые точки входа дляцвета менюстатуса би пазнелей наст-процек.

  • сса

 

 

Критерии приёмки

  • В строке итогов отображается слово «Итого» (или локализованный эквивалент); при стандартных размерах окна и колонок текст не сливается в нечитаемую строку; значения итогов соответствуют типам столбцов, при ошибке типа пользователь видит явную обратную связь.
  • В консолидации при сопоставлении полей допустимы символы, согласованные с бэкендом, без ограничения «только латиница»; алиас задаётся, сохраняется и отображается в интерфейсе настроек и связанных местах.
  • После удаления строк набор идентификаторов или порядковых номеров согласован с зафиксированной в реализации моделью и не ломает консолидацию, ссылки и повторное открытие формы; отображаемая нумерация без «дыр», если нумерация показывается.
  • Ячейка с комментарием визуально отличима сразу после добавления комментария и при последующем просмотре таблицы.
  • Пользователь с запретом на столбцы в DIS не видит эти столбцы во Fastboard при загрузке и дальнейшей работе; для этого пользователя не передаётся содержимое запрещённых столбцов в обход правил CLS.
  • В согласованном перечне модальных окон модуля ввода данных поиск по списку фильтрует элементы ожидаемо; при отсутствии совпадений отображается понятное состояние пустого списка.
  • В базовом режиме настройка выражения недоступна; строка итогов отображается и используется; консолидация работает штатно; в режиме редактирования выражение настраивается; бизнес-процесс виден, но не настраивается.

Примечания для постановки в работу

  • Уточнить у заказчика, относится ли формулировка «строка итогов работает всегда» только к просмотру итогов или также к изменению правил итогирования в базовом режиме — от этого зависит точное правило disabled для редактора итогов.
  • Для поиска в модальных окнах зафиксировать явный список экранов в подзадаче инвентаризации.
  • При необходимости запрета обхода настроек через прямой вызов API добавить проверки на бэкенде и тогда дополнить соответствующий подраздел документа разделом «Системная логика – бэкенд».