/** * Хелперы для полей типа `user` (пользователь/роль) на сервере. * * Формат значения в task_field_values.value (jsonb): * - одиночное: строка `user:` / `role:` или legacy-число (userId); * - множественное (form_fields.allow_multiple): массив строк ["user:5", "role:2"]. * * Одиночные значения читаются как массив из одного элемента (обратная совместимость). * Аналог клиентского client/src/lib/userFieldValue.ts. */ /** Нормализует сырое значение user-поля в массив строк-элементов. */ export function parseUserFieldEntries(value: unknown): string[] { if (value === null || value === undefined || value === '') return []; if (Array.isArray(value)) { return value .map((v) => (v === null || v === undefined ? '' : String(v))) .filter((v) => v !== ''); } if (typeof value === 'string' && value.startsWith('[')) { try { const parsed = JSON.parse(value); if (Array.isArray(parsed)) return parseUserFieldEntries(parsed); } catch { // не JSON — обрабатываем как одиночное значение } } return [String(value)]; }