Enhance school simulation management by introducing a new SchoolWeekDays option, allowing configuration of the number of working days in a week. Update the API to include school week days in responses and enhance documentation to reflect these changes. Revise UI components to support the new management features, ensuring a seamless user experience when hiring and assigning staff. Update localization strings for improved clarity and consistency across the application.
This commit is contained in:
@@ -11,16 +11,16 @@
|
||||
|
||||
## Задачи
|
||||
|
||||
- [ ] Под часами появляются два верхних раздела: «Обзор» и «Управление». В «Обзоре» — всё, что
|
||||
- [x] Под часами появляются два верхних раздела: «Обзор» и «Управление». В «Обзоре» — всё, что
|
||||
есть сейчас; часы и дата видны в обоих
|
||||
- [ ] Строка денег: выделено, расписано, свободно
|
||||
- [ ] Список непокрытых предметов — что школа не может преподавать
|
||||
- [ ] Список соискателей: имя, запрашиваемая ставка, сильные навыки; выбор показывает карточку
|
||||
- [x] Строка денег: выделено, расписано, свободно
|
||||
- [x] Список непокрытых предметов — что школа не может преподавать
|
||||
- [x] Список соискателей: имя, запрашиваемая ставка, сильные навыки; выбор показывает карточку
|
||||
человека справа — ту же, что в «Людях»
|
||||
- [ ] Кнопка найма; отказ по пределу показывается текстом, а не молчанием
|
||||
- [ ] Список штата: кто нанят, какие предметы ведёт, сколько стоит
|
||||
- [ ] Назначение и снятие предмета с карточки нанятого
|
||||
- [ ] Строки через `t(...)`, обе локали
|
||||
- [x] Кнопка найма; отказ по пределу показывается текстом, а не молчанием
|
||||
- [x] Список штата: кто нанят, какие предметы ведёт, сколько стоит
|
||||
- [x] Назначение и снятие предмета с карточки нанятого
|
||||
- [x] Строки через `t(...)`, обе локали
|
||||
|
||||
## Критерий готовности
|
||||
|
||||
|
||||
@@ -11,15 +11,15 @@
|
||||
|
||||
## Задачи
|
||||
|
||||
- [ ] Каркас дня в `core` дефом: начало первого урока, число уроков, длина урока, длины перемен
|
||||
- [x] Каркас дня в `core` дефом: начало первого урока, число уроков, длина урока, длины перемен
|
||||
и какая из них большая
|
||||
- [ ] Длина учебной недели — в `SimulationOptions`, пять дней по умолчанию
|
||||
- [ ] Каникулы дефами: осенние, зимние, весенние, лето — диапазонами дат внутри учебного года
|
||||
- [ ] Запрос «какой сейчас слот»: номер урока или перемена, или «вне учебного дня» — по игровому
|
||||
- [x] Длина учебной недели — в `SimulationOptions`, пять дней по умолчанию
|
||||
- [x] Каникулы дефами: осенние, зимние, весенние, лето — диапазонами дат внутри учебного года
|
||||
- [x] Запрос «какой сейчас слот»: номер урока или перемена, или «вне учебного дня» — по игровому
|
||||
времени, выходным и каникулам
|
||||
- [ ] Требование к типу помещения у `SubjectDef`: физкультура в спортзале, информатика в
|
||||
- [x] Требование к типу помещения у `SubjectDef`: физкультура в спортзале, информатика в
|
||||
компьютерном классе; без требования — кабинет класса
|
||||
- [ ] `GET /api/catalog` отдаёт каркас дня — он понадобится сетке расписания
|
||||
- [x] `GET /api/catalog` отдаёт каркас дня — он понадобится сетке расписания
|
||||
|
||||
## Критерий готовности
|
||||
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
| [10. Предметы и мебель](10-subjects.md) | ✅ | `SubjectDef`, одна учительская должность, кабинет как число мест |
|
||||
| [11. Пустая школа и пул](11-applicants.md) | ✅ | Школа без сотрудников, соискатели с запросом по зарплате |
|
||||
| [12. Наём и бюджет](12-hiring-budget.md) | ✅ | Наём, назначение предметов, предел фонда оплаты |
|
||||
| [13. Раздел «Управление»](13-management-tab.md) | ⬜ | Деньги, соискатели, штат и назначения на экране |
|
||||
| [13. Раздел «Управление»](13-management-tab.md) | ✅ | Деньги, соискатели, штат и назначения на экране |
|
||||
|
||||
## Срез 4. Расписание
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
|
||||
| Фаза | Статус | Зачем |
|
||||
| --- | --- | --- |
|
||||
| [14. Каркас дня и каникулы](14-school-calendar.md) | ⬜ | Звонки, длина недели, каникулы |
|
||||
| [14. Каркас дня и каникулы](14-school-calendar.md) | ✅ | Звонки, длина недели, каникулы |
|
||||
| [15. Планировщик](15-timetable-planner.md) | ⬜ | Раскладка часов по слотам, четыре запрета |
|
||||
| [16. Расписание в школе](16-timetable-in-school.md) | ⬜ | Сейв, снимок, «кто где сейчас» |
|
||||
| [17. Расписание на экране](17-timetable-screen.md) | ⬜ | Скобки в дереве, сетка класса, расписание учителя |
|
||||
|
||||
+32
-5
@@ -30,13 +30,15 @@ the wire format is unambiguous, and the client formats it back in UTC.
|
||||
|
||||
### `GET /api/schools`
|
||||
|
||||
Everything the main menu needs in one request.
|
||||
Everything the main menu needs in one request. `schoolWeekDays` is 5–7 working days counted
|
||||
from Monday (five is Mon–Fri; six adds Saturday). It is a school rule, not a catalog def.
|
||||
|
||||
```json
|
||||
{
|
||||
"maxSchools": 6,
|
||||
"defaultStartDate": "2012-03-31T06:00:00Z",
|
||||
"gameMinutesPerRealSecond": 5,
|
||||
"schoolWeekDays": 5,
|
||||
"schools": [
|
||||
{ "id": 1, "name": "Гимназия №14", "gameTime": "2012-03-31T07:35:00Z", "running": false, "speedIndex": 1 }
|
||||
]
|
||||
@@ -79,8 +81,15 @@ total is computed on the server.
|
||||
it is independent of the UI language.
|
||||
|
||||
`subjects` is the list of placeable subjects (`defName`, label, `gradeMin`/`gradeMax`,
|
||||
`hoursPerWeek`, and `skills` with shares). The assignment form in a later phase reads it; the
|
||||
create editor does not.
|
||||
`hoursPerWeek`, `skills` with shares, and optional `room`). `room` is the RoomDef the lesson
|
||||
needs — PE uses a gym, informatics a computer lab; omit it and the class homeroom is used.
|
||||
|
||||
`dayFrame` is the one concrete bell schedule (`firstLesson` as `HH:mm`, lesson count and
|
||||
lengths, which break is the long one). `holidays` are month-day ranges that repeat every
|
||||
academic year; a range whose start is after its end wraps across 1 January.
|
||||
|
||||
The assignment form in a later phase reads subjects; the timetable grid reads the day frame.
|
||||
The create editor does not.
|
||||
|
||||
`lang` is the same value Hello carries — not `Accept-Language`. Anything other than `en` is
|
||||
Russian.
|
||||
@@ -245,7 +254,8 @@ when hiring or assigning, not at month end; money itself does not move.
|
||||
"age": 34,
|
||||
"isParent": false,
|
||||
"hourlyWageAsk": 50,
|
||||
"monthlyBase": 4000
|
||||
"monthlyBase": 4000,
|
||||
"skills": [{ "id": "Mathematics", "label": "Математика", "value": "72" }]
|
||||
}
|
||||
],
|
||||
"staff": [
|
||||
@@ -261,13 +271,30 @@ when hiring or assigning, not at month end; money itself does not move.
|
||||
"monthlyPay": 5000,
|
||||
"subjects": [{ "defName": "Mathematics", "label": "Математика" }]
|
||||
}
|
||||
],
|
||||
"positions": [{ "defName": "Teacher", "label": "Учитель" }],
|
||||
"subjects": [
|
||||
{
|
||||
"defName": "Mathematics",
|
||||
"label": "Математика",
|
||||
"gradeMin": 5,
|
||||
"gradeMax": 11,
|
||||
"hoursPerWeek": 5
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Applicants here are the same people as in `saves/{id}.people.json`. A parent keeps the same
|
||||
id on the roster; hiring them sets `isStaff` on that person and does not create a second
|
||||
entity. Generated candidates (`aN.p0`) join the roster only when hired.
|
||||
entity. Generated candidates (`aN.p0`) join the roster only when hired. `skills` on an
|
||||
applicant are the three strongest, for the management list; the full set is on the person
|
||||
card. `positions` and `subjects` are the school's catalog, so the hire and assign pickers
|
||||
do not need a second request.
|
||||
|
||||
`GET /api/schools/{id}/people/{personId}` also opens a card for someone who is only in the
|
||||
applicant pool (needs are the frozen snapshot — they are not in the World yet). Unknown
|
||||
ids that are in neither place stay `404` `unknown-person`.
|
||||
|
||||
### `POST /api/schools/{id}/staff/hire`
|
||||
|
||||
|
||||
Reference in New Issue
Block a user