Files
enduro-trails/docs/work-items/ET-001/01-brd.md
claude-bot 12b239eebd
All checks were successful
CI / lint (push) Successful in 31s
CI / test (push) Successful in 49s
CI / build (push) Successful in 34s
analyst(ET): auto-commit from analyst run_id=3
2026-06-14 01:45:40 +03:00

90 lines
6.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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). Данный пакет описывает минимально возможную
реальную дельту, если задачу всё же нужно довести.