diff --git a/docs/phases/09-social/reviewed.md b/docs/phases/09-social/reviewed.md new file mode 100644 index 0000000..072a4ef --- /dev/null +++ b/docs/phases/09-social/reviewed.md @@ -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. Менять ванильный размер кружка ревью не стало. diff --git a/docs/phases/reviewed.md b/docs/phases/reviewed.md index bb6f8bf..2bc5d0e 100644 --- a/docs/phases/reviewed.md +++ b/docs/phases/reviewed.md @@ -31,3 +31,4 @@ | Срез 7. Этап A — данные и гардероб | `d5547b7` | [07-inventory](07-inventory/reviewed.md) | | Срез 7. Этап B–C — климат, жизнь одежды и правила | `5dcdee6` | [07-inventory](07-inventory/reviewed.md) | | Срез 8. Сессия и темп | `1c3ae9a` | [08-session](08-session/reviewed.md) | +| Срез 9. Этапы A–B — мнения и разговоры | `b38d0bb` | [09-social](09-social/reviewed.md) |