6.3 KiB
type, work_item_id, title, version, status, created_at, updated_at, author, supersedes, relates_to
| type | work_item_id | title | version | status | created_at | updated_at | author | supersedes | relates_to |
|---|---|---|---|---|---|---|---|---|---|
| brd | ET-001 | BRD: Чекбокс показа/скрытия POI в кнопке рельефа | 4 | proposed | 2026-06-14 | 2026-06-14 | agent:analyst | barriers-osrm (archive-2026-05-barriers-osrm/) | ET-002 |
BRD — ET-001: Чекбокс показа/скрытия POI в кнопке рельефа
Важно для всех последующих этапов. Этот пакет артефактов переиспользует ID ET-001 под POI-задачу (ветка
feature/ET-001-poi). Прежняя задача под этим ID — «Исключить шлагбаумы и тротуары из OSRM» — заархивирована вdocs/work-items/ET-001/archive-2026-05-barriers-osrm/(содержимое сохранено побайтно). Перезапись корневых файлов поэтому не деструктивна.Запрошенная функциональность уже реализована и поставлена в рамках ET-002 (бизнес-запрос ET-002 дословно совпадает с ET-001). Поэтому данный BRD трактует ET-001 как верификацию уже поставленного поведения + одну косметическую дельту (подпись чекбокса), а не как новую разработку. Подробности —
08-analyst-finding-duplicate.md,09-analyst-decision-required.md.
1. Контекст и проблема
На карте маркеры POI (точки интереса: вода, родники, виды, руины, пики, пещеры, броды) отображаются всегда и не отключаются. Пользователю нужна возможность скрывать их, чтобы разгрузить карту при планировании маршрута.
2. Цель
Дать пользователю управление видимостью слоя POI через чекбокс в попапе
кнопки рельефа (#terrain-toggle → #terrain-popup), с подписью
«Показывать POI», включённый по умолчанию, с сохранением выбора
между сессиями.
3. Бизнес-требования (Scope)
| # | Требование | Текущая реализация (ET-002) | Дельта ET-001 |
|---|---|---|---|
| BR-1 | В попапе кнопки рельефа есть чекбокс управления POI | ✅ #poi-visible-cb в #terrain-popup |
— |
| BR-2 | Подпись чекбокса — «Показывать POI» | ⚠️ сейчас «POI» | изменить подпись |
| BR-3 | По умолчанию чекбокс включён (POI видны) | ✅ checked + дефолт «видимы» |
— |
| BR-4 | Снятие чекбокса скрывает все маркеры POI с карты | ✅ слои poi-circles, poi-labels → visibility:none |
— |
| BR-5 | Повторная установка возвращает POI | ✅ | — |
| BR-6 | Состояние сохраняется между сессиями браузера | ✅ localStorage['poi-visible'] |
— |
| BR-7 | Состояние не сбрасывается при смене темы | ✅ восстановление после смены стиля | — |
Единственная новая работа в ET-001 — BR-2: привести подпись чекбокса
к формулировке заказчика «Показывать POI» (сейчас в UI — «POI»). Это
правка одного текстового узла <span> в src/web/index.html.
4. Вне scope
- Разбивка POI по типам (отдельные чекбоксы вода/виды/пики и т.п.).
- Отдельная кнопка POI на панели карты.
- Иконка-индикатор состояния POI на кнопке рельефа.
- Изменение серверной отдачи POI в MVT-тайлах (
/api/tiles) — видимость управляется только на клиенте.
5. Метрики успеха
- Чекбокс «Показывать POI» виден в попапе рельефа, включён по умолчанию.
- Снятие/установка скрывает/возвращает все маркеры POI на карте.
- После перезагрузки и после смены темы выбранное состояние сохраняется.
- Регрессии в ET-002 отсутствуют (unit-тесты
poi_toggleзелёные).
6. Риски
| Риск | Митигация |
|---|---|
Переименование подписи ломает существующий регресс-тест ET-002: tests/unit/test_poi_toggle.py:54 жёстко проверяет assert "<span>POI</span>" in html |
Обновить ожидание текста в этом тесте на <span>Показывать POI</span> в том же коммите, что и правку index.html:88. JS-тест poi_toggle.test.js подпись не проверяет — его трогать не нужно |
| Восприятие задачи как «нечего делать» (дубликат ET-002) | Чёткая дельта BR-2 + полный регресс-пакет верификации |
| Коллизия артефактов с барьерной задачей под тем же ID | Барьерные артефакты заархивированы; данный пакет — канонический для POI-ET-001 |
7. Открытый вопрос к Owner
Если переименование подписи не требуется (ET-002 уже принят с «POI»), то ET-001 следует закрыть как дубликат ET-002 (закрытие — за Owner/CI, правило CLAUDE.md №4). Данный пакет описывает минимально возможную реальную дельту, если задачу всё же нужно довести.