Skip to main content

mail_report

В базе данных Ally настройки почтовых отчетов и служебных рассылок хранятся в таблицt в таблице mail_report.

image.png

Описание полей таблицы mail_report:

Поле

Тип данных

Not null

Описание

Ключ

id

serial4

X

Уникальный идентификатор запроса

X

name

varchar(255)

X Название отчета

query

text


SQL-запрос, который выполняется при запуске отчета


jsonata

text


JSONata-выражение для обработки, преобразования или подготовки данных, полученных из запроса


template

text


Шаблон для формирования


client

varchar(255)


Клиент для которого используется отчет


createdAt

timestamptz

X

Дата и время создания записи


updatedAt

timestamptz

X

Дата и время последнего обновления записи


schema

jsonb




form

text

   

 

Как запускаются отчеты

Запросы вызываются из Node-RED, вкладка "Рассылка почтовых отчетов".

image.png

Запуск возможен двумя способами:

  • автоматически - каждые 30 минут;
  • вручную - через узел "Ручная рассылка".

Для ручного запуска нужно указать одинаковый параметр:

  • в узле "Ручная рассылка";
  • в поле group таблицы mail_report_schedule.

Например:

["SEND_DIFF"]

image.png

 

Проверка запускаемого отчета

Проверить, какой отчет будет запущен, можно через запрос из узла SELECT reports.

В запросе $1 — это параметр, переданный из узла "Ручная рассылка". Например: ["SEND_DIFF"].

select mr.*, mrs.settings || jsonb_build_object('name', mrs.name) settings
from mail_report mr 
join mail_report_schedule mrs on mrs.report_id = mr.id
where (mrs.day_of_month is null 
	or extract(day from current_date)::varchar = any (string_to_array(mrs.day_of_month, ','))
	or date_part('day', current_date - (date_trunc('month', current_date) + interval '1 month'))::varchar = any (string_to_array(mrs.day_of_month, ','))
  )
  and (mrs.month is null or extract(month from current_date)::varchar = any (string_to_array(mrs.month, ',')))
  and (mrs.day_of_week is null or extract(isodow from current_date)::varchar = any (string_to_array(mrs.day_of_week , ',')))
  and ("group" @> ('"' || $1 || '"')::JSONB or 'DIRECT:' || mrs.id = $1)

 

Пример использования

Пример запроса для отправки пушей можно посмотреть в mail_report "Рассылка старшим уведомлений о расхождениях".