auto-sync: 2026-06-04 08:40:01

This commit is contained in:
Stream
2026-06-04 08:40:01 +03:00
parent a6e8f67d50
commit c9a4895fab
2 changed files with 29 additions and 0 deletions

View File

@@ -161,3 +161,5 @@
{"op": "relate", "from": "proj_orchestrator", "rel": "has_task", "to": "task_orch_bug7", "properties": {}, "timestamp": "2026-06-03T23:19:40.334105+00:00"}
{"op": "create", "entity": {"id": "task_orch_bug8", "type": "Task", "properties": {"title": "\u0411\u0430\u0433 8: deploy \u043d\u0435 \u0438\u043c\u0435\u043b QG-\u0433\u0435\u0439\u0442\u0430, \u043f\u0440\u043e\u0432\u0430\u043b\u0438\u0432\u0448\u0438\u0439\u0441\u044f \u0434\u0435\u043f\u043b\u043e\u0439 \u0443\u0445\u043e\u0434\u0438\u043b \u0432 done", "project": "proj_orchestrator", "folder": "tasks/orchestrator/", "doc_path": "tasks/orchestrator/ORCHESTRATOR_DOCS.md", "status": "done", "priority": "urgent", "assignee": "dev", "description": "PR #19 (commit e4a9c48, merge 2629dff). \u0412\u0441\u043a\u0440\u044b\u0442\u043e \u043d\u0430 ET-011: \u0444\u0438\u0447\u0430 \u043f\u043e\u043c\u0435\u0447\u0435\u043d\u0430 done, \u043d\u043e \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u0435 GPX \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e \u2014 deploy-hook \u0443\u043f\u0430\u043b permission denied, \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u043d\u0435 \u043f\u0435\u0440\u0435\u0441\u043e\u0431\u0440\u0430\u043b\u0441\u044f. deployer \u0447\u0435\u0441\u0442\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043b Status:FAILED, \u043d\u043e exit_code LLM-\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430=0 \u2192 \u0437\u0430\u0449\u0438\u0442\u0430 launcher.py:475 \u043d\u0435 \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0430 + stages.py deploy \u0438\u043c\u0435\u043b qg:None. \u0424\u0438\u043a\u0441: \u043d\u043e\u0432\u044b\u0439 QG check_deploy_status (\u043f\u043e \u043e\u0431\u0440\u0430\u0437\u0446\u0443 check_reviewer_verdict) \u0447\u0438\u0442\u0430\u0435\u0442 frontmatter deploy_status \u0438\u0437 14-deploy-log.md; deploy.qg=check_deploy_status; SUCCESS\u2192done, FAILED\u2192\u043e\u0442\u043a\u0430\u0442 development+Blocked \u043f\u043e \u0412\u0415\u0420\u0414\u0418\u041a\u0422\u0423 \u043d\u0435 exit_code. deployer-\u043f\u0440\u043e\u043c\u043f\u0442 enduro-trails \u043e\u0431\u044f\u0437\u0430\u043d \u043f\u0438\u0441\u0430\u0442\u044c deploy_status (PR enduro-trails #23). \u0423\u0440\u043e\u043a: \u0437\u0435\u043b\u0451\u043d\u044b\u0439 CI != \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 \u043f\u0440\u043e\u0434\u0435."}, "created": "2026-06-03T23:52:07.559163+00:00", "updated": "2026-06-03T23:52:07.559163+00:00"}, "timestamp": "2026-06-03T23:52:07.559163+00:00"}
{"op": "relate", "from": "proj_orchestrator", "rel": "has_task", "to": "task_orch_bug8", "properties": {}, "timestamp": "2026-06-03T23:52:07.598823+00:00"}
{"op": "create", "entity": {"id": "task_et011_gpx_download", "type": "Task", "properties": {"title": "ET-011: \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u0435 GPX \u0447\u0443\u0436\u0438\u0445 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0445 \u0442\u0440\u0435\u043a\u043e\u0432 \u0438\u0437 \u043f\u043e\u043f\u0430\u043f\u0430", "project": "proj_enduro_trails", "folder": "tasks/enduro-trails/", "doc_path": "tasks/enduro-trails/PROJECT.md", "status": "done", "priority": "normal", "assignee": "dev", "description": "\u042d\u043d\u0434\u043f\u043e\u0438\u043d\u0442 GET /api/gps-tracks/{track_id}/download \u2014 GPX 1.1 \u0438\u0437 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438 \u0442\u0440\u0435\u043a\u0430. \u041b\u0438\u0446\u0435\u043d\u0437\u0438\u043e\u043d\u043d\u0430\u044f \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 ADR-015 default-deny (download_allowed per source). \u0410-1 (\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430 04.06): enduro_russia download_allowed=true (enduro-trails #23, commit 81c3394/merge b6b21aa). \u041d\u0430 \u043f\u0440\u043e\u0434\u0435: HTTP 200, 265KB, \u0432\u0430\u043b\u0438\u0434\u043d\u044b\u0439 GPX 1.1. \u0418\u043d\u0444\u0440\u0430-\u0444\u0438\u043a\u0441 04.06 \u0447\u0435\u0440\u0435\u0437 installer: sudo chown slin:slin /var/log/enduro-trails (deploy-hook \u043f\u0430\u0434\u0430\u043b \u043d\u0430 permission denied)."}, "created": "2026-06-04T05:38:54.726267+00:00", "updated": "2026-06-04T05:38:54.726267+00:00"}, "timestamp": "2026-06-04T05:38:54.726267+00:00"}
{"op": "relate", "from": "proj_enduro_trails", "rel": "has_task", "to": "task_et011_gpx_download", "properties": {}, "timestamp": "2026-06-04T05:38:54.771227+00:00"}

View File

@@ -297,6 +297,33 @@ docker restart prototype-enduro-trails-1
---
## ET-011 — Скачивание GPX чужих публичных треков (03-04.06.2026) ✅
> Не путать с F-05 (экспорт СОБСТВЕННОГО построенного маршрута). ET-011 — скачивание уже собранных чужих треков из попапа на карте.
**Фича:** кнопка «Скачать GPX» в попапе публичного трека. Эндпоинт `GET /api/gps-tracks/{track_id}/download` — собирает GPX 1.1 из геометрии трека, с проверками формата/размера/лицензии.
**Лицензионная политика (ADR-015, default-deny):**
- `config/gps_sources.yaml``download_allowed: <bool>` на каждый источник. По умолчанию `DEFAULT_DOWNLOAD_ALLOWED_SOURCES = {"osm"}` — качать можно только OSM.
- Источник без флага → **403 `source_forbidden`** + ссылка на оригинал (`external_urls`). Это не баг — намеренно.
**Состояние источников (origin/main, enduro-trails #23):**
- `osm``true` | `enduro_russia`**`true`** (А-1, решение владельца 04.06) | `wikiloc``false` | `ttrails``false`
- ⚠️ **А-1:** `enduro_russia` включён по явному решению Славы (286 треков — из этого источника). ToS EnduroRussia явно не разрешает ре-экспорт — юр-риск принят владельцем осознанно.
**Проверка на проде (трек 102):** HTTP 200, 265 КБ, `application/gpx+xml`, content-disposition с кириллицей, валидный GPX 1.1 (xmllint OK). ✅ Качается.
### ⚠️ Грабли ET-011 (важные)
| Грабля | Решение |
|--------|---------|
| Конфиг `gps_sources.yaml` монтируется volume `./config:/app/config:ro` | Правка файла + рестарт контейнера = новая политика **без пересборки образа** |
| Файл `gps_sources.yaml` root-owned, у slin нет write/sudo | Правка через docker-root: `docker run --rm -v .../config:/c alpine sh -c '...'` |
| `download_allowed: false` (default ADR-015) → 403, а не 404 | Если фронт показывает «Открыть оригинал» — источник просто не разрешён к скачиванию (не баг) |
| 404 на `/download` при живом треке = маршрут НЕ зарегистрирован (старый образ) | Проверять openapi прода в первую очередь; пересобрать контейнер из актуального main |
| deploy-hook падал: `/var/log/enduro-trails` root-owned | **ИСПРАВЛЕНО 04.06** через installer: `sudo chown slin:slin /var/log/enduro-trails`. Сейчас slin пишет в каталог → хук не падает |
---
## Документы
| Документ | Описание |