#1148 closed улучшение (не будем делать)

Валидация серийных номеров не соответствует установленному формату

Reported by: alx Owned by: san
Priority: major Component: БД изделий АДС
Keywords: Cc:

Description (last modified by alx)

В нашей компании действует устное распоряжение директора, предписывающее присваивать производимым изделиям серийные номера формата "латинская заглавная буква и следующие за ней 5 цифр". Однако в r213/base валидация вводимых серийных номеров производится по совпадению с регулярным выражением ^([A-Z]?\d{5}|Р\d{6}|[А-Я]\d{4})$. Таким образом, валидация не соответствует распоряжению директора.

Предлагаю привести регулярное выражение, которым валидируются серийные номера изделий, в соответствие распоряжению директора, а именно к такому виду: ^[A-Z]\d{5}.

Attachments (1)

ss1.jpg (25.9 KB ) - added by alx 19 months ago.

Download all attachments as: .zip

Change History (17)

by alx, 19 months ago

Attachment: ss1.jpg added

comment:1 by san, 19 months ago

На чём основаны эти ожидания?

in reply to:  1 comment:2 by alx, 19 months ago

Replying to san:

На чём основаны эти ожидания?

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

comment:3 by san, 19 months ago

Добавил в #997 формат серийных номеров.

Формат серийных номеров изделий:
A12345 - латинская заглавная буква и 5 цифр
12345 - 5 цифр
Б1234 - русская заглавная Б и 4 цифры
Р123456 - русская заглавная Р[эр] и 6 цифр

Номер из твоего примера не соответствует формату, но в коде я вижу проверку ^([A-Z]?\d{5}|Р\d{6}|[А-Я]\d{4})$ в которой явно упущен вариант 5 цифр

in reply to:  3 comment:4 by alx, 19 months ago

Replying to san:

Добавил в #997 формат серийных номеров.

Добавил комментарий о том, что этот список неполный (отсутствует серийный номер из 6 цифр).

Номер из твоего примера не соответствует формату, но в коде я вижу проверку ^([A-Z]?\d{5}|Р\d{6}|[А-Я]\d{4})$ в которой явно упущен вариант 5 цифр

Смотри внимательнее - не упущен: \d{5} ближе к началу выражения.

comment:5 by san, 19 months ago

Аааа, точно) не заметил "?". Думаю что бага тут

Добавил комментарий о том, что этот список неполный (отсутствует серийный номер из 6 цифр).

Я всё уточнил, список полный.

comment:6 by san, 19 months ago

Хм.. потерял часть комментария.
Я хотел сказать: думаю что бага тут нет, всё работает правильно, единственно последнее условие немного шире чем Б.

in reply to:  6 comment:7 by alx, 19 months ago

Replying to san:

последнее условие немного шире чем Б.

Раза так в 33. :)

in reply to:  5 comment:8 by alx, 19 months ago

Replying to san:

Я всё уточнил, список полный.

А где, если не секрет, ты это уточнил? У нас есть стандарт на серийные номера?

comment:9 by san, 19 months ago

К сожалению стандарта нет.
Уточнил у бывшего начальника производства и текущего.

in reply to:  9 comment:10 by alx, 19 months ago

Description: modified (diff)
Type: дефектулучшение

Replying to san:

К сожалению стандарта нет.

В таком случае, как вообще можно накладывать ограничения на форматы серийных номеров?

Ну хорошо, на сегодняшний день ты узнал, что по факту существует пять разных форматов. А завтра по каким-либо причинам решат использовать шестой (например те же 6-цифровые номера) - а система их не принимает...

Я понимаю, что идея валидировать введенные номера сама по себе здравая. Но она должна следовать за административными решениями. Вот если бы был на производстве введен в действие стандарт с пятью форматами - тогда я бы с чистой совестью закрыл этот тикет как invalid (я поэтому из задавал вопрос). Но так как никаких административных решений нет - я считаю, что система не имеет права ограничивать пользователей в использовании каких-либо серийных номеров. Есть желание повысить надежность ввода, исключить возможные ошибки - пожалуйста: предлагай менеджерам с соответствующими полномочиями административно установить некие правила (фиксированный формат, контрольный символ как в номерах кредиток, QR-коды наконец (еще предыдущий начальник ПТО их хотел использовать) - все что угодно), и когда административным решением эти правила будут введены - вот тогда можно их подкрепить техническим (программным) решением. Технические средства следуют за административными, но никак не наоборот. По-моему так. (с) Винни

Изменил тип тикета на улучшение.

comment:11 by san, 19 months ago

К сожалению стандарта нет.

Тут я пожалуй был излишне категоричен. Есть формат номеров одобренный директором(устно) и производство его использует(просто когда ты спрашивал про стандарт, я представил некие письмено зафиксированые правила).
Формат этот- латинская заглавная буква и 5 цифр. Буква означает год изготовления платы(инкрементируется начиная с A = 2018), производство с 2018 года печатает серийные номера по этому "стандарту".
В прошлом году при заказе ошибочно напечатали E0<5 цифр> и было принято решение лишний первый ноль игнорировать.
Думаю что можно считать это правило устоявшимся и ориентироваться на него.

comment:12 by alx, 19 months ago

Description: modified (diff)
Summary: Не принимается серийный номер платыВалидация серийных номеров не соответствует установленному формату

comment:13 by san, 19 months ago

Погоди, погоди.
Это устное распоряжение касается только плат производимых с 2018 года.
Но кроме того, есть:

  • платы которые были изготовлены по старому "стандарту" 12345 - 5 цифр
  • и отдельная категория Б1234 и Р123456 - их клеят на платы не имеющие серийных номеров но произведённые не в текущем году (например пришедшие в ремонт не имеющие серийных номеров)

comment:14 by alx, 19 months ago

Да это просто безумие какое-то. :( У меня сейчас голова взорвется, если я продолжу об этом думать...

Я умываю руки. Пусть владелец тикета (разработчик системы) думает, что с этим безумием делать...

comment:15 by san, 19 months ago

Owner: changed from Denis_N to san
Status: newassigned

:-)
Как говорил Дима "предлагаю оставить как есть"...
Сейчас валидация учитывает все известные варианты, если кто-то вдруг и придумает новый стандарт, надеюсь он сообщит разработчикам.
Для разработчика формат серийных номеров описан в #997, остальное это административные вопросы.

comment:16 by san, 19 months ago

Resolution: не будем делать
Status: assignedclosed

По обнаруженной неточности в рег.выражении создал #1151

Note: See TracTickets for help on using tickets.