From b5c2378ab789e18d3fff9700d90f48e9f7cc6cd2 Mon Sep 17 00:00:00 2001 From: "Zimin A.N." Date: Mon, 4 May 2026 04:11:04 +0300 Subject: [PATCH] =?UTF-8?q?fix(admin-ui):=20=D0=BD=D1=83=D0=BC=D0=B5=D1=80?= =?UTF-8?q?=D0=B0=D1=86=D0=B8=D1=8F=20=D0=B2=D0=B5=D1=80=D1=81=D0=B8=D0=B9?= =?UTF-8?q?=20=D0=B2=20=D0=B8=D1=81=D1=82=D0=BE=D1=80=D0=B8=D0=B8=20=D0=BF?= =?UTF-8?q?=D0=BE=20=D0=BF=D0=BE=D0=B7=D0=B8=D1=86=D0=B8=D0=B8,=20=D0=BD?= =?UTF-8?q?=D0=B5=20=D0=BF=D0=BE=20rec.version?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit rec.version — JPA @Version (optimistic lock counter). Растёт на UPDATE, поэтому у нескольких закрытых исторических версий может оказаться одинаковое значение (была 0, стала 1 при close, новая запись 0, потом 1, итого две закрытые с v=1). В UI это выглядит как дубли v1, v1. Используем индекс позиции в timeline: новая = data.length, старая = 1. Отображение: v3 (текущая) → v2 → v1. --- .../src/components/record/RecordHistoryDrawer.tsx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ordinis-admin-ui/src/components/record/RecordHistoryDrawer.tsx b/ordinis-admin-ui/src/components/record/RecordHistoryDrawer.tsx index a5e808d..0f527bc 100644 --- a/ordinis-admin-ui/src/components/record/RecordHistoryDrawer.tsx +++ b/ordinis-admin-ui/src/components/record/RecordHistoryDrawer.tsx @@ -36,6 +36,10 @@ export const RecordHistoryDrawer = ({ open, onClose, dictionaryName, businessKey {data.map((rec, idx) => { const isLatest = idx === 0 const closed = new Date(rec.validTo).getFullYear() < 9999 + // Нумерация по позиции в timeline: total..1, новая запись = total. + // rec.version (JPA optimistic lock) растёт на UPDATE и у нескольких + // закрытых может совпасть → дубли в UI. Index — стабильный 1-based счётчик. + const displayVersion = data.length - idx return (
  • - v{rec.version} + v{displayVersion} {isLatest && {t('history.current')}} {!isLatest && closed && {t('history.closed')}}