Stafftrackmobile 26.600.0: офисы с телефона и список присутствия команды
Мобильная часть Stafftrack 26.600.0: с телефона теперь можно создавать и редактировать офисы, искать сотрудника в списке присутствия команды и видеть, что рабочий отчёт готов к отправке. Всё это включается серверными флагами и зависит от версии приложения, поэтому после обновления модуля функции могут и не появиться.
Новое
Найдите сотрудника в списке присутствия
Карточка поверх карты раскрывается в список команды на выбранную дату с поиском и вкладками: работают, без отметок, с отметками, завершили, не начали, все. Набор вкладок присылает сервер. Нажатие на сотрудника открывает его маршрут, а если на карте его нет, таймлайн дня. Пока карта на экране, список обновляется в фоне.
Данные отдаёт AJAX stafftrackmobile.v2.CheckIn.Presence.getList, выборку делает серверный stafftrack. В ответе ID, имя, должность и аватар, контактов и логинов там нет. Метод требует авторизации, CSRF, POST, пользователя интранета, нового чек-ина, разрешённого региона и включённого инструмента и закрыт для REST. Фильтр entities работает только с CheckInV3StaffSelectorFeature.
Сам список выключен по умолчанию флагом PresenceListFeature (опция stafftrackmobile/presence_list_enabled равна N), без него сервер отвечает PRESENCE_UNAVAILABLE.
Управляйте офисами с телефона
Мобильная форма офиса умеет то же, что веб: адрес и геозона, описание, фото, часы работы, сотрудники и подразделения. Перед переводом сотрудников она показывает расчёт, при пересечении геозон просит подтверждение, а при параллельной правке объединяет данные и согласует их заново. Удаляя офис, сотрудников можно перевести в другой.
Кнопку создания показывает canCreate, пункты редактирования и удаления — canEdit и canDelete, а меню появляется при любом из двух последних. Список сотрудников скрыт, пока isEmployeeListAvailable не равен true, но из карточки можно запросить доступ.
Для своих экранов есть openOfficeSelector(options) из stafftrack/office-selector с множественным выбором и исключёнными ID и OfficeForm.openInBottomSheet():
const { openOfficeSelector } = require('stafftrack/office-selector');
const offices = await openOfficeSelector({
multiple: true,
excludedIds: [currentOfficeId],
allowCreation: false,
parentWidget: layout,
});
allowCreation: false запрещает создавать офис из селектора, даже если сервер это разрешает.
Офисной вкладке нужны три условия на сервере: OfficesTabFlag, новый rollout и разрешённый регион. Сервер сообщает о ней через OfficesTabProvider::isAvailable() и поле isOfficesTabEnabled в ответе Feature.isNewCheckInFeatureEnabled. Карте по-прежнему нужны native-флаги jnwebview_bridge_v1 и tabswidget_disable_scroll (isCheckinMapSupported() из stafftrack/feature). Ссылка /stafftrack/offices/?office_id=… открывает мобильную карточку офиса после свежей проверки этих флагов, иначе веб-страницу.
Узнайте, что отчёт готов
В меню «Ещё» у пункта чек-ина появился индикатор рабочего отчёта, он же метка на вкладке. 1 ставится, только когда отчёт текущего пользователя готов к отправке. Нужны новый API и событие Timeman, включённые рабочие отчёты и AI-режим, модули Timeman и timemanmobile, инструмент рабочего времени и новый чек-ин.
Флаг WorkReportCounterFeature включён по умолчанию, выключает его только N в опции work_report_counter_enabled. AJAX stafftrackmobile.v2.CheckIn.WorkReport.syncCounter отвечает value, serverTime, serverTimeUnix и isApplicable, занятая блокировка даёт WORK_REPORT_COUNTER_BUSY. Счётчик пересчитывается по событию Timeman OnFullReportSaved: в сессии владельца фоновой задачей, из чужой сессии через Pull stafftrackmobile/workReportChanged. Клиент синхронизируется после загрузки меню и при возврате в приложение не чаще раза в 15 минут. После ошибки он повторяет запрос через 10 и 60 секунд.
Мелочи и находки
getManualCheckInCountтеперь проверяет, включён ли инструмент (CheckInToolEnabled) и доступен ли выбранный сотрудник (DepartmentProvider::isAccessibleEmployee()), и при отказе отвечает403безcount. Новые параметрыuserIdиtimestampнеобязательны, без них метод считает отметки текущего пользователя за сегодня.- В компактной форме отметки можно выбрать чат и приложить файлы (нужен
disk),loadCheckInFormпринимает необязательныйdialogId. - Если геолокация в системе выключена, приложение предложит открыть настройки, а если позицию не удалось получить, повторить запрос. Компактная форма сама повторяет попытку один раз.
- Начало и конец рабочего дня из серверных маркеров
worktimeвидны в таймлайне без геотрека, отметок не добавляют и точек на карте не создают. Сотрудник с единственной точкой трека теперь отображается. - Применённый текстовый поиск скрывает кнопку добавления отметки. Подсказка
presence_ahaне открывается поверх другой панели.