Merge branch 'review/slice-9-ab'
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
# Журнал ревью — срез 9
|
||||
|
||||
## Срез 9. Этапы A–B — мнения и разговоры
|
||||
|
||||
- **Фазы:** 41–43
|
||||
- **Проверен на:** `b38d0bb`, 2026-08-20
|
||||
- **Пути:** `src/HSchool.People/OpinionStore.cs`, `src/HSchool.People/OpinionGenerator.cs`, `src/HSchool.People/OpinionLabels.cs`, `src/HSchool.Ai/TalkCircles.cs`, `src/HSchool.Simulation/MorningOpinions.cs`, `src/HSchool.Simulation/TalkCircleSystem.cs`, `src/HSchool.Simulation/School.cs`, `src/HSchool.Server/Game/PersonCardReader.cs`, `src/HSchool.Server/mods/core/defs/topics/`, `src/HSchool.Server/mods/core/defs/traits/`, `src/HSchool.Client/src/ui/personCard.ts`, `docs/protocol.md`, `tests/HSchool.People.Tests`, `tests/HSchool.Ai.Tests`, `tests/HSchool.Simulation.Tests`
|
||||
- **Итог:** обещания 41–43 на месте; дописано 14 тестов; исправлено 2 расхождения (сейв мнений после разговора; `PickTopic` почти всегда брал последнюю тему). 44 и 46 — **в работе на момент проверки** (44 🔄, 46 ⬜). 45 и 47 в этот проход не входили.
|
||||
- **Открыто:** `Outgoing.talkCircleBonus` не меняет размер кружка при `talkCircleMax` 4 и жёстком clamp 4.
|
||||
|
||||
### Что проверено
|
||||
|
||||
Каждый пункт «Тесты, без которых фаза не закрыта» у 41–43 имеет отдельный тест. Клиент рисует присланную `opinionLabel`, вкладка «Связи» не монтирует лог и ничего не POST-ит. Сокет 41–43 не бампили. `dotnet test` с `--filter` по затронутым классам зелёный.
|
||||
|
||||
### Что дописано
|
||||
|
||||
- `OpinionStoreTests.SetZero_RemovesTheEntry`
|
||||
- `OpinionStoreTests.Set_ClampsToMinusOneHundredAndOneHundred`
|
||||
- `OpinionGeneratorTests.RosterJson_RoundTripsFamilyOpinions`
|
||||
- `OpinionGeneratorTests.SaveWithoutOpinionsField_SeedsFamilyOnLoad`
|
||||
- `MorningOpinionsTests.DriftToZero_DropsTheRecord`
|
||||
- `TalkCirclesTests.NodeFriendScore_PullsTowardFriends_NotEnemies`
|
||||
- `TalkCirclesTests.LunchNodeBlockedByEnemy_OnlyWhenAnotherSeatExists`
|
||||
- `TalkCirclesTests.GossipAndOutgoing_UseTraitFields_NotHardcodedIdLists`
|
||||
- `TalkCirclesTests.GossipTrait_BiasesPickTopicTowardGossipTag`
|
||||
- `TalkCirclesTests.AppearanceTopic_UsesDressAppropriateness`
|
||||
- `TalkCirclesTests.CommunicationGain_IsLessThanLessonSkillPerHour`
|
||||
- `TalkCirclesTests.PickTopic_IsNotAlwaysTheLastNameAlphabetically`
|
||||
- `TalkCircleTests.TalkCircleFinish_MarksTickPeopleChangedSoSaveWritesOpinions`
|
||||
- `WhisperTests.CaughtWhisper_BecomesDisciplineTalkWithTeacher`
|
||||
|
||||
### Что исправлено
|
||||
|
||||
- Конец кружка писал мнения в ростер, но `Tick` не возвращал `peopleChanged` — воркер не сохранял `people.json` до утреннего дрейфа.
|
||||
- `PickTopic` сравнивал бросок в шкале `0…total` с курсором `0…1`, поэтому тема почти всегда была последней по имени, а сплетник не сдвигал выбор.
|
||||
|
||||
### Открытое
|
||||
|
||||
- Черта «общительный» задаёт `talkCircleBonus: 1`, но `MaxSize` клампит к 4 при уже `talkCircleMax` 4 — поле мёртвое, пока верхний потолок не ниже 4. Менять ванильный размер кружка ревью не стало.
|
||||
Reference in New Issue
Block a user