Backend:
- Миграция gps_tracks_001_init.sql: таблицы tracks + pipeline_runs
- Пакет src/api/gps_tracks/: models, db (WAL+upsert с dedup), dedup
(bbox+length+date bucket-hash), mvt (LRU-кэш 1024 тайла), endpoint
(GET /api/gps-tracks, GET /api/gps-tracks/tiles/{z}/{x}/{y}.mvt,
GET /api/gps-tracks/health, POST /api/gps-tracks/cache/clear), config
- Парсеры: osm (split_bbox, haversine, defusedxml XXE-защита),
enduro_russia + ttrails — заглушки (ADR-010/011 proposed, блокированы)
- Licensing guard: pipeline проверяет status ADR-файла до запуска источника
- scripts/gps_collect.py: CLI с --region/--source/--dry-run/--gc
Frontend:
- src/web/gps_tracks.js: двухрежимный слой (MVT z≤11, GeoJSON z≥12),
debounced fetch + AbortController, фильтры активности/источника,
цветовая палитра by-source/by-activity, halo на спутнике, popup трека,
restorePublicTracksState(), localStorage persistence
- index.html: чекбокс «Публичные треки» в terrain-popup, #sheet-gps-filters
- app.css: .terrain-link-btn, .gps-filter-grid, .track-popup
- app.js: вызов restorePublicTracksState() в rebuildMapOverlays(),
applyGpsHaloVisibility() в applyBaseLayer()
Конфиги:
- config/gps_sources.yaml: osm (enabled), enduro_russia/ttrails (disabled)
- config/gps_regions.yaml: ЦФО+Чувашия (enabled), Кавказ (disabled)
Docker:
- gps-collector service с profiles: [batch]
Тесты: 48 новых тестов (unit + integration), 125/125 pass
Refs: ET-008
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
41 lines
1.2 KiB
YAML
41 lines
1.2 KiB
YAML
version: "3.8"
|
|
services:
|
|
app:
|
|
build: .
|
|
ports:
|
|
- "5556:5556"
|
|
volumes:
|
|
- ./data:/app/data
|
|
- ./src/web:/app/src/web
|
|
- ./config:/app/config:ro
|
|
environment:
|
|
- DATABASE_URL=sqlite:///./data/enduro.db
|
|
- DATA_PATH=/app/data/centralfederal.sqlite
|
|
- TILES_DIR=/app/data/terrain
|
|
- TERRAIN_DIR=/app/data/terrain
|
|
- STATIC_DIR=/app/src/web
|
|
- OSRM_URL=http://172.22.0.1:5559
|
|
- PORT=5556
|
|
- GPS_TRACKS_DB_PATH=/app/data/gps_tracks.sqlite
|
|
- GPS_SOURCES_CONFIG=/app/config/gps_sources.yaml
|
|
- GPS_REGIONS_CONFIG=/app/config/gps_regions.yaml
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:5556/api/health"]
|
|
interval: 30s
|
|
timeout: 5s
|
|
retries: 3
|
|
|
|
gps-collector:
|
|
build: .
|
|
profiles: ["batch"]
|
|
volumes:
|
|
- ./data:/app/data
|
|
- ./config:/app/config:ro
|
|
- /var/log/enduro-trails:/var/log/enduro-trails
|
|
environment:
|
|
- GPS_TRACKS_DB_PATH=/app/data/gps_tracks.sqlite
|
|
- GPS_SOURCES_CONFIG=/app/config/gps_sources.yaml
|
|
- GPS_REGIONS_CONFIG=/app/config/gps_regions.yaml
|
|
command: ["python", "-m", "scripts.gps_collect"]
|
|
restart: "no"
|