а вы не могли бы описать алгоритм который вы планируете сделать? Я просто так и эдак тестировал их апи, и теперь в гугл таблицах успешно обновляется поверка… может смогу что-то посоветовать…
Здесь я описал что мы собираемся сделать.
Вкратце:
- Поиск будет выполняться не по связке Название модели + Серийный номер, а по связке Номер модели в реестре СИ + Серийный номер. Это уже должно ускорить поиск и снизить до минимума ложные срабатывания.
- Для всех моделей мы прописали все возможные номера в реестре СИ, чтобы синхронизация работала для всех поддерживаемых моделей.
- Если у модели несколько номеров в реестре, поиск выполняется по всем номерам.
- Помимо номера в модели, можно будет вручную указать номер СИ в реестре для конкретного экземпляра оборудования. Это позволит ускорить поиск. В предыдущем пункте описано, что поиск выполняется по всем номерам. Но если номер задан в конкретном экземпляре устройства, берётся только он.
- Добавлена обработка ошибки 429. После получения мы увеличиваем паузу между запросами и повторяем поиск. Пауза увеличивается вплоть до 2 минут.
вместо обработки ошибки 429 я не отправляю запрос по следующему экземпляру до получения ответа на предыдущий запрос. Так же добавил таймаут ожидания ответа на запрос в 2 минуты. Получилось вроде бы надёжно, все запросы на протяжении недели успешные.
Мы тоже отправляем запросы последовательно, дожидаясь ответа. 429 может возникать если их отправлять слишком часто. Такую ситуацию мы предусмотрели. В 3.49 синхронизация должна работать надёжнее.
и всё же предлагаю добавить кнопку ручного запуска синхронизации в АРМ(пусть временно), куда-нибудь сюда:
И как то проглядел то, что не озвучили ваше мнение по поводу:
Какой год будет в запросе для приборов у которых не указана дата прошлой поверки ? Какой будет в запросе у приборов с просроченной поверкой?
Пока поиск будет выполняться за 3 года. Просрочена или нет поверка на период влиять не будет.
Пожалуйста, давайте дождёмся начала испытаний 3.49. Там будет уже понятно как работают новые алгоритмы и какие изменения нужно внести.
- Ограничение в 3 года сделано дабы защитить от информации о предыдущих поверках? Не страшно - эти данные реальны, хоть и не актуальны. Вынудит лишний раз перепроверить и выявить недостаток алгоритма. Зато на текущий момент отдыхают все СИ с интервалами 6+ лет(электросчётчики бывают с интервалами 12+ лет)
- Почему интервал в 7 дней? ежедневная проверка перед началом рабочего дня - вот что нам нужно. Приборы ходят в ремонт и поверка обновляется.
P.S. позвольте настроить глубину опроса к релизу. Это по сути единственная критическая проблема на текущий момент.
Для большинства пользователей этих параметров будет достаточно. К релизу мы дадим возможность настройки, но не через системные параметры, а через Lers.Server.xml или переменные среды.
Например,так как вы используете Docker, вы сможете в docker-compose.yml в секцию lers/environment добавить параметры:
Название | Назначение |
---|---|
SearchYears | За сколько лет система будет запрашивать результаты проверки для каждого устройства. |
MinDays | Периодичность синхронизации если не получены данные о поверке. |
MinDaysBeforeScheduledCalibration | За сколько дней до планируемой поверки начинать синхронизацию. |
Настроить можно будет так:
services:
lers:
environment:
LERS_SERVER_Tasks__Arshin__SearchYears: 10
LERS_SERVER_Tasks__Arshin__MinDays: 1
это лишнее. Необходимо ежедневно перепроверять всё оборудование. Оно могло побывать в ремонте и быть досрочно поверено.
Не согласен. У нас в базе 11000 устройств. Без таких ограничений проверка никогда не заканчивается и выходит по таймауту. Есть пользователи и с гораздо большими базами.
возможно это тоже вынести в настройку? а там будем смотреть, пробовать…
хотя, если установить LERS_SERVER_Tasks__Arshin__MinDays: 4380
я по сути получу желаемое ?
Да, можете поставить большое значение.