добавил денение на подгруппы для лабораторных работ
This commit is contained in:
41
docs/API.md
41
docs/API.md
@@ -101,7 +101,7 @@
|
||||
|
||||
## Динамическое расписание
|
||||
|
||||
Новая модель расписания строится из правил (`schedule_rules`) и слотов (`schedule_rule_slots`). В правиле отдельно хранятся часы и стартовые недели для лекций, лабораторных и практик. Фактические занятия рендерятся на диапазон дат только для дней, где календарный учебный график группы имеет код, разрешающий обычные пары.
|
||||
Новая модель расписания строится из правил (`schedule_rules`) и слотов (`schedule_rule_slots`). В правиле отдельно хранятся часы и стартовые недели для лекций, лабораторных и практик. Лабораторные слоты можно назначать на подгруппы, лекции и практики всегда проводятся для всей выбранной группы или потока. Фактические занятия рендерятся на диапазон дат только для дней, где календарный учебный график группы имеет код, разрешающий обычные пары.
|
||||
|
||||
### `GET /api/schedule`
|
||||
|
||||
@@ -148,6 +148,7 @@ GET /api/schedule?groupId=1&startDate=2026-04-27&endDate=2026-05-03
|
||||
"lessonTypeName": "Лекция",
|
||||
"lessonFormat": "Очно",
|
||||
"subgroupId": null,
|
||||
"subgroupName": null,
|
||||
"groupIds": [1],
|
||||
"groupNames": ["ИВТ-21-1"],
|
||||
"activityType": "Т",
|
||||
@@ -291,7 +292,7 @@ GET /api/schedule?groupId=1&startDate=2026-04-27&endDate=2026-05-03
|
||||
"dayOfWeek": 1,
|
||||
"parity": "BOTH",
|
||||
"timeSlotId": 3,
|
||||
"subgroupId": null,
|
||||
"subgroupId": null,
|
||||
"teacherId": 2,
|
||||
"classroomId": 1,
|
||||
"lessonTypeId": 1,
|
||||
@@ -313,6 +314,8 @@ CRUD доступен по:
|
||||
|
||||
`timeSlotId` должен ссылаться на базовый слот (`scopeApplyMode = DEFAULT`). Субботняя и ручные сетки не выбираются в правиле напрямую.
|
||||
|
||||
`subgroupId` можно передавать только для лабораторного слота. Подгруппа должна относиться к одной из групп правила. Для лекций и практик поле должно быть `null`, иначе API вернёт ошибку валидации.
|
||||
|
||||
Часы и недели начала задаются отдельно для лекций, лабораторных и практик. Если для типа занятий указан ненулевой лимит часов, в правиле должен быть хотя бы один слот этого типа; если слот типа есть, его лимит часов должен быть больше нуля.
|
||||
|
||||
### `GET /api/lesson-types`
|
||||
@@ -323,7 +326,8 @@ CRUD доступен по:
|
||||
```json
|
||||
[
|
||||
{ "id": 1, "name": "Лекция" },
|
||||
{ "id": 2, "name": "Практика" }
|
||||
{ "id": 2, "name": "Практика" },
|
||||
{ "id": 3, "name": "Лабораторная работа" }
|
||||
]
|
||||
```
|
||||
|
||||
@@ -454,6 +458,37 @@ CRUD доступен по:
|
||||
|
||||
Удаление группы.
|
||||
|
||||
### Подгруппы группы
|
||||
|
||||
Подгруппы используются только для деления лабораторных занятий. Лекции и практики не принимают `subgroupId`.
|
||||
|
||||
| Метод | URL | Назначение |
|
||||
|-------|-----|------------|
|
||||
| `GET` | `/api/subgroups` | Список всех подгрупп |
|
||||
| `GET` | `/api/groups/{groupId}/subgroups` | Подгруппы конкретной группы |
|
||||
| `POST` | `/api/groups/{groupId}/subgroups` | Создать подгруппу |
|
||||
| `PUT` | `/api/groups/{groupId}/subgroups/{id}` | Обновить подгруппу |
|
||||
| `DELETE` | `/api/groups/{groupId}/subgroups/{id}` | Удалить подгруппу, если она не используется в расписании |
|
||||
|
||||
**Тело создания/обновления:**
|
||||
```json
|
||||
{
|
||||
"name": "Подгруппа 1",
|
||||
"studentCapacity": 12
|
||||
}
|
||||
```
|
||||
|
||||
**Ответ:**
|
||||
```json
|
||||
{
|
||||
"id": 1,
|
||||
"groupId": 1,
|
||||
"groupName": "ИВТ-21-1",
|
||||
"name": "Подгруппа 1",
|
||||
"studentCapacity": 12
|
||||
}
|
||||
```
|
||||
|
||||
### Календарные графики группы
|
||||
|
||||
| Метод | URL | Назначение |
|
||||
|
||||
Reference in New Issue
Block a user