Opened 39 hours ago
Last modified 38 hours ago
#1501 assigned дефект
Нормализовать старые дублирующиеся записи history.type_write='record'
| Reported by: | Denis_N | Owned by: | Denis_N |
|---|---|---|---|
| Priority: | minor | Component: | Разное и всякое |
| Keywords: | Cc: | alx, san |
Description
При разборе #1403 обнаружено, что в таблице history есть старые дублирующиеся записи type_write='record'. Это не только ошибка отображения интерфейса: в БД действительно присутствуют соседние одинаковые записи истории для одного и того же изделия.
Предварительный анализ локальной копии БД показал:
- найдено 831 строгих соседних дублей type_write='record';
- затронуто 780 изделий;
- под строгим дублем понимается запись, которая идёт сразу после предыдущей записи того же UID по N, при этом у обеих записей type_write='record' и полностью совпадают смысловые поля: worker, order_from, whom_order, location, number_order, status, comment, bond, shelfdrawer;
- date и N при сравнении не учитываются, так как они различаются у самих дублей.
Основная масса дублей имеет вид:
- order_from='АДС', whom_order='АДС', location='work', без комментария;
- order_from='Склад', whom_order='АДС', location='work', без комментария.
Также есть редкие случаи с location=develop/stock/fk/isolator/nelikvid, несколько записей с комментариями и одна пара с пустыми order_from/whom_order/location.
Предлагается:
- Сформировать отчёт по найденным группам дублей в виде «первая запись / дубль».
- Для каждой группы оставлять первую запись по N.
- Последующие записи считать кандидатами на удаление или архивную нормализацию.
- Автоматически обрабатывать только безопасные случаи: соседние строгие дубли без комментария, без номера заказа, без bond, без shelfdrawer.
- Случаи с комментариями, нестандартными location или большим разрывом по времени вынести на ручную проверку.
- Перед изменением данных обязательно сделать резервную копию таблицы history.
Цель: убрать или нормализовать старые технические дубли в истории изделий, не меняя смысловую историю реальных операций.
![[MC-04 logo]](/mc-04/chrome/site/logo.png)
Replying to Denis_N:
А другие (не первые)?
Во-первых, поясни, пожалуйста, почему (или для чего) ты предлагаешь считать их кандидатами на удаление. Непонятно, зачем удалять записи из истории (если, допустим, выяснится, что эти записи - результат действий пользователя, а не какой-нибудь ошибки в коде)... Обрати внимание, что записи, показанные в описании тикета #1403, занесены с разницей в 12 секунд. Сложно представить, что запрос так долго выполнялся бэкендом. Это больше похоже на осознанное занесение пользователем двух похожих записей...
Во-вторых, непонятно, что такое "архивная нормализация". Не знаю как @san, а я не знаком с таким терином...
Совершенно непонятное предложение, так как не сказано, о какой обработке идет речь... О переведении текста в верхний регистр? :)
Проверку чего?
Поясни, пожалуйста, что ты называешь "техническими дублями". Это когда пользователь прислал один запрос, а в базу занесено две (или более) записи? Если так, то откуда известно, что такие технические дубли вообще имели место? Ты нашел ошибку в коде, которая приводила к такому поведению? В комментариях к тикету #1403 я ничего об этом не вижу...