Enhance school creation and staffing management with native language support
- Updated protocol documentation to include `nativeLanguages` in `nameSets` and added `nativeLanguage` to school creation options. - Enhanced the UI for school creation to allow selection of native languages, improving user experience. - Revised API interfaces to accommodate new native language features, ensuring proper data handling. - Improved localization strings to support new native language functionalities in both English and Russian. - Updated tests to validate the new native language features and ensure robust functionality in staffing scenarios.
This commit is contained in:
+16
-8
@@ -77,8 +77,10 @@ single seats field on a homeroom and the old slot rows on everything else.
|
||||
Things carry `pupilSlots` — how many pupils that thing hosts. The snapshot's per-node pupil-slot
|
||||
total is computed on the server.
|
||||
|
||||
`nameSets` is the list of placeable name packs (`defName` + label). The create dialog picks one;
|
||||
it is independent of the UI language.
|
||||
`nameSets` is the list of placeable name packs (`defName` + label + `nativeLanguages`). Each
|
||||
`nativeLanguages` entry is a skill (`defName` + label). The create dialog picks a name set and a
|
||||
native language; the language list comes from that set (vanilla Slavic: Russian, Belarusian,
|
||||
Ukrainian). It is independent of the UI language.
|
||||
|
||||
`subjects` is the list of placeable subjects (`defName`, label, `gradeMin`/`gradeMax`,
|
||||
`hoursPerWeek`, `skills` with shares, and optional `room`). `room` is the RoomDef the lesson
|
||||
@@ -104,7 +106,8 @@ Body:
|
||||
"startDate": "2012-03-31T06:00:00Z",
|
||||
"modIds": [],
|
||||
"map": null,
|
||||
"nameSetId": "Slavic"
|
||||
"nameSetId": "Slavic",
|
||||
"nativeLanguage": null
|
||||
}
|
||||
```
|
||||
|
||||
@@ -112,6 +115,8 @@ Body:
|
||||
pack set's default layout. A supplied map is validated as a connected yard-and-rooms graph.
|
||||
`nameSetId` is a `NameSetDef`; omit it to use the first placeable set in the catalog (vanilla:
|
||||
`Slavic`). Unknown ids return `400` `unknown-name-set`.
|
||||
`nativeLanguage` is a skill from that set's `nativeLanguages`. Omit it (or send `null`) to pick
|
||||
one from the school seed. An id that is not in the set returns `400` `unknown-native-language`.
|
||||
|
||||
| Status | Meaning |
|
||||
| --- | --- |
|
||||
@@ -122,6 +127,7 @@ pack set's default layout. A supplied map is validated as a connected yard-and-r
|
||||
| `400` `unknown-mod` | An extra pack id is missing under `mods/`. |
|
||||
| `400` `invalid-catalog` | The selected packs could not be loaded. |
|
||||
| `400` `unknown-name-set` | `nameSetId` is not a placeable `NameSetDef` in those packs. |
|
||||
| `400` `unknown-native-language` | `nativeLanguage` is not in that name set's `nativeLanguages`. |
|
||||
| `409` `school-limit-reached` | `maxSchools` schools already exist. |
|
||||
|
||||
Failures are RFC 7807 problem details with an extra `code` field — that is what the UI switches on.
|
||||
@@ -334,8 +340,9 @@ ids that are in neither place stay `404` `unknown-person`.
|
||||
### `POST /api/schools/{id}/staff/hire`
|
||||
|
||||
Body: `{ "personId": "a0.p0", "position": "Teacher" }`. Goes through the school's mailbox.
|
||||
On success returns the same payload as `GET .../staffing`. `Teacher` needs no room opening;
|
||||
other positions fill the first free `RoomDef.positions` slot of that kind.
|
||||
On success returns the same payload as `GET .../staffing`, so it takes the same `?lang=ru|en`.
|
||||
`Teacher` needs no room opening; other positions fill the first free `RoomDef.positions` slot
|
||||
of that kind.
|
||||
|
||||
| Status | `code` | When |
|
||||
| --- | --- | --- |
|
||||
@@ -351,7 +358,8 @@ other positions fill the first free `RoomDef.positions` slot of that kind.
|
||||
|
||||
### `POST /api/schools/{id}/staff/{personId}/subjects`
|
||||
|
||||
Body: `{ "subject": "Mathematics" }`. Teachers only. Same success payload as GET staffing.
|
||||
Body: `{ "subject": "Mathematics" }`. Teachers only. Same success payload as GET staffing,
|
||||
and the same `?lang=ru|en`.
|
||||
|
||||
| Status | `code` | When |
|
||||
| --- | --- | --- |
|
||||
@@ -363,8 +371,8 @@ Body: `{ "subject": "Mathematics" }`. Teachers only. Same success payload as GET
|
||||
|
||||
### `DELETE /api/schools/{id}/staff/{personId}/subjects/{subject}`
|
||||
|
||||
Removes one assignment. Payroll drops when the subject was not the only one. Unknown
|
||||
assignment is `404` `unknown-assignment`.
|
||||
Removes one assignment. Payroll drops when the subject was not the only one. Same success
|
||||
payload and `?lang=ru|en` as the other two. Unknown assignment is `404` `unknown-assignment`.
|
||||
|
||||
### `GET /api/schools/{id}/timetable`
|
||||
|
||||
|
||||
Reference in New Issue
Block a user