автоматически формируемый отчет - целостность данных перед отправкой

Добрый день.
Предлагаю ввести функцию анализа целостности отправляемых в автоотчете данных.
то есть, если задана отправка суточного отчета - должны быть данные за все 24 часа, месячного - за все сутки месяца.
в случае неполноты данных, отчет задерживается - помещается в очередь до момента сбора всех данных.
одной из опций можно ввести количество попыток, после истечения которого извещать администратора об ошибке.

Контроль сделать можно, но не понятно, что делать, если отчёт не прошёл проверку.

В какую очередь?

Если данных нет, то откуда им взяться? Как быть, если данных нет в самом счетчике или они недостоверны?

Почему администратор не должен получить уведомление сразу? Как он сможет изменить ситуацию?

P.S. У нас есть несколько запросов на систему утверждения и подписи отчётов перед отправкой, например пользователем перед отправкой в ЭСО, или инженером перед отправкой пользователю, но данная задача пока не прорабатывалась.

очередь ожидающих отправки документов :slight_smile: - это у меня в голове такая структура, не принимайте ее всерьез, она просто спроецировалась из моего проекта. В вашей парадигме это вполне может быть организовано иначе.
В принципе, идея проста - модуль делает проерку данных для формирования отчета.
неполнота данных может быть нескольких типов (сейчас рассматриваем наиболее простой случай одной точки/объекта):
1 - данные за период полностью отсутствуют
2 - данные за период отсутствуют частично в середине блока
3 - данные за период отсутствуют частично в конце блока
в случае 1 можно проверить предыдущий период, состояние журнала опроса по данной точке, журнал нештатных ситуаций и на основе проверки сделать заключение об оповещении администратора о невозможности формирования отчета по причине такой-то. Сам отчет помечается несформированным и время его формирования откладывается на момент, определенный настройками (допустим, сутки), в случае если время актуальности отчета не истекает ранее, чем повторная попытка.
в случае 2 смотрим журналы, убеждаемся, что данные отсутствуют в приборе, формируем отчет с пометкой об отсутствии данных. Если не уверены, что данные в приборе отсутствуют, можно дать задание службе опроса на переопрос прибора за пустой период, а далее повторяются действия 1 случая.
в случае 3 проверяем состояние журнала опроса, если опрос совсем не производился то можно временно повысить приоритет точки в службе опроса либо принудительно переопросить, если же проблемы со связью то повторяем полностью случай 1.

примерно так я себе этот момент представляю, надеюсь понятно, что я имел в виду.

отвечая на вопрос по извещении администратора - а зачем сразу оповещать, возможно простым автоматическим доопросом/переопросом вопрос снимется, а закидывать администратора простыми задачами не вижу смысла, хотя как опцию - предусмотреть можно. А оповещать администратора или ответственного за отчеты необходимо хотя бы для того, чтобы было что ответить адресату, который не получил отчет и со слезами на глазах звонит и интересуется о причинах.

Если позволите я немного вмешаюсь в данную тему, так как сам давно хочу сделать нечто подобное, при чем не только для автоматически создаваемых отчетов, но и для просто сформированных отечных форм.
И так о чем речь - я когда-то давно хотел чтобы вместе с нештатными ситуациями на почту приходило извещение о кол-ве не отвечающих модемов + меня постоянно заботила достоверность итоговых значений (интеграторов), потому что при отсутствии значения на крайнюю метку времени бралось любое ближайшее(сейчас это слава богу пофиксили), но остался вопрос ТСа - о полноте передаваемой информации в автоматическом режиме.
Я уже давно хочу написать небольшое простое приложение на фреймвёрке ЛЭРСа, а именно на примере обычной формы или вообще консоли вбивать крайнюю дату отчета, например вы формируете отчет с 17 числа предыдущего месяца по 16 текущего, и программа в цикле пробивает, есть ли интеграторы на 16 число текущего месяца на 00:00:00, если они есть, то true иначе false, и формируем список точек учета, для которых предыдущее условие вернуло false, это собственно и будут точки учета которые:

  1. Скорее всего не отвечают, по каким либо причинам или какие-то косяки с данными, что в любом случае есть не хорошо и надо сразу лезть разбираться.
  2. Проверяет целостность и полноту данных при формировании отчетной формы, как в автоматическом режиме так и для просто сформированного отчета.
    Итак мое предложение - почему бы вам не внедрить такую фитчу в ЛЭРС, или, например, сделать подобный плагин? Естественно ее надо переработать, но принцип работы примерно такой и будет - по завершении опроса всех точек учета просматривать в цикле у каких сформировались интеграторы, а у каких нет, и выводить списки. Возможно конечно все гораздо тоньше, но это как вариант…
    У меня например мысли уже шагнули даже дальше, если будет реализовано, что я описал выше, то можно будет внедрить в отчетную форму новое поле, например “dataExists” которая будет работать по принципу - если в выбранном человеком периоде (например с 17 числа предыдущего месяца по 16 текущего), есть поле с отсутствующим значением (интегратором, суточным, часовым и т.д. “нужное подчеркнуть”), то при формировании отчета включающего дату с отсутствующим показанием - выдавать exception - например в окне выдавать сообщение “такие-то данные, за такой-то период отсутствуют или повреждены бла-бла”.
    Прошу пардон за стену текста.

Прошу вернуться к обсуждению темы.