| Поле | Тип | Обязательность | Описание |
|---|---|---|---|
| id | VARCHAR(32) | + | Идентификатор. Заполняется при создании автоматически. UUID без разделителей |
| schedule_name | VARCHAR(255) | - | Название |
| creation_date | TIMESTAMPTZ | + | Дата создания. Заполняется автоматически при создании |
| Поле | Тип | Обязательность | Описание |
|---|---|---|---|
| id | VARCHAR(32) | + | Идентификатор. Заполняется при создании автоматически. UUID без разделителей |
| creation_date | TIMESTAMPTZ | + | Дата создания. Заполняется автоматически при создании |
| Поле | Тип | Обязательность | Описание |
|---|---|---|---|
| id | VARCHAR(32) | + | Идентификатор. Заполняется при создании автоматически. UUID без разделителей |
| schedule_template_id | VARCHAR(32) | + | Идентификатор шаблона расписания, в рамках которого существует слот |
| begin_time | TIMETZ | + | Время начала слота |
| end_time | TIMETZ | + | Время завершения слота |
| Поле | Тип | Обязательность | Описание |
|---|---|---|---|
| id | VARCHAR(32) | + | Идентификатор. Заполняется при создании автоматически. UUID без разделителей |
| slot_id | VARCHAR(32) | + | Идентификатор слота, реализуемого сущностью периода |
| schedule_id | VARCHAR(32) | + | Идентификатор сущности расписания, в рамках которой существует слот |
| slot_type | VARCHAR(20) | + | Тип слота. Возможные значения: [LOCAL, FROM HOME, UNDEFINED] |
| administrator_id | VARCHAR(32) | + | Идентификатор владельца слота. Заполняется из заголовка x-current-user при создании |
| executor_id | VARCHAR(32) | - | Идентификатор исполнителя слота. Не заполняется, если совпадает с администратором |
| Поле | Тип | Обязательность | Описание |
|---|---|---|---|
| id | VARCHAR(32) | + | Идентификатор. Заполняется при создании автоматически. UUID без разделителей |
| employee_name | VARCHAR(255) | + | Имя сотрудника |
| status | VARCHAR(20) | + | Статус сотрудника. Возможные значения: [WORKING, TRIAL, TIME_OFF, DISMISSED] |
| position | VARCHAR(20) | + | Позиция сотрудника. Возможные значения: [MANAGER, EMPLOYEE, UNDEFINED, TECH] |
- Для всех сущностей необходимы методы создания
- Для всех сущностей необходимы методы получения по id
- Для периодов должен быть метод получения запросов с фильтром и сортировкой
| Поле | Тип | Обязательность | Описание |
|---|---|---|---|
| filter | JSON | - | ------ |
| filter.id | VARCHAR(32) | - | Идентификатор |
| filter.slotId | VARCHAR(32) | - | Идентификатор слота |
| filter.scheduleId | VARCHAR(32) | - | Идентификатор сущности расписания, в рамках которой существует слот |
| filter.slotType | VARCHAR(20) | - | Тип слота. Возможные значения: [LOCAL, FROM HOME, UNDEFINED] |
| filter.administratorId | VARCHAR(32) | - | Идентификатор владельца слота |
| filter.executorId | VARCHAR(32) | - | Идентификатор исполнителя слота |
| sort | JSON | - | ------ |
| sort.field | ENUM | - | Поле, по которому осуществляется сортировка в формате lowerCamelCase |
| sort.direction | ENUM | - | Направление соритировки.[ASC, DESC] |
| page | INTEGER | - | Страница |
| size | INTEGER | - | Число записей на странице |
3a. В фильтр и сортировку так же передавать beginTime и endTime.
-
При создании периодов производить проверку на отсутствие перекрывающихся периодов
-
Получение полного расписания по идентификатору и по имени (обрабаиттывать когда указано хотя бы одно). Помимо полей расписания, в ответ должны входить связанные периоды, упорядоченные по времени начала слота
-
Общее качество приложение должно быть насколько возможно высоким (Возвращение разумных ошибок пользователю, качество кода, необходимый минимум оптимизации)