4.4 KiB
DEV TASK — ссылки в комменте analyst: localhost → внешний публичный Gitea URL
Проект: orchestrator | Сервер: slin@82.22.50.71 | Репо: /home/slin/repos/orchestrator | Контейнер: orchestrator (8500)
Ветка: fix/gitea-public-url из свежего main (git checkout main && git pull && git checkout -b fix/gitea-public-url). main = dce9ac8 (PR #13).
⚠️ ГРАБЛЯ push (ORCH-7): после push git log origin/main..origin/fix/gitea-public-url ДОЛЖЕН показать коммиты ДО отчёта «PR готов».
ℹ️ Токен Gitea: docker exec orchestrator printenv ORCH_GITEA_TOKEN.
Проблема
Ссылки на доки в комменте analyst (_build_analyst_ready_comment в src/stage_engine.py) строятся от settings.gitea_url = http://localhost:3000 (env ORCH_GITEA_URL). Это внутренний URL для git-операций (clone/push из docker), из браузера Славы не кликается. Нужен внешний публичный домен.
Решение — НЕ менять gitea_url (он для git-операций), добавить ОТДЕЛЬНУЮ настройку
src/config.py(рядом сgitea_url, ~стр.24): добавить полеPydantic-settings подхватит envgitea_public_url: str = "" # external URL for clickable links in comments; falls back to gitea_urlORCH_GITEA_PUBLIC_URL(тот же префикс ORCH_, что у gitea_url/gitea_token — проверь env_prefix в config.py).src/stage_engine.py,_build_analyst_ready_comment(~стр.40): заменитьнаbase = settings.gitea_url.rstrip("/")Только эту строку (источник base для href). НЕ трогать остальное.base = (getattr(settings, "gitea_public_url", "") or settings.gitea_url).rstrip("/")- НЕ хардкодь домен в коде. Дефолт поля =
""(fallback на gitea_url). Реальное значение задаётся через env.
Env на проде (это сделает АССИСТЕНТ при деплое, НЕ ты — но укажи в отчёте)
ORCH_GITEA_PUBLIC_URL=https://git.mva154.duckdns.org в docker-compose/env оркестратора. (Домен проверен живым: HTTP 200.)
Ограничения
- 🚫 НЕ трогай:
gitea_url(git-операции!), nginx/openclaw.json/.env-секреты/deploy/HMAC/очередь/webhook URL в БД Plane/PLANE_STATES/M-6/uniqueness-guard/status-only логику/conftest.py/fetch_issue_fields/fetch_issue_description. - Conventional Commits, один коммит:
feat(config): external gitea_public_url for clickable doc links.
Тесты (контейнер)
IMG=$(docker inspect orchestrator --format '{{.Config.Image}}'); docker run --rm -v /home/slin/repos/orchestrator:/code -w /code --entrypoint python3 $IMG -m pytest tests/ -q
Новый/расширить существующий test_analyst_comment_asks_approved_with_links: при заданном gitea_public_url ссылки строятся от него (не от gitea_url); при пустом — fallback на gitea_url. Можно через monkeypatch settings.
Baseline: 207 passed + 9 pre-existing failed — не ломать pre-existing.
Проверка (ассистент)
| # | Что | Критерий |
|---|---|---|
| 1 | fallback | пустой gitea_public_url → ссылки от gitea_url (как раньше) |
| 2 | внешний | gitea_public_url задан → ссылки от внешнего домена |
| 3 | git цел | git-операции (clone/push) по-прежнему через gitea_url localhost |
| 4 | тесты | baseline не сломан + тест на public_url passed |
| 5 | git | PR в main, remote содержит коммит |
Отчёт
- НЕ деплоить, НЕ мержить (мерж + установку env на проде делает ассистент).
- В отчёте: точные строки правок, как назвал env-переменную, подтверди что gitea_url (git-операции) НЕ тронут, вывод теста. Один исполнитель, маленькая правка — не раздувай.