feat(ET-007): спутниковая подложка с переключателем Схема/Спутник #10
Reference in New Issue
Block a user
Delete Branch "feature/ET-007-et-005"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
#terrain-popuplocalStorage(ключmap-base-layer) и переживание смены темы черезrebuildMapOverlays()(первым)*-halo-satelliteв обоихstyle*.jsonдля читаемости trails поверх спутникаsetPaintPropertyАртефакты
docs/work-items/ET-007/02-trz.mddocs/work-items/ET-007/03-acceptance-criteria.mddocs/work-items/ET-007/06-adr/ADR-004-satellite-base-layer.mddocs/work-items/ET-007/04-test-plan.yamlTest plan
node --test tests/unit/base_layer.test.js— 28 passedpytest tests/unit/test_base_layer.py— 22 passedpytest tests/unit/test_poi_toggle.py tests/unit/test_unit_toggle.py— регресса нет (27 passed)style.jsonиstyle-dark.jsonRefs: ET-007
12-review.md (REQUEST_CHANGES, attempt 2/3) flagged 6 must-fix items in the analysis/architecture artefacts plus matching bugs that had already leaked into the committed implementation. This patch lands both: documents corrected, code aligned with corrected specs, tests updated. P1-1: TRZ/ADR/Data/Risks referenced fictional layer ids (`trails-grade1..5-halo-satellite`, `paths-bridleway-halo-satellite`). Actual style*.json has only `trails-track-halo-satellite` and `trails-path-bridleway-halo-satellite`; grade differentiation lives inside one `match` expression on `tracktype` within `trails-track`. Docs rewritten to operate on real ids. P1-2: POI labels contrast was broken — spec changed only halo-color to black, leaving `text-color: #333333` (light theme baseline) unreadable over the new black halo. Code+docs now switch BOTH `text-color` (-> `#ffffff` on satellite) AND halo together, with per-theme baselines (`#333333` light / `#e0e0e0` dark) restored on return to Schematic. P1-3: BRD §5 hillshade risk said «hillshade auto-disabled on satellite», contradicting TRZ/ADR/AC. BRD wording aligned: hillshade keeps working over satellite; visual check is AC-04. P1-4: background-color had four divergent sources (`#1a1a1a`, `#2a2a2a`, `#1a1a2e`, `#f0ede6`), incl. an inverted-theme typo and a baseline `#1a1a1a` that didn't match the actual `style-dark.json:28` value `#1a1a2e`. Settled on ADR-004's single-constant model: `#2a2a2a` on satellite for both themes; on Schematic restore per-theme baselines `#f0ede6` (light) / `#1a1a2e` (dark). `_applyBackgroundForSatellite` fixed accordingly. P1-5: app.js already had `layerState.basemap` and `toggleLayer ('basemap')` (legacy «Базовая карта» switch). Neither TRZ nor ADR specified the interaction. Added save&restore contract: on entering Satellite save `layerState.basemap` to `_savedBasemapState` and force-hide `osm-base`; on returning to Schematic restore osm-base visibility from the saved value. CSS hook `body.satellite-active #btn-basemap { display:none }` keeps the user from trying to enable a hybrid mode (out of scope, BRD §3). TRZ §5.6, ADR-004 §8. P1-6: `restoreTrailsState()` and `onTrailsCheckbox()` only managed visibility of `trails-track` / `trails-path-bridleway`, leaving their halo-underlay siblings as «phantom» halos when the user unchecked grunты/тропы under Satellite. Introduced `_applyTrailHaloVisibility(map, base)` reading checkbox state from DOM; called from `onTrailsCheckbox`, `restoreTrailsState`, and both branches of `applyBaseLayer`. Rule: halo visible ⇔ (base === satellite) AND (checkbox ON). TRZ §5.7, ADR-004 §9. Docs bumped: BRD v2, TRZ v2, AC v2, Data v2, Risks v2; ADR-004 получает «Ревизии»-секцию (status remains accepted — only editorial fixes, no decision change). Tests: - tests/unit/base_layer.test.js: rewritten 2 background-color assertions (#1a1a1a expectation removed), added 6 new tests for P1-2 / P1-4 (POI text-color per-theme baselines, single satellite bg #2a2a2a, baseline restore on Schematic). - All 33 JS unit tests + 22 pytest static checks green. - Full pytest suite: 76 passed (excluding pre-existing shapely-import skipped collection in tests/unit/test_health.py). Refs: ET-007 Review: docs/work-items/ET-007/12-review.md (P1-1..P1-6) ADR: docs/work-items/ET-007/06-adr/ADR-004-satellite-base-layer.md (rev. 2026-05-31) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>