График дежурств: универсальная задача для информирования

Описание

Для уведомления пользователя о предстоящем событии, было решено предупреждать пользователя через универсальную задачу

Логика работы

Планировщик обработает задачу в заданное время. По заданному конфигу, будет выполнено обращение к "графику дежурств" и по смене получен список подходящих пользователей. Сформируется текст уведомления и будет выполнена рассылка сообщений по принципу: chatId конкретного пользователя (кому предстоит указанная смена), значение chatId будет браться из профиля пользователя в соответствующем параметре; если в конфигурации заполнена опция "chatIds", то аналогичное сообщение продублируется в указанный чат.

Конфигурация

scheduler.task.n.class=ru.bgcrm.dyn.callboard.graphicDuty.DutyReminderTask
# Время информирования
scheduler.task.n.hours=x
scheduler.task.n.minutes=x
# ID telegram-чатов (123456 - конкретный чат)
scheduler.task.n.reminder.chatIds=123456
# ID графика дежурств
scheduler.task.n.reminder.graph.id=x
# ID смены дежурства
scheduler.task.n.reminder.shift.id=x
# Требование в объединении смен которые идут подряд
schdeuler.task.n.reminder.shift.join=true
# Задержка перед отправкой (работает в связке с опцией .unit, например при .unit=DAY, значение .delay=1 - будет за 1 день ДО)
scheduler.task.n.reminder.delay=1
# DAY, MONTH
scheduler.task.n.reminder.unit=DAY
# Сообщение (поддерживает контекстные переменные)
scheduler.task.n.reminder.message=

Возможные значения для контекстных переменных

{{user.title}} - Имя пользователя {{shift.title}} - Название смены {{graph.title}} - Название графика

{{shift.date.period}} - Период смены (пример 12.05.2024 - 14.05.2024) {{shift.date.period.ru}} - Период смены (пример с 12.05.2024 по 14.05.2024)

{{shift.time.from.year}} - Год (начала смены) (пример 2024) {{shift.time.from.month}} - Месяц (начала смены) (пример 05) {{shift.time.from.day}} - День (начала смены) (пример 12)

{{shift.time.to.year}} - Год (завершения смены) (пример 2024) {{shift.time.to.month}} - Месяц (завершения смены) (пример 05) {{shift.time.to.day}} - День (завершения смены) (пример 14)