Рейтинг сотрудников: history-number поле = последняя оценка, среднее за месяц — в поле options.avgFieldCode

- setUserProfileFieldValueFromAutomation: для history-number значением поля становится переданное число (последняя оценка), а не среднее
- recomputeUserFieldMonthlyAverage: среднее за текущий месяц пишется в поле, указанное в options.avgFieldCode history-number поля (если не задано — в само поле, обратная совместимость)
- Автоматизация «Оценка сотрудникам» (форма 11): сумма трёх числовых полей «Оценка 1/2/3» вместо одного select-поля
- Документация sandbox обновлена во всех четырёх местах (UI, MCP, Obsidian, AGENTS.md)
This commit is contained in:
2026-09-06 11:55:15 +03:00
parent a7a14d947a
commit ec86fa4c11
3 changed files with 42 additions and 17 deletions

View File

@@ -84,11 +84,12 @@ const CODE_TEMPLATE = `// ======================================================
// ctx.users.setFieldValue(id, fieldCodeOrId, value) — записать значение кастомного поля профиля
// пользователя (по id или code поля, с аудитом от имени «Автоматизация»). Для полей типа
// «history-number» переданное число добавляется в историю user_field_history
// (с привязкой к задаче триггера), а значением поля становится среднее за текущий месяц
// (автопересчёт); нечисловое значение вызовет ошибку автоматизации.
// (с привязкой к задаче триггера) и становится значением самого поля (последняя оценка);
// среднее за текущий месяц автопересчитывается в поле, указанное в options.avgFieldCode
// history-number поля (если не задано — в само поле); нечисловое значение вызовет ошибку автоматизации.
// ctx.users.recalcFieldAverage(id, fieldCodeOrId) — принудительный пересчёт среднего
// за текущий месяц для history-number поля (например, ежедневно по schedule;
// нет записей в месяце — поле очищается).
// нет записей в месяце — целевое поле среднего очищается).
//
// Триггеры:
// manual — запуск вручную
@@ -323,11 +324,12 @@ export function AutomationsContent() {
ctx.users.list() / ctx.users.get(userId)
ctx.users.update(userId, updates) / ctx.users.updateStatus(userId, statusId)
ctx.users.setFieldValue(userId, fieldCodeOrId, value) — записать кастомное поле профиля
(с аудитом; для полей «history-number» число пишется в историю user_field_history,
а значением поля становится среднее за текущий месяц — автопересчёт;
(с аудитом; для полей «history-number» число пишется в историю user_field_history
и в само поле (последняя оценка), а среднее за текущий месяц автопересчитывается
в поле из options.avgFieldCode history-number поля (если не задано — в само поле);
нечисловое значение — ошибка автоматизации)
ctx.users.recalcFieldAverage(userId, fieldCodeOrId) — принудительный пересчёт среднего
за текущий месяц для history-number поля (нет записей в месяце — поле очищается)
за текущий месяц для history-number поля (нет записей в месяце — целевое поле среднего очищается)
Логирование: ctx.log(msg)