Общая информация

  1. ChangedFileReport формирует и рассылает отчет ChangedFileReport.trdp по измененным документам в проектах.
  2. Для работы отчета и утилиты SQL-часть должна быть интегрирована в систему. (Набор скриптов ChangedFileReport.sql)

  3. Утилита:
    • обходит пространства системы;
    • находит библиотеку с проектными файлами и библиотеку отчетов;
    • проверяет наличие измененных документов за последние N дней;
    • формирует отчет по шаблону и сохраняет его в библиотеку отчетов;
    • отправляет отчет получателям из поля проекта.
  4. Основные настройки берутся из config.json, параметры SMTP - из mail.json.

Настройка параметров запуска утилиты

Файл config.json

Располагается рядом с исполняемым файлом утилиты.

Пример актуального файла:

{
  "WebUrl": "https://vitroappnew.cds.spb.ru",
  "Login": "admin",
  "Password": "********",
  "LibraryName": "Файлы",
  "ReportLibraryName": "Отчеты",
  "DayCount": 1,
  "IsOnlyRDStage": false,
  "StatusIdList": [],
  "ExtensionList": [],
  "PublishFolderName": "Опубликовано",
  "ReportItemId": "b46049b4-05dc-47fb-b6be-a4aa40c1e05f",
  "ProjectListId": "d40525d0-da3f-43e0-98f9-eccf7177bdde",
  "AddressField": "report_addressto",
  "MailSubject": "Отчет по выпуску в производство работ",
  "MailBody": "Сформирован отчет по выпуску в производство работ по проекту «{0}» от системы ViroCAD (СОД). {1}/site/{2}/list/{3}/item/{4}"
}

Описание параметров

ПараметрПримерОписание
WebUrlhttps://vitroappnew.cds.spb.ruURL Vitro MP, используется для API и ссылки в письме
LoginadminЛогин технической учетной записи
Password********Пароль технической учетной записи
LibraryNameФайлыИмя библиотеки с проектными файлами
ReportLibraryNameОтчетыИмя библиотеки, куда сохраняются сгенерированные отчеты
DayCount1Глубина выборки в днях (изменения за последние N дней)
IsOnlyRDStagefalsetrue - формировать только по документам стадии РД
StatusIdList[]Список GUID статусов документов; пусто - без фильтра по статусу
ExtensionList[]Список расширений без точки (["pdf","dwg"]); пусто - без фильтра
PublishFolderNameОпубликованоИмя папки, из которой собираются проекты
ReportItemIdb46049b4-...GUID шаблона отчета (TRDP/файл отчета в системе)
ProjectListIdd40525d0-...GUID списка проектов для определения адресатов
AddressFieldreport_addresstoInternal name поля проекта с получателями рассылки
MailSubjectОтчет по выпуску...Тема письма
MailBodyОтчет по {0} сформирован и сохранен в {1}/site/{2}/list/{3}/item/{4}Тело письма с шаблоном подстановки

Шаблон MailBody

Подстановки выполняются в следующем порядке:

  • {0} - имя пространства, по которому сформирован отчет;
  • {1} - WebUrl;
  • {2} - идентификатор сайта;
  • {3} - идентификатор библиотеки отчетов;
  • {4} - идентификатор созданного элемента отчета.

Файл mail.json

Используется для SMTP-настроек отправки писем.

Пример:

{
  "Host": "smtp.example.com",
  "Port": 25,
  "Login": "smtp_user",
  "Password": "********",
  "FromAddress": "noreply@example.com",
  "FromName": "Vitro",
  "EnableSsl": false,
  "UseDefaultCredentials": false
}
ПараметрОписание
HostSMTP-сервер
PortSMTP-порт (если 0, используется по умолчанию)
Login / PasswordУчетные данные SMTP (опционально)
FromAddressEmail отправителя
FromNameОтображаемое имя отправителя
EnableSslИспользовать SSL/TLS
UseDefaultCredentialsИспользовать системные credentials

Принцип работы

  1. Утилита читает config.json и mail.json.
  2. Авторизуется в Vitro MP по WebUrl/Login/Password.
  3. Получает список сайтов.
  4. Для каждого сайта:
    1. Находит библиотеки LibraryName и ReportLibraryName.
    2. Находит папку PublishFolderName.
    3. Проверяет, есть ли измененные документы за период DayCount (с учетом StatusIdList и ExtensionList).
    4. Если изменения есть, формирует отчет по шаблону ReportItemId.
    5. Сохраняет отчет в ReportLibraryName.
    6. Определяет адресатов из ProjectListId и поля AddressField.
    7. Отправляет письмо с темой MailSubject, текстом MailBody и вложением отчета.

Возможные ошибки

  • Неверные WebUrl/Login/Password - ошибки авторизации и доступа к API.
  • Неправильные LibraryName/ReportLibraryName/PublishFolderName - сайт пропускается, отчет не формируется.
  • Неверный ReportItemId - не загружается шаблон отчета.
  • Неверный ProjectListId или AddressField - не определяются адресаты рассылки.
  • Ошибки SMTP (mail.json) - отчет сохраняется, но письмо не отправляется.

Рекомендации по настройке

  1. Для ежедневной рассылки использовать DayCount = 1. Для ежемесячной DayCount = 30
  2. В ExtensionList указывать расширения без точки (pdf, dwg).
  3. Если нужно исключить лишние документы, то ограничить StatusIdList
  4. Настройка периода запуска настраивается системными настройками ОС и должна быть синхронизирована с DayCount (cron - Linux, планировщик задач - Windows)
  • No labels