# Фаза 32. Погода и тепло ## Зависимости - [Фаза 29](29-country.md) - [Фаза 20](20-needs-actions.md) ## Зачем На улице есть температура и осадки. Человек может мёрзнуть. Часы это показывают. ## Задачи - [x] `ClimatePresetDef` получает рабочие числа: нормы по месяцам, разброс дня, осадки - [x] Школа считает улицу из пресета + сида + даты/часа; не каждый тик, а когда меняется надпись или это сдвинет тепло - [x] В здании теплее улицы за счёт стен, без техника ещё не комфорт (комфорт — фаза 33) - [x] Двор и крыльцо — улица - [x] Нужда `Warmth`: декей от разницы «утепление одежды vs температура места»; вне школы восстанавливается, как сон - [x] Черты теплолюбивый / холодолюбивый: поле смещения комфорта на `TraitDef`, взаимно несовместимы - [x] Кадр часов: температура (десятые доли °C, `i16`) и осадки (`u8`). Версия протокола +1. `ProtocolCodec.cs`, `protocol.ts`, `docs/protocol.md` в одном коммите - [x] Клиент рисует погоду у даты; не считает её из месяца - [x] Пропуск пустого времени выставляет погоду утра, не вчерашнюю ## Тесты, без которых фаза не закрыта - [x] Тот же пресет, сид и timestamp → та же температура и осадки - [x] Январь холоднее июля на ванильном пресете - [x] Ниже нуля осадки — снег, не дождь (если пресет вообще дал осадки) - [x] На морозе без верхней одежды тепло падает; дома за ночь возвращается - [x] Кадр часов круглый трип и байтовая раскладка на обеих сторонах - [x] Клиент с старой версией протокола отваливается Hello, как обычно ## Критерий готовности - У часов видно «−5 °C, снег» зимним утром - Полоска тепла на карточке шевелится - `dotnet test` и `npm test` / `build` проходят ## Стоп Не нанимать техника. Не переодевать по погоде — замёрзший ещё терпит. Не штрафовать урок.