/Search-number-plate

Test task for creating an application that looks for a car number in an attached excel document.

Primary LanguageTypeScript

Описание приложения по поиску номеров

Как запустить приложение

Для запуска введи в терминале:

npm start

Чтобы собрать билд введи:

npm run build

Какие инструменты использовались

В ходе разработки использовались React, TypeScript, Redux-Toolkit, Модульные стили, Адаптиваная верстка. Для парсинга Exel документов использовалась библиотека SheetJS

Описание алгоритма

После того как файл прикреплен и библиотека SheetJS обработала документ, алгоритм сверяет значения ячеек на предмет соответствия формату гос. номера РФ, а именно должны быть только буквы, используемые в номерах РФ, имеющие аналог из латинского алфавита (А, В, Е, К, М, Н, О, Р, С, Т, У, Х) и иметь вид А874АХ197. Если в документе обнаруживаются невалидные ячейки, показывается соответствующий алерт с перечнем таких значений. Если в документе не обнаруживается валидных ячеек, то показывается соответствующий алерт с предложением прикрепить другой документ, соответственно поля для поиска в этом случае нет.

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

Поле ввода для поиска индицируется, если документ прикреплен и имеет валидные значения. Имеется валидация введенного значения. Таким образом, если введено менее 3х символов, формат не соответсвует ГОСТу или введены латинские буквы, выдается сообщение об ошибке. Поиск можно инициировать двумя способами. Нажав кнопку найти или клавишей Enter.

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