Пропущенный срок перестаёт быть неожиданностью

Срок ответа на предписание не срывается потому, что кто-то плохо работал. Он срывается потому, что о нём вспомнили в пятницу, а понедельник оказался выходным. В продукте срок — это не поле в таблице, а событие: дни считаются рабочими по производственному календарю, напоминания уходят заранее и по нескольким порогам, а всё отправленное остаётся в журнале.

Дни считаются рабочими — перенос выходных не съедает срок

Если считать срок календарными сутками, длинные праздники превращают «десять дней на ответ» в четыре рабочих. Продукт считает по производственному календарю: это отдельный справочник, который заполняется под конкретный год и учитывает переносы. Ответственный получает предупреждение тогда, когда у него ещё остаётся рабочее время, а не формально «за десять дней».

Пороги напоминаний: не одно письмо накануне

Одно напоминание за сутки до срока — это способ отчитаться, а не способ успеть. В продукте порогов несколько, и они разные для разных типов работ.

Пороги напоминаний в рабочих днях
О чём напоминаем За сколько рабочих дней Что это предотвращает
Общие пороги приближения срока10, 5, 3 и 1срок замечают на этапе, когда его ещё можно выдержать
Подготовка ответа на запрос или предписание3просрочка ответа надзорному органу
Корректирующие мероприятия10 и 5меры «по итогам проверки», которые так и не выполнили
Мероприятие с приоритетом «Лёгкий»3мелкие задачи не копятся до отчётной даты
Мероприятие с приоритетом «Средний»5запас на согласование внутри подразделения
Мероприятие с приоритетом «Серьёзный»7времени хватает на подготовку и на проверку результата
Пометка «близко к дедлайну» на диаграмме Ганта3руководитель видит риск срыва до того, как он случился

По отчётности предусмотрены отдельные напоминания: о половине срока, о месячном, квартальном и годовом сроке, а также отдельное уведомление о просрочке.

Когда именно уйдут напоминания

Поставьте срок — и увидите даты, в которые ответственный получит письмо. Расчёт идёт назад от срока, суббота и воскресенье пропускаются.

Расчёт дат напоминаний

Считается в браузере, ничего никуда не отправляется.

Здесь пропускаются только суббота и воскресенье. В продукте рабочие и нерабочие дни берутся из справочника «Производственный календарь»: праздники и переносы учитываются, поэтому реальные даты могут отличаться от расчёта на этой странице.

Кого и о чём оповещают: 65 обработчиков, два канала

Уведомление — не «письмо о том, что что-то изменилось». Для каждой сущности заведён свой набор обработчиков: назначен ответственным, отправлено на согласование, возвращено на доработку, согласовано, приближается срок корректирующего мероприятия. Всего таких обработчиков 65 — по пять-восемь на сущность.

Типовые события уведомлений
СобытиеКто получаетЗачем
Назначен ответственнымновый ответственный работник«я не знал, что это на мне» перестаёт быть аргументом
Отправлено на согласованиесогласующийкарточка не лежит незамеченной в списке
Возвращено на доработкуответственныйвозврат виден сразу, вместе с комментарием причины
Согласованоответственныйне нужно заходить и проверять статус вручную
Приближается срокответственныйсрок замечают заранее, а не по факту просрочки

Каналов два: электронная почта — через почтовый шлюз или напрямую — и внутрисистемные push-уведомления, которые видит сотрудник, уже работающий в системе. Шаблоны писем хранятся в базе и правятся без пересборки приложения; кэш шаблонов очищается отдельной фоновой задачей, поэтому изменённый текст письма начинает уходить без перезапуска.

Журнал отправленного: спор «мне не приходило» решается за минуту

Все отправленные сообщения записываются в журнал почтовых уведомлений, доступный в разделе «Обработка данных». Это не служебный лог для администратора, а рабочий инструмент: видно, кому, когда и по какому событию ушло письмо. Рядом — журнал загрузки процессов из внешней системы и журнал обновления материализованных представлений.

Диаграмма Ганта: срыв виден до того, как он случился

Запросы и предписания показываются диаграммой Ганта в разделе «Продуктивность». Записи красятся по состоянию срока, и порог «близко к дедлайну» — три дня. Руководителю не нужно открывать двадцать карточек, чтобы понять, где горит.

Интерфейс системы Продуктивность · запросы и предписания
№ 62 · Порядок ведения внутреннего учёта Просрочено
№ 61 · Сведения об операциях клиентов Близко к дедлайну · 2 дня
№ 60 · Пояснения по обращению клиента В работе · 9 дней
№ 59 · Запрос сведений по договорам В работе · 14 дней
№ 58 · Уточнение по порядку раскрытия Статус не определён
Просрочено Близко к дедлайну — 3 дня и меньше В работе Статус не определён

Данные нейтральные. Состояния и порог «близко к дедлайну» — как в продукте. Диаграмма выгружается в Excel.

Фоновые задачи: расписание правится в интерфейсе, а не в релизе

Напоминания уходят не «когда кто-то нажмёт кнопку»: за них отвечают фоновые задачи. В версии 1.2.0 активных задач девять, и ни одна не хранит своё расписание в коде — каждая читает его из базы при каждом срабатывании. Меняется расписание в разделе «Настройки приложения» → «Задачи по расписанию», без пересборки и без перезапуска.

  • Сроки подготовки ответанапоминания по запросам и предписаниям
  • Сроки мероприятий и задачпороги зависят от приоритета
  • Корректирующие мероприятияпо карточкам риска, манипулирования и конфликта интересов
  • Планировщик отчётностиотслеживает приближение отчётных сроков
  • Обновление справочников НСИматериализованные представления обновляются по расписанию
  • Очистка кэша шаблонов писемизменённый текст письма уходит без перезапуска

Одна упавшая задача не останавливает остальные

Ошибка внутри задачи логируется, но не роняет планировщик: остальные напоминания продолжают уходить. Параллельный запуск одной и той же задачи на нескольких узлах кластера блокируется — двойных писем сотрудник не получит. Все запуски пишутся в журналы, поэтому вопрос «а напоминание вообще отработало» проверяется, а не обсуждается.

Что это даёт ИТ-директору

  • Расписания не зашиты в код и не лежат в конфигурационных файлах на серверах: они хранятся в базе и правятся в интерфейсе. Изменение регламента напоминаний — не задача на релиз.
  • Планировщик включается и выключается целиком одним параметром, а каждая задача — отдельным признаком: на резервном контуре фоновые задачи можно не запускать.
  • Защита от двойного запуска в кластере встроена, отдельная координация не нужна.
  • Наблюдаемость: журналы запусков со статусами, отдельный журнал фоновых работ, журнал почтовых уведомлений и метрики приложения в формате Prometheus.

Расписания фоновых задач хранятся в базе и настраиваются при внедрении под регламент организации: частоту напоминаний и время формирования отчётов вы задаёте сами.

Посмотреть, как считаются сроки

На стенде заводим предписание, ставим срок и показываем, когда и кому уйдут напоминания, как это выглядит на диаграмме и что попадает в журнал.