Opened 41 hours ago

Last modified 17 hours ago

#1549 assigned дефект

исправить уже имеющиеся неконсистентности в БД — at Version 1

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

Description (last modified by Denis_N)

По тикету (See #1394) нужно нормализовать данные несоответствий в бд. Подготовил скрипт для нормализации бд. Назначаю задачу на san, так как у меня нет прав на изменение записей в бд.

Скрипт пересчитывает products.mismatch по следующим правилам:

  1. Если запись дефекта имеет status=fail или старое значение NULL, её bond указывает на номер N записи устранения со статусом ok, а bond устранения указывает обратно на этот дефект, то дефект считается закрытым. Обе записи должны относиться к одному изделию — иметь одинаковый UID.
  1. Если у изделия есть запись устранения со статусом ok, у которой bond=NULL или 0, и ни одна другая запись не ссылается на неё через bond, то скрипт считает её устранением по старой схеме. Если таких устранений несколько, используется последнее по дате; при одинаковой дате — с наибольшим N.
  1. Если запись дефекта имеет bond=NULL или 0 и находится до устранения из пункта 2, то дефект считается закрытым. Если находится после него, то считается открытым.
  1. Если у изделия нет записи устранения, соответствующей пункту 2, то дефекты с bond=NULL или 0 считаются открытыми.
  1. Если по этим правилам найден хотя бы один открытый дефект, то в products.mismatch записывается yes. Если открытых дефектов нет — no. Уже совпадающее значение не изменяется.
  1. Если bond указывает на отсутствующую запись, на другое изделие, на саму запись, на неподходящую запись либо отсутствует обратная ссылка, то изделие не исправляется автоматически. Оно попадает в «Для ручного разбора». Туда же попадают случаи с неизвестными статусами и отсутствующими датами, необходимыми для определения порядка событий.

Под дефектом понимается запись, у которой type_write содержит mismatch, а status=fail или NULL. Под устранением — запись со статусом ok, у которой type_write содержит mismatch
«Проверить» ничего не меняет. «Исправить» изменяет только products.mismatch. История и значения bond не переписываются.

Change History (1)

comment:1 by Denis_N, 41 hours ago

Description: modified (diff)
Note: See TracTickets for help on using tickets.