# Фаза 6. Библиотека генерации ## Зависимости - [Фаза 5](05-people-defs.md) ## Зачем Из каталога, карты и сида получаются люди — семьями и детерминированно. Библиотека тестируется без мира, без сокета и без хоста, как `HSchool.Content` сейчас. ## Задачи - [x] Новый проект `HSchool.People` и `tests/HSchool.People.Tests`; ссылка только на `HSchool.Content`, ни Arch, ни ASP.NET - [x] Записи `Person`, `Family`, `SchoolClass`, `Roster` — простые данные, не сущности - [x] Ёмкость из карты: `PupilSlots` по кабинетам и `RoomDef.positions` дают, сколько нужно учеников и каких работников - [x] Генерация семьями: взрослые → дети нужных возрастов → раскладка детей по параллелям и взрослых по должностям - [x] Совмещение ролей: работник может оказаться родителем ученика той же школы - [x] Порядок бросков зафиксирован: тело первым, навыки после, `bodyLimits` применяются зажимом - [x] Склонения: модели в коде, явная таблица из def перекрывает модель - [x] Сид школы приходит снаружи; сид каждой семьи выводится из него ## Тесты, без которых фаза не закрыта - [x] Тот же сид, карта и набор имён — ровно тот же ростер - [x] Тринадцатая семья не меняет, как разыграны первые двенадцать (фамилия, состав, имена). Класс ребёнка при этом меняется — места раздаются вперемешку по школе, иначе братья и сёстры всегда оказывались одноклассниками; см. [`../design/people.md`](../design/people.md) - [x] Фамилии, родовые формы и отчества внутри семьи согласованы - [x] Ученик с телосложением «полное» не получает высокую ловкость - [x] Все ученические места заполнены, все должности закрыты - [x] Школа из одного кабинета и школа из одиннадцати — обе собираются ## Критерий готовности - `HSchool.People.Tests` зелёные - В проекте нет упоминаний сокетов, ECS и `DateTime.Now` ## Стоп Не класть людей в `World`. Не трогать сервер, клиент и формат сейва.