[
  {
    "id": "PAGE-LOAD",
    "status": "PASS",
    "note": "HTTP 200 OK"
  },
  {
    "id": "PAGE-TITLE",
    "status": "PASS",
    "note": "title содержит \"Enduro Trails\""
  },
  {
    "id": "UI-BTN-ROUTE",
    "status": "PASS",
    "note": "кнопка #btn-route с toggleRouteMode есть"
  },
  {
    "id": "UI-BTN-MARKERS",
    "status": "PASS",
    "note": "кнопка #btn-markers есть"
  },
  {
    "id": "UI-BTN-RULER",
    "status": "PASS",
    "note": "кнопка #btn-ruler есть"
  },
  {
    "id": "UI-SEARCH",
    "status": "PASS",
    "note": "поле #search-input есть"
  },
  {
    "id": "UI-BTN-WAYPOINT",
    "status": "PASS",
    "note": "кнопка #btn-add-waypoint есть"
  },
  {
    "id": "UI-BTN-COMPASS",
    "status": "PASS",
    "note": "кнопка #btn-compass есть"
  },
  {
    "id": "UI-BTN-LOCATE",
    "status": "PASS",
    "note": "кнопка #btn-locate есть"
  },
  {
    "id": "TC-F01-PANEL-HIDDEN",
    "status": "PASS",
    "note": "route-panel скрыт (style=\"display:none; position:absolute; bottom:40px; right:10px;\n  ...\")"
  },
  {
    "id": "TC-F01-STATUS-INIT",
    "status": "PASS",
    "note": "начальный статус: \"Кликни точку старта\""
  },
  {
    "id": "TC-F01-ACTIONS-HIDDEN",
    "status": "PASS",
    "note": "route-actions скрыт изначально"
  },
  {
    "id": "TC-F05-GPX-EXISTS",
    "status": "FAIL",
    "note": "downloadGPX не найден"
  },
  {
    "id": "TC-F05-01",
    "status": "BLOCKED",
    "note": "GPX кнопка не в route-card-details"
  },
  {
    "id": "APP-JS-LOAD",
    "status": "PASS",
    "note": "app.js загружен (39409 байт)"
  },
  {
    "id": "TC-F03-08-FORMAT",
    "status": "PASS",
    "note": "formatDuration поддерживает дни/часы/минуты"
  },
  {
    "id": "TC-F03-08",
    "status": "PASS",
    "note": "formatDuration: <60 мин → минуты, >=60 → часы"
  },
  {
    "id": "TC-F01-02",
    "status": "PASS",
    "note": "ROUTE_COLORS: 5 цветов, все уникальны: '#0066ff', '#00aa44', '#9933cc', '#ff8800', '#888888'"
  },
  {
    "id": "TC-F01-04-CLASS",
    "status": "PASS",
    "note": "класс route-card используется"
  },
  {
    "id": "TC-F01-04-ACTIVE",
    "status": "FAIL",
    "note": "active класс не найден"
  },
  {
    "id": "TC-F01-02-DOT",
    "status": "PASS",
    "note": "route-color-dot элемент есть"
  },
  {
    "id": "TC-F02-COVERAGE-BAR",
    "status": "PASS",
    "note": "route-coverage-bar элемент есть"
  },
  {
    "id": "TC-F02-01-PCT",
    "status": "PASS",
    "note": "проценты покрытия (dirt_total_pct, asphalt_pct) есть"
  },
  {
    "id": "TC-F02-04-DETAILS",
    "status": "PASS",
    "note": "route-card-details элемент есть"
  },
  {
    "id": "TC-F02-04-BTN",
    "status": "PASS",
    "note": "кнопка деталей маршрута есть"
  },
  {
    "id": "TC-F04-DND",
    "status": "PASS",
    "note": "drag-and-drop точек реализован"
  },
  {
    "id": "TC-F04-REMOVE",
    "status": "PASS",
    "note": "удаление точки реализовано"
  },
  {
    "id": "TC-F01-07",
    "status": "PASS",
    "note": "clearRoute функция есть"
  },
  {
    "id": "TC-F06-MARKER-MODE",
    "status": "PASS",
    "note": "toggleMarkerMode реализован"
  },
  {
    "id": "TC-F01-03",
    "status": "PASS",
    "note": "highlightRoute/unhighlightRoute реализованы"
  },
  {
    "id": "TC-NFR-03",
    "status": "PASS",
    "note": "meta viewport для мобильных есть"
  },
  {
    "id": "API-HEALTH",
    "status": "PASS",
    "note": "health OK, db_exists=true, db_path=/data/centralfederal.sqlite"
  },
  {
    "id": "API-DB-EXISTS",
    "status": "PASS",
    "note": "БД существует"
  },
  {
    "id": "TC-F01-01",
    "status": "PASS",
    "note": "построено 1 маршрутов"
  },
  {
    "id": "TC-F02-01-DIST",
    "status": "PASS",
    "note": "дистанция: 13.2 км"
  },
  {
    "id": "TC-F02-01-TIME",
    "status": "PASS",
    "note": "время: 2177с = 36 мин"
  },
  {
    "id": "TC-F03-08",
    "status": "PASS",
    "note": "время 36 мин < 60, отображается в минутах — OK"
  },
  {
    "id": "TC-F02-01-PCT",
    "status": "PASS",
    "note": "грунт: 100%, асфальт: 0%"
  },
  {
    "id": "TC-F02-COVERAGE-SUM",
    "status": "PASS",
    "note": "сумма покрытий = 100% (≈100%)"
  },
  {
    "id": "TC-F01-GEOMETRY",
    "status": "PASS",
    "note": "геометрия LineString, 394 точек"
  },
  {
    "id": "TC-F01-02",
    "status": "PASS",
    "note": "1 маршрут (альтернативы зависят от данных OSM)"
  },
  {
    "id": "TC-F01-01-FAR",
    "status": "PASS",
    "note": "дальние точки: 2 маршрутов"
  },
  {
    "id": "TC-F04-01",
    "status": "PASS",
    "note": "3 точки: маршрут построен (1 вариантов)"
  },
  {
    "id": "TC-API-INVALID",
    "status": "PASS",
    "note": "невалидный запрос: HTTP 400"
  },
  {
    "id": "TC-SEARCH-API",
    "status": "BLOCKED",
    "note": "/api/search не реализован (404)"
  },
  {
    "id": "APP-CSS-LOAD",
    "status": "PASS",
    "note": "app.css загружен (9397 байт)"
  },
  {
    "id": "TC-CSS-ROUTE-CARD",
    "status": "PASS",
    "note": ".route-card стиль есть"
  },
  {
    "id": "TC-CSS-COLOR-DOT",
    "status": "PASS",
    "note": ".route-color-dot стиль есть"
  },
  {
    "id": "TC-CSS-COVERAGE-BAR",
    "status": "PASS",
    "note": ".route-coverage-bar стиль есть"
  },
  {
    "id": "TC-CSS-WAYPOINT-ROW",
    "status": "PASS",
    "note": ".waypoint-row стиль есть"
  },
  {
    "id": "TC-CSS-CARD-DETAILS",
    "status": "PASS",
    "note": ".route-card-details стиль есть"
  }
]