Это старая версия документа!


Инвентаризация: DEV: Расписания

Для себя схема работы класса расписаний, чтобы была дока и не запутаться

Класс расписания

  • id - ключ
  • parent_id - родительское расписание
  • override_id - перекрываемое расписание (это расписание является периодом-исключением в другом расписании)
  • name - ну как-то без имени не получается
  • start_date - дата начала действия расписания
  • end_date - дата окончания действия расписания
  • description - короткое пояснение
  • history - неограниченные по размеру заметки

Ну а где собственно время то?. Ниже

Запись в расписание. Может представлять из себя

  • расписание на каждый день
  • расписание на день недели
  • расписание на дату
  • период рабочего/нерабочего времени с даты-времени1 до даты-времени2

для этого у нас есть такие поля

  • id - ключ
  • schedule_id - к какому расписанию запись
  • date - дата на которую делается запись времени работы. может иметь значение
    • def - расписание на каждый день
    • 1-7 - день недели начиная с понедельника
    • YYYY-MM-DD - расписание на конкретную дату
    • YYYY-MM-DD HH:MM:SS - начало периода неработоспособности (или наоборот включения работы), если эта запись не расписание на день, а запись о «периоде» непрерывной работы/отключения (is_period)
  • date_end - окончание периода работы/неработоспособности (если is_period)
  • schedule - текстовое расписание в формате HH:MM-HH:MM,HH:MM-HH:MM.
    Также к каждому периоду работы можно добавлять «метаданные» в JSON формате, например: 08:00-12:30{«user»:«musaev.al»},12:30-17:00{«user»:«bardina.m»}.
    потом можно будет через API запрашивать текущие (из активного в настоящее время интервала) метаданные из расписания Х или метаданные за период который будет активен следующим (если сейчас нерабочее время)
    Отдельным валидным значением является прочерк/минус «-», означающий что в этот день рабочего времени нет.
  • is_period - флаг того что эта запись не расписание на день, а период включения/выключения
  • is_work - переключатель типа периода (рабочий/нерабочий), если выставлен is_period
  • comment - коротенький камент к записи
  • history - неограниченные по размеру заметки

попробуем зарисовать
инвентаризация:расписания:diagram1.png

инвентаризация:расписания:diagram2.png
инвентаризация:расписания:diagram3.png

  • инвентаризация/dev/расписания.1693138127.txt.gz
  • Последнее изменение: 2023/08/27 12:08
  • admin