Конфиг-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>
50 lines
1.8 KiB
YAML
50 lines
1.8 KiB
YAML
sources:
|
||
- id: osm
|
||
name: "OSM Public GPS Traces"
|
||
enabled: true
|
||
license_adr: "docs/work-items/ET-008/06-adr/ADR-009-osm-licensing.md"
|
||
base_url: "https://api.openstreetmap.org/api/0.6"
|
||
rate_limit_sec: 1
|
||
user_agent: "enduro-trails/1.0 (+https://openclaw.mva154.duckdns.org/enduro/)"
|
||
attribution: "© OpenStreetMap contributors (ODbL)"
|
||
parser_module: "src.api.gps_tracks.sources.osm"
|
||
save_user_field: true
|
||
external_url_template: "https://www.openstreetmap.org/user/{user}/traces/{external_id_numeric}"
|
||
|
||
- id: enduro_russia
|
||
name: "EnduroRussia.ru"
|
||
enabled: true
|
||
license_adr: "docs/work-items/ET-008/06-adr/ADR-010-enduro-russia-licensing.md"
|
||
base_url: "https://endurorussia.ru"
|
||
rate_limit_sec: 5
|
||
user_agent: "enduro-trails/1.0 (+https://openclaw.mva154.duckdns.org/enduro/)"
|
||
attribution: "EnduroRussia.ru"
|
||
parser_module: "src.api.gps_tracks.sources.enduro_russia"
|
||
save_user_field: false
|
||
source_priority: 80
|
||
|
||
- id: wikiloc
|
||
name: "Wikiloc"
|
||
enabled: true
|
||
license_adr: "docs/work-items/ET-008/06-adr/ADR-012-wikiloc-licensing.md"
|
||
base_url: "https://www.wikiloc.com"
|
||
rate_limit_sec: 10
|
||
user_agent: "enduro-trails/1.0 (+https://openclaw.mva154.duckdns.org/enduro/)"
|
||
attribution: "© Wikiloc contributors"
|
||
parser_module: "src.api.gps_tracks.sources.wikiloc"
|
||
save_user_field: false
|
||
source_priority: 70
|
||
activity_filter: [motorcycle, enduro]
|
||
max_tracks_per_run: 50
|
||
|
||
- id: ttrails
|
||
name: "Тропинки.ру"
|
||
enabled: false
|
||
license_adr: "docs/work-items/ET-008/06-adr/ADR-011-ttrails-licensing.md"
|
||
base_url: "https://ttrails.ru"
|
||
rate_limit_sec: 5
|
||
user_agent: "enduro-trails/1.0 (+https://openclaw.mva154.duckdns.org/enduro/)"
|
||
attribution: "ttrails.ru"
|
||
parser_module: "src.api.gps_tracks.sources.ttrails"
|
||
save_user_field: false
|