| 1 | # P/F/M Zone Geometry — Wave 2 |
| 2 | |
| 3 | Статус: done. |
| 4 | |
| 5 | ## Цель |
| 6 | |
| 7 | Довести геометрию до явных zone-bounds и добавить визуальный overlay контуров зон без изменения контента. |
| 8 | |
| 9 | ## Что сделано |
| 10 | |
| 11 | 1. Расширен DTO кадра геометрии: |
| 12 | - `PresentationMainGridLayoutFrame` теперь содержит `ZoneBounds`. |
| 13 | - `PresentationZoneBound` описывает `Zone`, `StartNormalized`, `WidthNormalized`. |
| 14 | 2. Расчёт bounds встроен в `PresentationMainGridLayoutFrameBuilder`: |
| 15 | - bounds строятся для первого экрана в порядке якорей. |
| 16 | 3. Добавлен overlay контуров зон в `MainWindow.axaml`: |
| 17 | - `SkiaZoneGeometryOverlayPfd` / `SkiaZoneGeometryOverlayForward` / `SkiaZoneGeometryOverlayMfd`; |
| 18 | - не меняет содержимое зон, только визуально подсвечивает границы. |
| 19 | 4. Добавлена настройка пользователя: |
| 20 | - `[display].show_skia_zone_geometry_overlay` (модель `DisplaySettings`). |
| 21 | - VM-свойства видимости overlay учитывают текущую геометрию колонок. |
| 22 | 5. Усилен debug snapshot log: |
| 23 | - `[MainGridGeometry]` теперь логирует и `bounds=[...]`. |
| 24 | 6. Тесты дополнены проверкой zone-bounds: |
| 25 | - `PresentationMainGridLayoutFrameBuilderTests`. |
| 26 | |
| 27 | ## Решение по rollout |
| 28 | |
| 29 | - Полный dual-path для Wave 2 не вводится. |
| 30 | - Причина: внутренний продукт с одним потребителем; важнее скорость и простота. |
| 31 | - Контроль: debug snapshot + ручная визуальная валидация. |
| 32 | |
| 33 | ## Definition of Done |
| 34 | |
| 35 | - Геометрия зон доступна не только как строка колонок, но и как явные bounds DTO. |
| 36 | - Preview контуров можно включить через пользовательскую настройку без изменений контента. |
| 37 | - Сборка и таргетные тесты presentation-слоя проходят. |
| 38 | |