Это старая версия документа!


Инвентаризация: DEV: Model History

Как нам вести историю изменения моделей.

заводим таблицу, которая

  • содержит те же поля что и исходная таблица
  • master_id - ID в мастер таблице где хранится актуальная версия модели
  • строковые поля, содержащие id ссылок через запятую для many-2-many realtions
  • changed_at - время начала периода действия записи (unix epoch)
  • changed_by - автор изменений (string login)
  • changed_comment - комментарий к изменениям
  • changed_attributes - список изменившихся атрибутов (кроме ['id','updated_at','updated_by','changed_attributes','updated_comment'])

после изменения модели добавляем запись в таблицу истории с новыми значениями и автором
Возможно получится это залепить через Behaviour (некогда разбираться)
Также очевидно, что изменение полей относящихся к many2many связям приводит к «изменению» связанных объектов. Почему в кавычках? Потому что в самой таблице модели изменений нет, но если посмотреть many2many атрибуты (из других таблиц), то изменения есть. Таким образом надо внести в класс истории модели

  • функцию вытаскивания many2many связанных объектов
  • список полей которые надо будет прописывать в журнал связанных объектов из инициатора изменений: udated_at,updated_by,updated_comment придется брать из журнала инициатора, т.к. связанный объект явно не изменялся
  • функцию журналирования состояния с возможностью указания инициатора изменений

Кандидаты на аудит

  • Сервисы (важный узел, нужно видеть кто что меняет)
  • Документы - видеть кто косячит при заведении
  • Оборудование - косяки при заведении
  • Модели оборудования - косяки при заведении
  • ACL - чувствительные данные
  • инвентаризация/dev/model/history.1708842068.txt.gz
  • Последнее изменение: 2024/02/25 06:21
  • admin