mail_report
В базе данных Ally настройки почтовых отчетов и служебных рассылок хранятся в таблицt в таблице mail_report.
Описание полей таблицы 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, вкладка "Рассылка почтовых отчетов".
Запуск возможен двумя способами:
- автоматически - каждые 30 минут;
- вручную - через узел "Ручная рассылка".
Для ручного запуска нужно указать одинаковый параметр:
- в узле "Ручная рассылка";
- в поле
groupтаблицыmail_report_schedule(используется для расписания этих запросов).
Например:
["SEND_DIFF"]
Проверка запускаемого отчета
Проверить, какой отчет будет запущен, можно через запрос из узла 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 "Рассылка старшим уведомлений о расхождениях".


