Opened 11 months ago

Closed 3 weeks ago

Last modified 3 weeks ago

#1412 closed дефект (готово)

Неверная работа фильтра (сезон 3)

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

Description (last modified by alx)

В r420/base выполняю следующие действия:

  • Открываю главную страницу.
  • В поле "Название изделия" ввожу "VE-02-01".
  • Кликаю в панели "Фильтры по истории изделия".
  • В открывшейся панели отмечаю радио-кнопку "Было протестированно".
  • В появившейся строке "Кем" ввожу "Alex Mogilnikov". В результате получаю в таблице список из 30 изделий, что неверно.

Ожидалось, что я получу список всех изделий, тестировавшихся Алексом Могильниковым, которых на данный момент 39. Например в выведенном списке отсутствует изделие S/N H01568, которое имеет в истории запись о том, что его тестировал Alex Mogilnikov.

Change History (5)

comment:1 by alx, 9 months ago

Description: modified (diff)

comment:2 by Denis_N, 3 weeks ago

В r420 несоответствие, созданное через интерфейс “Тестирование” с результатом “Выявлены ошибки”, сохранялось как составная запись testing,mismatch, а не как чистая запись mismatch.

В интерфейсе “Несоответствия” уже существовали два режима поиска: общий режим через find_in_set('mismatch', history.type_write), который показывает также составные записи testing,mismatch и otk,mismatch, и режим “только чистые несоответствия” через type_write = 'mismatch'. Но в r420 галочка была подписана неочевидно как “Показывать только несоответствия”, из-за чего пользователь мог включить режим, скрывающий записи из “Тестирования” и “ОТК”.

Позже это было исправлено на стороне интерфейса:

  • в r462/base текст галочки изменён на явный: “Не показывать несоответствия, созданные через ОТК и Тестирование”;
  • в r537/base состояние галочки стало передаваться прямо в AJAX-запрос, поиск по S/N переведён на событие input, устаревшие AJAX-запросы отменяются.

Передача галочки прямо в AJAX дала то, что backend стал получать состояние фильтра именно на момент конкретного поиска. До этого backend смотрел в cookie view_only_mismatch, а cookie обновлялась отдельно на frontend. Если пользователь менял галочку и сразу шёл поиск, можно было получить рассинхрон: в интерфейсе галочка уже в одном состоянии, а запрос обработался по старому cookie.

Перевод S/N на событие input исправил сценарий вставки/сканирования серийника. Раньше обработчик висел на keyup paste; paste срабатывает до того, как новое значение гарантированно оказалось в поле. В итоге AJAX мог уйти со старым или пустым S/N, и пользователь видел “Записей у изделия не найдено”. input срабатывает уже после изменения значения поля, поэтому поиск уходит с актуальным серийником.

В текущей проверенной версии r579/base несоответствия, созданные через “Тестирование” и “ОТК”, отображаются при снятой галочке.

Закрою как "Готово". Хотя, я думаю, что можно предложить какое-то UI-улучшение

Version 0, edited 3 weeks ago by Denis_N (next)

comment:3 by Denis_N, 3 weeks ago

Resolution: готово
Status: newclosed

Исправлено в r498/base.

В r420 фильтр “Было протестировано” на Главной странице проверял записи истории через точное сравнение h.type_write = 'testing'. Из-за этого записи со составным типом события, например mismatch,testing, не учитывались фильтром, хотя фактически это тоже записи тестирования. Поэтому часть изделий, протестированных указанным сотрудником, могла не попадать в результат.

В r498/base логика фильтров истории на Главной была переработана: тип события теперь проверяется через FIND_IN_SET('testing', h.type_write) > 0, поэтому составные записи тестирования также учитываются.

Спасибо, Алексей

in reply to:  3 ; comment:4 by alx, 3 weeks ago

Replying to Denis_N:

Исправлено в r498/base.

Хм... В сообщении коммита говорится об исправлении бага "новая главная сделана". :) Не обычный баг... :) Интересно, если через год ты прочитаешь это сообщение коммита, ты сам поймешь, чтоб было исправлено? :)

В r498/base логика фильтров истории на Главной была переработана: тип события теперь проверяется через FIND_IN_SET('testing', h.type_write) > 0, поэтому составные записи тестирования также учитываются.

Вот в комментарии ты смог вполне ясно описать суть сделанных изменений...

Спасибо, Алексей

Да не за что. Рад был чем-то помочь.

in reply to:  4 comment:5 by Denis_N, 3 weeks ago

Replying to alx:

Хм... В сообщении коммита говорится об исправлении бага "новая главная сделана". :) Не обычный баг... :) Интересно, если через год ты прочитаешь это сообщение коммита, ты сам поймешь, чтоб было исправлено? :)

Нет, сам не пойму. Буду стараться конкретнее писать

Note: See TracTickets for help on using tickets.