feat(audit): показывать изменения текста записи по шагам
При сохранении записи журнала (PUT /api/entries/:id) сравнивается состояние до и после, и в audit_log пишется не только факт правки, но и сами изменения: пословный дифф текста, статистика добавленных и удалённых слов, а также смена ФИО, группы и темы модуля. - diff.js: пословный LCS-дифф без зависимостей, обрезка больших текстов, сборка изменений по полям записи, облегчённый target для списка аудита - source правки: manual / ai / ai_manual / ai_revert; журнал шлёт edit_source, сервер доверяет явному значению и определяет источник по description_ai как запасной вариант - те же диффы пишутся для автопроверки ИИ (entry.ai.auto-check) и отката к оригиналу (entry.ai.revert) - GET /api/audit отдаёт список без diff, GET /api/audit/:id — полный target, чтобы не грузить килобайты текста на каждую строку - Аудит: колонка «Кто», сводка в таблице, модалка с подсветкой удалённого и добавленного текста, «было/стало» для полей - auth.login теперь пишет user_id, иначе колонка «Кто» показывала «система» - diff.selftest.js: 16 тестов диффа; README и AGENTS обновлены
This commit is contained in:
+4
-2
@@ -29,6 +29,7 @@
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Время</th>
|
||||
<th>Кто</th>
|
||||
<th>Действие</th>
|
||||
<th>Детали</th>
|
||||
<th>IP</th>
|
||||
@@ -42,9 +43,10 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-overlay" id="auditDetailsModal">
|
||||
<div class="edit-modal" style="max-width:640px">
|
||||
<div class="edit-modal" style="max-width:820px">
|
||||
<h3 id="auditDetailsTitle">Детали действия</h3>
|
||||
<div class="audit-details-body"><pre id="auditDetailsBody"></pre></div>
|
||||
<div class="audit-details-head" id="auditDetailsHead"></div>
|
||||
<div class="audit-details-body" id="auditDetailsBody"></div>
|
||||
<div class="card-foot" style="justify-content:flex-end;gap:8px">
|
||||
<button type="button" class="cancel" id="auditDetailsCloseBtn">Закрыть</button>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user