90 lines
6.3 KiB
Markdown
90 lines
6.3 KiB
Markdown
---
|
||
type: brd
|
||
work_item_id: ET-001
|
||
title: "BRD: Чекбокс показа/скрытия POI в кнопке рельефа"
|
||
version: 4
|
||
status: proposed
|
||
created_at: 2026-06-14
|
||
updated_at: 2026-06-14
|
||
author: "agent:analyst"
|
||
supersedes: "barriers-osrm (archive-2026-05-barriers-osrm/)"
|
||
relates_to: 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). Данный пакет описывает минимально возможную
|
||
реальную дельту, если задачу всё же нужно довести.
|