Меню


[I128-2817] Реализовать общесистемные рабочие календари WorkCalendar


НАЧАЛО >> Оглавление >> Общее описание >> История изменений >> Что нового в проекте I128 >> Версия 2026.3 >> [I128-2817] Реализовать общесистемные рабочие календари WorkCalendar📄 Скачать в DOCX


Тип Версия Статус Приоритет Исполнитель
⚙️ Новые возможности 2026.3 🔘 Завершено Средний Ilya Mikhaylenko

Компоненты: Нет

Завершено: 08.09.2026 12:27

  1. Цель

Нужно реализовать общесистемный модуль WorkCalendar для ИРБИС 128. Модуль должен хранить рабочие календари и выполнять воспроизводимый расчет рабочего времени для задач, согласований, фоновых расписаний, SLA/OLA, дежурств, окон изменений и будущих workflow-процессов.

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

  1. Контекст

В промышленном контуре ИРБИС 128 сроки реакции, сроки выполнения, напоминания, фоновые задания, approval deadlines, дежурства и окна изменений должны рассчитываться одинаково для разных модулей. Если такие правила хранить отдельно в Tasks, WorkflowCalendar, WorkflowApproval или Queue, система получит несколько несовместимых реализаций праздников, переносов, смен, часовых поясов и пересчета сроков.

WorkCalendar должен стать общим системным сервисом расчета времени. Первый важный потребитель - модуль Tasks: он использует календарь для SLA, OLA, командных очередей, ранжирования, просрочек, напоминаний и пересчета сроков. Но модуль не должен быть частной частью Tasks и должен быть применим к другим workflow-проектам.

  1. Что Нужно Сделать

Нужно реализовать модель календарей:

Нужно реализовать модель доступности ресурсов:

Нужно поддержать календарные правила:

Нужно реализовать API расчета:

Нужно реализовать версионирование и изменение календарей:

Нужно реализовать системные и пользовательские definitions:

Нужно реализовать права и безопасность:

Нужно реализовать интеграции:

WorkCalendar владеет календарями, рабочими периодами, праздниками, сменами, timezone, исключениями, availability overlays, отсутствиями, замещениями, on-call schedules, change/freeze windows, API расчета, версиями и impact reports.

WorkCalendar не должен владеть задачами, SLAполитиками задач, назначением ответственного, ранжированием очереди задач, approvalпроцессом, визуальными календарными представлениями, runtime Queue, справочником пользователей, правами доменных действий, коммуникациями и историей действий задачи.

Решение о назначении задачи, эскалации, обходе freezeпериода или изменении workflowсостояния принимает модуль-потребитель через свои правила, Workflow и Security. WorkCalendar только рассчитывает временную доступность, рабочие интервалы, сроки и диагностируемый результат.

  1. Критерии Приемки

Администратор может создать календарь, настроить рабочие периоды, смены, timezone и исключения, а также скопировать системный календарь для пользовательской настройки.

Системный нейтральный календарь 5/2 и примеры holiday packs поставляются через JSON/system definitions и воспроизводимо синхронизируются при setup/update.

API корректно определяет рабочее время, ближайшее рабочее время, прибавление рабочей длительности и рабочую длительность между датами с учетом timezone, праздников, сокращенных дней, смен и исключений.

Результат расчета содержит calendar key, calendar version, входные параметры, итоговую абсолютную дату, признаки округления, warnings и диагностический trace.

Изменение опубликованного календаря не меняет старые deadlines автоматически. Система формирует impact report, а массовый пересчет выполняется только через явный apply и Queue.

Availability, absence, delegation, on-call и change/freeze windows доступны через API для потребляющих модулей, но не приводят к автоматическому назначению задачи внутри WorkCalendar.

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

HealthCheck находит отсутствующие календарные ссылки, пустое расписание, некорректную timezone, конфликтующие исключения, пересечения availability, битые ссылки на пользователей/группы и устаревшие system definitions.

WorkCalendar можно использовать не только для Tasks, но и для WorkflowCalendar, WorkflowApproval, Queue schedules и будущих workflow-процессов без изменения ядра модуля.

  1. Проверки И Документация

Нужно подготовить TestA-сценарии для:

В Help должны быть подготовлены:

-

I1282817: добавлен первый кодовый срез общесистемного модуля WorkCalendar. PR вводит календарный runtime для расчета рабочего времени, доступности ресурсов и окон изменений; доменные SLAправила, назначение задач, workflowпереходы и фоновые пересчеты остаются в модуляхпотребителях.

Куда смотреть:

Изменения по файлам:

modules/WorkCalendar/api.php

modules/WorkCalendar/__call/*.inc

modules/WorkCalendar/system/work_calendars.json

modules/WorkCalendar/Tests/Module.inc

modules/WorkCalendar/Help/Root.md modules/WorkCalendar/Help/Purpose.md modules/WorkCalendar/Help/AdminGuide.md

modules/WorkCalendar/Formats/brief.pft128

1. Связанные задачи

1.1. 🔗 blocks: I128-2805

[I128-2805] SLA, командные очереди и ранжирование задач Статус: Завершено | Автор: Ilya Mikhaylenko

1.2. 🔗 blocks: I128-2822

[I128-2822] Реализовать календарные представления WorkflowCalendar для workflow-записей Статус: Завершено | Автор: Ilya Mikhaylenko

1.3. 🔗 blocks: I128-2839

[I128-2839] Реализовать WorkflowApproval для формальных согласований workflow-переходов Статус: Завершено | Автор: Ilya Mikhaylenko

1.4. 🔗 blocks: I128-2793

[I128-2793] Ввести TraceContext для сквозной трассировки операций Статус: Завершено | Автор: Ilya Mikhaylenko

1.5. 🔗 blocks: I128-2795

[I128-2795] Расширить Queue как runtime фоновых заданий, retry и расписаний Статус: Завершено | Автор: Ilya Mikhaylenko

1.6. 🔗 blocks: I128-2797

[I128-2797] Расширить Security для проектных прав, полей, действий и аудита доступа Статус: Завершено | Автор: Ilya Mikhaylenko

1.7. 🔗 blocks: I128-2798

[I128-2798] Реализовать HealthCheck для workflow-проектов и задач Статус: Завершено | Автор: Ilya Mikhaylenko

1.8. 🔗 blocks: I128-2799

[I128-2799] Подготовить TestA-контракты системных JSON и end-to-end сценариев Статус: Завершено | Автор: Ilya Mikhaylenko

1.9. 🔗 blocks: I128-2813

[I128-2813] Расширить Users/Organisations для заявителей и resolver участников процессов Статус: Завершено | Автор: Ilya Mikhaylenko

1.10. 🔗 blocks: I128-2818

[I128-2818] Реализовать наблюдаемость Observability для промышленных модулей Статус: Завершено | Автор: Ilya Mikhaylenko