Merge branch 'phase/69-offense-memory'
Co-authored-by: Cursor <cursoragent@cursor.com> # Conflicts: # src/HSchool.Server/Api/PeopleModels.cs # src/HSchool.Server/Game/PersonCardReader.cs
This commit is contained in:
@@ -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] Карточка отдает тот же порядок, что в мире (не клиентская фантазия)
|
||||
|
||||
## Критерий готовности
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
|
||||
| Фаза | Статус | Зачем |
|
||||
| --- | --- | --- |
|
||||
| [69. Память проступков](69-offense-memory.md) | 🔄 | Короткий список на человеке и карточке |
|
||||
| [69. Память проступков](69-offense-memory.md) | ✅ | Короткий список на человеке и карточке |
|
||||
| [70. Вызов и очередь](70-director-summons.md) | ⬜ | Авто, ходьба, коридор, один в кабинете |
|
||||
| [71. Тосты вызова](71-summons-notices.md) | ⬜ | `EventDef` info; очередь видна |
|
||||
|
||||
|
||||
@@ -367,6 +367,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",
|
||||
@@ -424,6 +430,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": [
|
||||
|
||||
Reference in New Issue
Block a user