История правок

История правок: кто, когда и что изменил в данных сети; изменения раскрываются по строке.

Где найти
«Инструменты» (значок чемоданчика справа вверху) → Администрирование → «История правок». То же — палитрой команд: Ctrl+K и начните набирать название.
Права
любая роль, включая «Просмотр» — иначе пункт в меню не виден.
Функция показана в сквозном сценарии:Администрирование: пользователи, роли, журнал
Читаю как

Окно открывается и из карточки объекта — тогда в нём сразу только правки этой записи.

Возможности

  • Все правки данных базы города: кто, когда, какая операция, какая таблица и запись, какие поля изменились.
  • Раскрыть строку: поля «Было» и «Стало»; ссылка «Группа изменений» показывает все строки одной операции (например, разрез участка меняет несколько таблиц).
  • Щелчок по объекту («linesobj #133») оставляет историю только этой записи.
  • Отбор по таблице, номеру объекта, пользователю, операции и датам; «Сбросить» снимает отбор.

Как это работает

Откуда берутся записи. История — таблица audit_log базы города. Её пишут два источника:

  • триггеры базы на таблицах сети — операции INSERT (вставка), UPDATE (изменение), DELETE (удаление). Триггеры срабатывают на любую правку, в том числе из десктопа;
  • сам API — операции своих действий: отмена и повтор (UNDO, REDO, GROUP_UNDO), разрез и слияние (SPLIT, MERGE, DISSOLVE), разворот (REVERSE), перенос (MOVE, GEOMETRY), цепочки (CHAIN), групповые установщики (GROUP_SET), расчёты (RUN, RUN_SETY, RECALC), утверждение планов (APPROVE, UNAPPROVE), контуры (CONTOUR), смена пароля пользователя (PASSWORD).

Коды операций в окне показаны как есть, латиницей; цветом выделены только вставка (зелёный), изменение (синий) и удаление (красный).

Что видно в строке. В снимке триггера лежит вся строка таблицы. Окно показывает только отличия «было — стало»: для вставки — заполненные поля, для удаления — бывшие значения. Геометрия (shape, geom, the_geom) не показывается, значения длиннее 300 символов обрезаются. Имена полей — как в базе (diameter, nodeid).

Кто. Логин учётной записи. При входе через роли PostgreSQL (AUTH_BACKEND=pg) база пишет роль сессии: tgid_u_логин окно показывает как логин, групповые роли — как «Администратор», «Редактор» и т. п.

Фильтры. Таблица — точное имя (без учёта регистра), пользователь — часть логина, операция — код из списка, даты — включительно по день «По дату». Списки таблиц, пользователей (до 200 самых частых) и операций строит сервер по самой истории. Новые записи сверху, по 25–200 на странице.

Сколько хранится. Сервер историю не чистит: записи лежат, пока их не удалят из базы вручную.

Что нужно для работы

  • Права: любой вошедший пользователь, включая роль «Просмотр».
  • База: таблица audit_log с колонками log_id, operation, table_name, record_id, old_data, new_data, changed_at, changed_by. Нет таблицы — в окне «Таблицы audit_log нет в этой БД».

Шаги

  1. Откройте «Инструменты» и наберите в поиске «История правок» — пункт выделен рамкой.

    Пункт «История правок» в панели «Инструменты»

  2. Нажмите пункт — откроется окно.

    Окно «История правок»

  3. Стрелка в строке раскрывает правку: какие поля изменились, было и стало. Отбор по таблице, номеру объекта, пользователю, операции (код: INSERT — вставка, UPDATE — изменение, DELETE — удаление, UNDO — отмена и другие) и датам; «Сбросить» снимает отбор. Щелчок по объекту в строке оставляет историю только этой записи.

    История правок: шаг 3

Примеры

Объём истории. На копии Алматы (almatygid_copy) в истории 81 788 записей: 59 595 изменений, 18 254 вставки, 3 274 удаления, 304 отмены (UNDO), 69 расчётов (RUN_SETY). Больше всего правок у таблиц linesobj (24 103) и heatpipesections (19 963).

Кто поменял диаметр. Откройте карточку участка → история записи. Раскройте строки UPDATE: поле diameter, «Было» и «Стало», автор и время. Если правка — часть разреза или групповой правки, «Группа изменений» покажет остальные строки той же операции.

Если не получается

  • Список пуст при отборе по пользователю — при входе через роли PostgreSQL автор записан как tgid_u_логин; ищите по части логина.
  • Нет правок из десктопа — в этой базе нет триггеров истории на таблице; правки API всё равно пишутся.

Для администратора

  • В истории есть и правки учётных записей (таблица usersdb.users: создание, роль, города, блокировка, удаление — без паролей). Их видят только те, у кого есть право «Управление пользователями»; остальным эти строки не показываются ни в списке, ни в отборах, а запись по номеру отвечает «не найдена».
  • Журнал входов и запросов — отдельно: Журнал действий.

Для разработчика

  • API: GET /api/v1/audit-log (table, record_id, changed_by, operation, date_from, date_to, change_group_id, page, page_size до 200), GET /api/v1/audit-log/{log_id} (полные снимки old_data и new_data), GET /api/v1/audit-log/lookups — routers/admin.py, database/audit_history.py. Запись из API — audit.write_audit_log.
  • Веб: components/AuditHistoryDialog.vue, подпись автора — utils/auditAuthor.ts.
  • Тесты: e2e — e2e/functions/admin.spec.ts.
Хотите увидеть эту функцию на своих данных?Покажем ТГИД на демонстрации и ответим на вопросы инженеров.
Запросить демо