Привет, Хабр! Меня зовут Лена Махова, я работаю системным аналитиком в РСХБ‑Интех. Бывают ситуации, когда нужно решить проблему бизнеса и сократить время на разработку. Так случилось и у нас, когда пришел заказ от смежников доработать интеграцию в части передачи значения «номер ИД» (исполнительный документ). В материале рассказываю, как мы решили эту задачу, и даю шаблон кода решения, чтобы при желании вы также могли им воспользоваться.

Аналитик достаточно часто встречается с ситуациями, когда нужно выполнить пожелание бизнеса в максимально сжатые сроки. Чаще всего это связано с доработкой интеграции в рамках работы со смежными подразделениями. Приведу пример.

К нам пришел запрос из смежного подразделения на доработку интеграции и передачи значения «Номер Исполнительного документа», которое должно быть не редактируемым. Юридическая служба получает исполнительный документ, вводит в систему его номер, и далее это значение передается пользователям смежных систем, которые выбирают из списка нужный документ. Запрос на доработку был вызван большим количеством ошибок ввиду неправильного ручного ввода номеров исполнительных документов.

Доработка интеграции — сложный и небыстрый процесс. Но в нашем случае необходимо было оперативное решение. Собственно это функционал, который обеспечивает качество работы и не влияют на показатели бизнеса и прибыль, в том числе. Поэтому решение должно было быть из серии — «Минимум трудозатрат и оперативный Time to Market».

В кратчайшие сроки мы провели ряд совещаний со смежными подразделениями. По итогу было принято решение наложить маску ввода на поле. Мы ограничили пользователю возможность ввода определенных данных и вывели комментарии по заполнению поля. Это существенно снизило трудозатраты на реализацию, повысило качество вводных данных при минимальных затратах на разработку.

Аналитик принимает во внимание, на каких этапах происходит заполнение поля номера исполнительного документа, и по итогам пишет техническое задание для разработчика для наложения маски на нужные этапы. Стоит отметить, что маска ввода может по‑разному накладываться. В нашем случае пользователи кроме цифр вводят символы, такие как слэш, тире и не только. Мы написали код таким образом, что слеш и тире теперь будут вставляться автоматически на определенных этапах ввода номера. После реализации, естественно, последовало тестирование и доработка функции, в конечном итоге она вышла в продакшен.

Делимся шаблоном маски, который вы можете взять для своего проекта. Функция написана на javascript c применением регулярных выражений RegExp.

// Шаблон № ИП:
// цифры, «/»,две цифры, символ «/»,
// четыре цифры, символ «-»,
// далее два символа в верхнем регистре русской раскладки –или ИП, или СВ, или СД
// Пример:542145345/23/5468-ИП
export const executionNumber = {
    mask: (rawValue) => {
        const digitCount = (rawValue.match(/\d/g) || []).length;
        let mask = [];
        let slashIndex = rawValue.indexOf('/');
        for (let i = 0; i < digitCount; i++) {
            mask.push(/\d/);
            if (i === slashIndex -1) {
                break;
            }
        }
        mask.push(
            /\//,
            /\d/,/\d/,
            '/',
            ...Array(4).fill(/\d/),
            '-',
            /[А-Я]/, /[А-Я]/
        );
        return mask;
    },
    ph: 'Пример: 542123423/23/5468-ИП'
};

После продакшена работа над проектом не закончилась. Мы собираем данные о работе решения и изменении качества вводных данных, анализируем число ошибок и нюансы реализации. По результатам мониторинга, который производится ежеквартально, мы подсчитаем процент ошибок. Если этот показатель не будет превышать критические значения, и реализация устроит бизнес‑заказчика, значит малыми силами и простым решением мы решили большую задачу.

Пожалуй, из этого следует вынести три совета аналитикам:

  • анализировать вводные и возможность переиспользования функционала;

  • искать и предлагать простые решения;

  • аргументировать и защищать свою позицию перед заказчиком.

Буду рада, если вы поделитесь опытом решения аналогичных задач в комментариях.

Комментарии (13)


  1. aleksandy
    06.09.2023 10:57
    +3

    Этот трэшак же написал джун-аналитик незнакомый с регулярными выражениями, да?

    // Шаблон № ИП:
    // цифры, «/»,две цифры, символ «/»,
    // четыре цифры, символ «-»,
    // далее два символа в верхнем регистре русской раскладки –или ИП, или СВ, или СД
    // Пример:542145345/23/5468-ИП

    /^\d+\/\d{2}\/\d{4}-(ИП|СВ|СД)$/


    1. Vpan
      06.09.2023 10:57

      Главное, чтобы работало. Функция выше, как я понял, соберет нужную маску, вот только условию: "или ИП, или СВ, или СД" - не соответствует: пропустит любые две буквы в верхнем регистре.


      1. aleksandy
        06.09.2023 10:57

        Главное, чтобы работало.

        Ну-да, ну-да. А потом мы жалуемся, что одна страничка жрёт гигабайты памяти.


        1. Vpan
          06.09.2023 10:57

          Не без этого. Но все же "не работает и жрет много памяти" и "работает и жрет много памяти" - это разные ситуации.


        1. ElenaMaster Автор
          06.09.2023 10:57

          Отсюда следует... Во-вторых, есть код ревью, для контроля за разработчиком оптимальность написания кода. И это функция не аналитика.


      1. sophist
        06.09.2023 10:57

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


        1. ElenaMaster Автор
          06.09.2023 10:57

          Мне кажется, вы совсем мало знаете о строительстве, если такое пишете


          1. sophist
            06.09.2023 10:57

            Это цитата. Довольно известная, из "Законов Мерфи".


      1. ElenaMaster Автор
        06.09.2023 10:57

        Тестирование было проведено, любые не проходят


        1. sophist
          06.09.2023 10:57

          А любые две кириллические (в верхнем регистре)?


          1. ElenaMaster Автор
            06.09.2023 10:57

            да, две любые. Но у нас требование было такое, чтобы две буквы на русской раскладке (в верхнем регистре) . В данной ситуации разработчик закомментировал строку, выбрав образец данный в ТЗ. Собственно, это моя первая статья и я не думала, что будут читать код и закомментированные строки. Учту на будущее. спасибо.


        1. Vpan
          06.09.2023 10:57

          Забыл написать, что буквы должны быть кириллическими. Но из комментария ниже понял, что две любые кириллические буквы в верхнем регистре не проходят. Значит, реализовали лучше, чем в коде в статье.


    1. ElenaMaster Автор
      06.09.2023 10:57

      Благодарю за комментарий. Во-первых- это фрагмент кода, а не ТЗ. Нужно понимать, что аналитик делает свою часть работы, разработчик свою.