Данный раздел содержит подробную инструкцию по установке и настройке системы автоматической выгрузки отчётов в формате PDF или EXCEL на электронную почту или в Telegram-бот.
1. Установка
1.1. Копирование файлов
Скопируйте все файлы и папки, кроме следующих:
*Предоставляются по запросу в службе тех.поддержки
LOGmydownloadslastresult.json
1.2. Настройка службы
- Откройте файл 
createAutoGenerateReportService.batв текстовом редакторе. - В параметре 
binPathукажите корректный путь к файлуAutoGenerateReport.exe. 
1.3. Создание Windows-службы
Запустите файл createAutoGenerateReportService.bat от имени администратора. Будет создана Windows-служба с именем «Game-Keeper AutoGenerateReport».
1.4. Настройка путей к библиотекам
Откройте файл AutoGenerateReport.runtimeconfig.dev.json и укажите правильный путь к папке LIB.
2. Конфигурация
Все настройки выполняются в конфигурационном файле appsettings.json.
2.1. Настройка списка отчетов
Секция TaskList
Каждый выгружаемый отчёт настраивается отдельным элементом массива в секции TaskList.
Параметры элемента:
- ReportId — идентификатор отчета в системе ReportSystem (Интерактивные отчёты) (см. Рис. 1).
 - ReportName — имя, под которым отчет будет сохраняться.
 - Schedule — расписание выгрузки (используется формат CRON, подробнее: CRON) (пример см. ниже).
 - ExportFormat — формат выгрузки: 
«pdf»(PDF) или«xlsx»(Excel). - Smtp — в секции указываем адреса электронной почты, которые ,будут получать рассылку.
 - Telegram — адреса пользователей в Telegram, которые будут получать рассылку (адрес — это User ID в Telegram, получить его можно через бота @getmyid_bot).
 
Рис. 1 ID отчёта
ПОДСКАЗКА
Пример cron-команд для рассылки отчётов с разной периодичностью и в заданное время, оформленных по правилам cron:
1. Ежедневная рассылка в 12:00 (полдень)
0 12 * * * команда
- Запускается каждый день в 12:00.
 0— минута (00)12— час (12)* * *— любой день месяца, любой месяц, любой день недели
2. Еженедельная рассылка по понедельникам в 09:30
30 9 * * 1 команда
- Запускается каждую неделю в понедельник в 09:30.
 30— минута (30)9— час (09)* *— любой день месяца и месяц1— понедельник (дни недели: 0 или 7 — воскресенье, 1 — понедельник, ..., 6 — суббота)
3. Ежемесячная рассылка 1-го числа месяца в 08:00
0 8 1 * * команда
- Запускается 1-го числа каждого месяца в 08:00.
 0— минута (00)8— час (08)1— день месяца (первое число)* *— любой месяц и день недели
4. Рассылка каждый будний день (понедельник-пятница) в 18:45
45 18 * * 1-5 команда
- Запускается с понедельника по пятницу в 18:45.
 45— минута (45)18— час (18)* *— любой день месяца и месяц1-5— дни недели с понедельника по пятницу
2.2. Настройка способов рассылки
Секция SenderProviders
2.2.1. E-mail
В секции «SenderProviders»:«Smtp» указываются параметры SMTP-сервера, учетные данные отправителя, а также отображаемое имя, которое будет видно получателям писем.
2.2.2. Telegram
В секции «SenderProviders»:«Telegram» настраивается параметр «ApiToken» — токен Telegram-бота, через которого будут отправляться отчёты. Обратите внимание: получатели должны быть подписаны на данного бота.
Важно! Для каждой отдельной конфигурации необходимо создавать уникального Telegram-бота.
- При первом запуске Telegram-бота пользователь получает сообщение:
"Привет, {UserName}! Ваш User ID: {UserId}. Вы подписались на рассылку отчетов."
 - Данные (UserId и UserName) сохраняются в файле 
telegramUsers.jsonи используются для последующих рассылок отчётов в Telegram. 
2.3. Подключение к ReportSystem (интерактивные отчёты)
Секция ReportSystem
Для подключения к системе интерактивных отчётов ReportSystem необходимо указать следующие параметры:
BaseUrl — URL сервера ReportSystem (как адресная строка в браузере).
Login — имя пользователя, от имени которого будет выполняться подключение. Указанный пользователь должен иметь права на вход в ReportSystem, а также на создание и просмотр отчётов.
- Password — пароль пользователя, соответствующий указанному логину.
 
3. Описание работы службы
3.1. Принцип работы
- Служба AutoGenerateReport отслеживает расписание в секции 
TaskList. - В заданное время автоматически формируется отчёт через ReportSystem с указанным ReportId и форматом (pdf или excel) (см. п. 2.1.).
 - Сформированные файлы сохраняются в папке 
mydownloadsв двух вариантах:ReportId + дата_и_время + .ExportFormatReportName + дата_и_время + .ExportFormat
 - Файл с названием 
ReportName + дата_и_время + .ExportFormatотправляется на электронную почту и/или в Telegram адресатам из настроек. 
3.2. Гибкость настроек
Вы можете добавить в TaskList любое количество отчётов, каждый с индивидуальным расписанием и списками получателей.
4. Пример конфигурации (appsettings.json)
{
"AllowedHosts": "*",
"SenderProviders": {
"Smtp": {
"SmtpHost": "smtp.yandex.ru",
"SmtpPort": 465,
"UseSsl": true,
"Login": "Логин, от которого происходит рассылка",
"Password": "Пароль",
"From":
{ "Address": "Адрес, с которого происходит рассылка", "Name": "Отображаемое имя, от которого приходит письмо" }
},
"Telegram":
{ "ApiToken": "6278601718:AAG5vYEtpQR6cOUCNUay8kpvD3xI0cPDbQo" }
},
"ReportSystem":
{ "BaseUrl": "http://cloud.game-keeper.com:5200", "Login": "Robot", "Password": "1" }
,
"TaskList": [
{
"ReportId": "ceb7713a-7a76-6940-243d-269a584e6844",
"ReportName": "Выручка за текущий год",
"Schedule": "*/1 * * * *",
"ExportFormat": "pdf",
"Smtp": {
"To": [
{ "Name": "Себе", "Address": "any@yandex.ru", "Disabled": false }
],
"Cc": [
],
"Subject": "Выручка за текущий год",
"Body": "<h1>Выручка за текущий год</h1> Письмо сформировано автоматически <br/> С уважением, <br/> Ваш автогенератор отчетов",
"BodyIsHtml": true,
"Disabled": false
},
"Telegram": {
"To": [
{ "Name": "Имя получателя", "Address": "123456789", "Disabled": false }
],
"Text": "Выручка за текущий год",
"Disabled": false
},
"Disabled": false
}
]
}
6. Дополнительные рекомендации
- Для корректной работы убедитесь, что у пользователя, под которым происходит подключение к ReportSystem, достаточно прав для формирования нужных отчётов.
 - Перед запуском службы проверьте все пути и параметры в конфигурационном файле.
 - Настоятельно рекомендуется не изменять структуру и имена системных папок и файлов.
 
