Remember recent quarrels, fights and reprimands on the person.

Short offense list for the pupil card and save, capped by BehaviorDef — not a discipline score.
This commit is contained in:
Leonid Pershin
2026-08-21 09:37:12 +03:00
parent 910ba4da2d
commit fdcaed0f74
22 changed files with 760 additions and 16 deletions
+10 -10
View File
@@ -10,20 +10,20 @@
## Задачи
- [ ] На человеке разреженный список проступков: вид, игровое время (или день+слот), опционально
- [x] На человеке разреженный список проступков: вид, игровое время (или день+слот), опционально
второй участник
- [ ] Потолок длины и какие факты пишут — поля `BehaviorDef` / данные `core`, не константы в UI
- [ ] Писать при ссоре, драке, выговоре (обрыв драки сотрудником); старые вытесняются
- [ ] Сейв вместе с человеком; ноль записей не хранить раздуто
- [ ] Карточка ученика показывает несколько последних (HTTP через мейлбокс)
- [ ] Строки видов через локаль мода / `t(...)` по договорённости фазы; обе локали клиента для UI
- [x] Потолок длины и какие факты пишут — поля `BehaviorDef` / данные `core`, не константы в UI
- [x] Писать при ссоре, драке, выговоре (обрыв драки сотрудником); старые вытесняются
- [x] Сейв вместе с человеком; ноль записей не хранить раздуто
- [x] Карточка ученика показывает несколько последних (HTTP через мейлбокс)
- [x] Строки видов через локаль мода / `t(...)` по договорённости фазы; обе локали клиента для UI
## Тесты, без которых фаза не закрыта
- [ ] Драка с выговором добавляет запись жертве и/или задире по правилам фазы
- [ ] Сверх потолка старая запись исчезает
- [ ] Список переживает сейв
- [ ] Карточка отдает тот же порядок, что в мире (не клиентская фантазия)
- [x] Драка с выговором добавляет запись жертве и/или задире по правилам фазы
- [x] Сверх потолка старая запись исчезает
- [x] Список переживает сейв
- [x] Карточка отдает тот же порядок, что в мире (не клиентская фантазия)
## Критерий готовности
+15
View File
@@ -365,6 +365,12 @@ When a school was created with a pack that ships orientations, the card also car
pack those fields are null or empty — the client hides the sympathy column. The client does not
compute thresholds. There is no school-wide opinions endpoint.
`offenses` is the short recent-misconduct list on the person (quarrel / fight / reprimand). Same
order as in the world and in `people.json`. Each row has `kind`, `kindLabel` (mod locale),
`time` (UTC game clock), and optional `otherPersonId` / `otherFullName`. Empty is `[]`. Ceiling
and which kinds write live on `BehaviorDef` (`offenseMemoryMax`, `offenseMemoryKinds`), not in
the client. HTTP JSON is additive — no protocol version bump.
```json
{
"id": "f0.c0",
@@ -420,6 +426,15 @@ compute thresholds. There is no school-wide opinions endpoint.
"hasCustom": false,
"hasFullBody": false,
"customPortraitPrompt": null,
"offenses": [
{
"kind": "fight",
"kindLabel": "драка",
"time": "2012-04-03T11:20:00Z",
"otherPersonId": "f0.c1",
"otherFullName": "Иванов Кирилл Петрович"
}
],
"connections": {
"family": {
"parents": [