All checks were successful
Калибровка существующих tier-таблиц `build_gps_mvt` / `_simplify_coords` (ADR-016), чтобы при первом открытии карты пользователь видел общее покрытие сети треков, а не пустую подложку. Backend (src/api/gps_tracks/mvt.py): - build_gps_mvt: добавлены тиры z<=5 (min_length=10 км, limit=1500) и z=6 (5 км / 2000); z=7+ — без изменений (регрессия). - _simplify_coords: tolerance для z=6 = 0.018° (~2 км), для z<=5 = 0.04° (~4 км); z=7+ не меняется. Frontend: - GPS_TRACKS_MIN_ZOOM понижен с 8 до 5; vector-source.minzoom подхватывает константу автоматически. - line-width / halo получили stop на z=5 (0.8 / 1.8 CSS-px), чтобы линия была читаема на любом DPR. - Hint #public-tracks-zoom-hint: «Зум 8+» → «Зум 5+». Тесты: - 8 unit zoom-tier (UT-Z5/6/7/8/12) — REQ-F-09. - 10 unit simplify (UT-SIMP-*) — REQ-F-10. - 9 integration endpoint z5-z7 (IT-Z5/6/7, CACHE, REGRESS) — REQ-F-11/12. - 2 perf (PERF-Z5-01/02; avg ~64 ms, p95 ~89 ms при 500 треках — ниже бюджета 200/500 ms по M-6) — REQ-F-13. Маркер @pytest.mark.perf, не в основном CI-gate. Контракт API /api/gps-tracks* не меняется (REQ-F-15); localStorage-ключи и конфиги тоже (REQ-F-16, F-18). Refs: ET-012 ADR: docs/work-items/ET-012/06-adr/ADR-016-z5-tiling-policy.md Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
46 lines
1.1 KiB
TOML
46 lines
1.1 KiB
TOML
[project]
|
||
name = "enduro-trails"
|
||
version = "0.1.0"
|
||
requires-python = ">=3.10"
|
||
description = "Карта эндуро-маршрутов с рельефом, навигацией и слоями terrain/TRI/hillshade"
|
||
readme = "README.md"
|
||
dependencies = [
|
||
"fastapi==0.111.0",
|
||
"uvicorn==0.29.0",
|
||
"shapely==2.0.4",
|
||
"mapbox-vector-tile==2.2.0",
|
||
"httpx==0.27.0",
|
||
"defusedxml==0.7.1",
|
||
"pyyaml==6.0.1",
|
||
]
|
||
|
||
[project.optional-dependencies]
|
||
dev = [
|
||
"ruff>=0.4.0",
|
||
"pytest>=8.0",
|
||
"httpx>=0.27",
|
||
"pytest-asyncio>=0.23",
|
||
"lxml==5.2.2",
|
||
]
|
||
|
||
[build-system]
|
||
requires = ["setuptools>=68", "wheel"]
|
||
build-backend = "setuptools.build_meta"
|
||
|
||
[tool.setuptools.packages.find]
|
||
where = ["."]
|
||
include = ["src*"]
|
||
|
||
[tool.ruff]
|
||
target-version = "py310"
|
||
line-length = 120
|
||
|
||
[tool.pytest.ini_options]
|
||
asyncio_mode = "auto"
|
||
testpaths = ["tests"]
|
||
markers = [
|
||
"network: contract smoke tests that hit live HTTP endpoints (deselect with '-m \"not network\"')",
|
||
"perf: performance tests; run on-demand with '-m perf' (ET-012 REQ-F-13)",
|
||
]
|
||
addopts = "-m 'not network and not perf'"
|