feat(ET-009): activate EnduroRussia + Wikiloc GPS sources
Конфиг-only активация двух новых источников GPS-треков поверх pipeline ET-008. Не вводит новых компонентов, БД-таблиц, endpoint'ов. Config: - config/gps_sources.yaml: enduro_russia enabled=true, base_url исправлен на endurorussia.ru (без дефиса); добавлена запись wikiloc с max_tracks_per_run=50, activity_filter=[motorcycle, enduro]. - config/gps_regions.yaml: wikiloc добавлен в tsfo_plus_chuvashia.sources. Parser: - wikiloc.py: добавлен soft-cap max_tracks_per_run в collect(), извлечение created_at из GPX metadata/первого trkpt — для корректной межисточниковой дедупликации с EnduroRussia. UI (src/web/gps_tracks.js): - GPS_SOURCE_COLORS: добавлен цвет wikiloc (#4363d8). - Дефолтный фильтр sources включает wikiloc. - GPS_SOURCE_ATTRIBUTIONS: маппинг source_id → строка атрибуции; _updateGpsAttribution() подтягивает /api/gps-tracks/health и выставляет attribution с теми источниками, у которых tracks > 0. - _buildGpsFiltersUI: чекбокс «Wikiloc» в #gps-source-grid. Tests: - Fixtures: 7 файлов в tests/fixtures/gps-tracks/. - Unit: 10 UT-ER + 10 UT-WL — парсеры, MAPPING, bbox-фильтр, pagination, 429/403 graceful-stop, rate-limit, max_tracks_per_run. - Integration: IT-ER-01, IT-WL-01, IT-WL-02, IT-DEDUP-01, IT-LIC-01 через scripts.gps_collect.main + httpx.MockTransport. - Contract: 2 CT-ER с маркером @pytest.mark.network (nightly only). - JS: 2 новых теста на наличие wikiloc в SOURCE_COLORS и в фильтрах. Linters/Tests: ruff clean (новые файлы), 166 pytest passed, 24 JS-tests passed. Refs: ET-009 Acceptance: AC-01..AC-08, AC-14..AC-17 (для AC-09..AC-13 — продакшн-прогон) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -170,16 +170,34 @@ test('Filters: начальный colorMode === "source"', () => {
|
||||
assert.equal(win.gpsTracksLayer.filters.colorMode, 'source');
|
||||
});
|
||||
|
||||
test('Filters: начальные источники включают osm, enduro_russia, ttrails', () => {
|
||||
test('Filters: начальные источники включают osm, enduro_russia, wikiloc, ttrails (ET-009)', () => {
|
||||
const win = {};
|
||||
loadGpsTracksModule(win);
|
||||
const { sources } = win.gpsTracksLayer.filters;
|
||||
assert.ok(Array.isArray(sources), 'filters.sources должен быть массивом');
|
||||
assert.ok(sources.includes('osm'), 'отсутствует источник osm');
|
||||
assert.ok(sources.includes('enduro_russia'), 'отсутствует источник enduro_russia');
|
||||
assert.ok(sources.includes('wikiloc'), 'отсутствует источник wikiloc');
|
||||
assert.ok(sources.includes('ttrails'), 'отсутствует источник ttrails');
|
||||
});
|
||||
|
||||
// ET-009 — REQ-F-13/REQ-F-14: цвета и атрибуция новых источников
|
||||
test('ET-009: GPS_SOURCE_COLORS содержит цвет для wikiloc', () => {
|
||||
const { GPS_SOURCE_COLORS } = loadGpsTracksModule();
|
||||
assert.ok(GPS_SOURCE_COLORS.wikiloc, 'GPS_SOURCE_COLORS.wikiloc отсутствует');
|
||||
assert.match(GPS_SOURCE_COLORS.wikiloc, /^#[0-9a-fA-F]{6}$/);
|
||||
});
|
||||
|
||||
test('ET-009: цвета osm, enduro_russia, wikiloc различны', () => {
|
||||
const { GPS_SOURCE_COLORS } = loadGpsTracksModule();
|
||||
const colors = new Set([
|
||||
GPS_SOURCE_COLORS.osm,
|
||||
GPS_SOURCE_COLORS.enduro_russia,
|
||||
GPS_SOURCE_COLORS.wikiloc,
|
||||
]);
|
||||
assert.equal(colors.size, 3, 'цвета osm/enduro_russia/wikiloc должны быть уникальны');
|
||||
});
|
||||
|
||||
test('Filters: enabled=false при инициализации', () => {
|
||||
const win = {};
|
||||
loadGpsTracksModule(win);
|
||||
|
||||
Reference in New Issue
Block a user