# Фаза 41. Мнения и вкладка «Связи» ## Зависимости - [Фаза 8](../02-people/08-people-browser.md) - [Фаза 36](../07-inventory/36-person-card-tabs.md) ## Зачем У пары появляется число. Семья больше не «просто родственники». Карточка умеет это показать, даже пока кружков ещё нет. ## Задачи - [x] Мнение A→B: −100…100, несимметрично, ноль не хранить - [x] Пороги и подписи в `BehaviorDef`; клиент рисует присланную подпись, не считает сам - [x] Генератор ставит семейные старты (родители, сиблинги, партнёры семьи) из данных - [x] Каждое рабочее утро (и skip) ненулевые мнения слегка дрейфуют к семейному базису или к нулю; дошли до нуля — запись выкинуть - [x] `people.json` пишет мнение при сдвиге; старый сейв без поля — все нули кроме семьи после первой загрузки-переписи - [x] Вкладка карточки **Связи**: семья с числами, топ друзей/врагов, поиск по ненулевым - [x] Игрок с вкладки ничего не меняет - [x] `docs/protocol.md` — HTTP карточки ## Тесты, без которых фаза не закрыта - [x] Родитель и ребёнок после генерации имеют плюс в обе стороны; чужие одноклассники — нет записи - [x] A→B и B→A могут различаться - [x] После нескольких утренних дрейфов без разговоров мнение одноклассников (если появилось) ближе к нулю, семейное — к старту, не к нулю - [x] Карточка без отдельного запроса «всех пар школы»: только этот человек - [x] Клиентский тест: вкладка «Связи» не монтирует лог ## Критерий готовности - Открыть ученика, на «Связях» родители с подписью «близкие» или соседней, одноклассник без строки - `dotnet test` и `npm test` / `build` проходят ## Стоп Не собирать кружки. Не бампить сокет. Не заводить романтику.