---
type: acceptance-criteria
work_item_id: ET-001
title: "Критерии приёмки: Чекбокс показа/скрытия POI"
version: 3
status: proposed
created_at: 2026-06-14
updated_at: 2026-06-14
author: "agent:analyst"
relates_to: ET-002
---

# Критерии приёмки — ET-001: Видимость POI

Формат Given/When/Then. Среда проверки: test
(`https://openclaw.mva154.duckdns.org/enduro/`). Большинство критериев
(AC-02…AC-08) — **регрессия** уже поставленного в ET-002 поведения;
AC-01 — **новая дельта** (подпись).

## AC-01 — Подпись «Показывать POI» (новая дельта, REQ-F-01)
- **Given** открытое приложение.
- **When** пользователь нажимает `#terrain-toggle`.
- **Then** в `#terrain-popup` виден чекбокс `#poi-visible-cb` с подписью
  ровно **«Показывать POI»**; подпись помещается в одну строку, layout
  попапа не сломан.

## AC-02 — Чекбокс включён по умолчанию (REQ-F-03)
- **Given** первый заход (нет ключа `poi-visible` в localStorage).
- **When** открыт попап рельефа.
- **Then** `#poi-visible-cb` отмечен (checked), маркеры POI видны на карте.

## AC-03 — Снятие чекбокса скрывает POI (REQ-F-04)
- **Given** открытый попап, POI видны.
- **When** пользователь снимает `#poi-visible-cb`.
- **Then** все маркеры POI (`poi-circles`, `poi-labels`) исчезают с карты.

## AC-04 — Установка чекбокса возвращает POI (REQ-F-05)
- **Given** POI скрыты чекбоксом.
- **When** пользователь снова отмечает `#poi-visible-cb`.
- **Then** маркеры POI снова отображаются на карте.

## AC-05 — Сохранение состояния «скрыто» после перезагрузки (REQ-F-06)
- **Given** пользователь снял чекбокс (POI скрыты).
- **When** страница перезагружается.
- **Then** POI не отображаются сразу после загрузки, а `#poi-visible-cb`
  при открытии попапа — снят.

## AC-06 — Сохранение состояния «показано» после перезагрузки (REQ-F-06)
- **Given** чекбокс отмечен (POI видны).
- **When** страница перезагружается.
- **Then** POI видны, чекбокс отмечен.

## AC-07 — Устойчивость к смене темы (REQ-F-07)
- **Given** POI скрыты чекбоксом.
- **When** пользователь переключает тему (`#btn-theme`).
- **Then** POI остаются скрытыми, `#poi-visible-cb` остаётся снятым.

## AC-08 — Согласованность состояния (REQ-NF-03)
- **Given** любое из действий выше.
- **Then** значение чекбокса, `localStorage['poi-visible']`
  ('1'/'0') и фактическая видимость слоёв POI не противоречат друг другу.

## AC-09 — Регрессия unit-тестов POI
- **Given** ветка с правкой подписи (`index.html:88`) **и** синхронно
  обновлённым ожиданием текста в `tests/unit/test_poi_toggle.py:54`
  (`assert "<span>Показывать POI</span>" in html`).
- **When** запускается `make test`.
- **Then** `tests/unit/test_poi_toggle.py` и
  `tests/unit/poi_toggle.test.js` зелёные. Примечание: текст подписи
  проверяет именно python-тест (строка 54); JS-тест проверяет только
  поведение и подписи не касается. Без правки строки 54 `make test`
  упадёт на ассерте `<span>POI</span>`.

## AC-10 — Без побочных эффектов на сервере (REQ-NF-02)
- **Given** переключение чекбокса.
- **Then** запросы к `/api/tiles/.../*.mvt` и серверная отдача слоя `poi`
  не меняются; видимость управляется только на клиенте.
