Opened 41 hours ago
Last modified 17 hours ago
#1549 assigned дефект
исправить уже имеющиеся неконсистентности в БД — at Version 2
| Reported by: | Denis_N | Owned by: | san |
|---|---|---|---|
| Priority: | minor | Component: | БД изделий АДС |
| Keywords: | Cc: |
Description (last modified by )
По тикету (See #1394) нужно нормализовать данные несоответствий в бд. Подготовил скрипт для нормализации бд normalize_mismatch.php. Нужно опубликовать на сервере и открыть.
Назначаю задачу на san, так как у меня нет прав на изменение записей в бд.
Скрипт пересчитывает products.mismatch по следующим правилам:
- Если запись дефекта имеет status=fail или старое значение NULL, её bond указывает на номер N записи устранения со статусом ok, а bond устранения указывает обратно на этот дефект, то дефект считается закрытым. Обе записи должны относиться к одному изделию — иметь одинаковый UID.
- Если у изделия есть запись устранения со статусом ok, у которой bond=NULL или 0, и ни одна другая запись не ссылается на неё через bond, то скрипт считает её устранением по старой схеме. Если таких устранений несколько, используется последнее по дате; при одинаковой дате — с наибольшим N.
- Если запись дефекта имеет bond=NULL или 0 и находится до устранения из пункта 2, то дефект считается закрытым. Если находится после него, то считается открытым.
- Если у изделия нет записи устранения, соответствующей пункту 2, то дефекты с bond=NULL или 0 считаются открытыми.
- Если по этим правилам найден хотя бы один открытый дефект, то в products.mismatch записывается yes. Если открытых дефектов нет — no. Уже совпадающее значение не изменяется.
- Если bond указывает на отсутствующую запись, на другое изделие, на саму запись, на неподходящую запись либо отсутствует обратная ссылка, то изделие не исправляется автоматически. Оно попадает в «Для ручного разбора». Туда же попадают случаи с неизвестными статусами и отсутствующими датами, необходимыми для определения порядка событий.
Под дефектом понимается запись, у которой type_write содержит mismatch, а status=fail или NULL. Под устранением — запись со статусом ok, у которой type_write содержит mismatch
«Проверить» ничего не меняет. «Исправить» изменяет только products.mismatch. История и значения bond не переписываются.
Change History (2)
comment:1 by , 41 hours ago
| Description: | modified (diff) |
|---|
comment:2 by , 41 hours ago
| Description: | modified (diff) |
|---|
![[MC-04 logo]](/mc-04/chrome/site/logo.png)