Уточнить контракт деталей аудита: было → стало по полям
@@ -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`.
|
||||||
|
|||||||
Reference in New Issue
Block a user