Уточнить контракт деталей аудита: было → стало по полям

2026-09-13 21:27:52 +03:00
parent b1e07de475
commit 01ea682928
@@ -180,8 +180,10 @@
Детали события хранятся как JSON вида `{ "changes": [ { "field": "<код>", "from": "<было>", "to": "<стало>" } ] }`, Детали события хранятся как JSON вида `{ "changes": [ { "field": "<код>", "from": "<было>", "to": "<стало>" } ] }`,
где `field` — стабильный код параметра, `from` — предыдущее значение (`null` — параметр задан впервые), где `field` — стабильный код параметра, `from` — предыдущее значение (`null` — параметр задан впервые),
`to` — новое. Сериализация деталей — `AuditService.ToDetailJson`, форма изменения — `AuditDetails.Set`/ `to` — новое. Сериализация деталей — `AuditService.ToDetailJson`, форма изменения — `AuditDetails.Set`/
`AuditDetails.Change`. Ядро отдаёт `changes` как есть; человекочитаемые названия событий, акторов, параметров `AuditDetails.Change`. Изменяющие события (`settings_updated`, `card_moved`, `container_updated`,
и значений — в ресурсах интерфейса (`ru.js`: `operator.event`/`operator.actor`/`operator.field`/`operator.value`). `tenant_limit_changed`) пишут «было → стало» по каждому затронутому полю; для сложных значений
(`Dict`/`MyPrompts`/`AiConfigs`) фиксируется факт изменения без значений. Ядро отдаёт `changes` как есть;
человекочитаемые названия событий, акторов, параметров и значений — в ресурсах интерфейса (`ru.js`: `operator.event`/`operator.actor`/`operator.field`/`operator.value`).
Прежние записи плоского формата (`{ "login": "..." }`, пары `old*`/`new*`) читаются обратно совместимо. Прежние записи плоского формата (`{ "login": "..." }`, пары `old*`/`new*`) читаются обратно совместимо.
**Коды**: `200`, `401`. **Коды**: `200`, `401`.