Files
wiki/tasks/orchestrator/DEV_TASK_GITEA_PUBLIC_URL.md
2026-06-03 23:00:01 +03:00

4.4 KiB
Raw Permalink Blame History

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-операций), добавить ОТДЕЛЬНУЮ настройку

  1. src/config.py (рядом с gitea_url, ~стр.24): добавить поле
    gitea_public_url: str = ""  # external URL for clickable links in comments; falls back to gitea_url
    
    Pydantic-settings подхватит env ORCH_GITEA_PUBLIC_URL (тот же префикс ORCH_, что у gitea_url/gitea_token — проверь env_prefix в config.py).
  2. src/stage_engine.py, _build_analyst_ready_comment (~стр.40): заменить
    base = settings.gitea_url.rstrip("/")
    
    на
    base = (getattr(settings, "gitea_public_url", "") or settings.gitea_url).rstrip("/")
    
    Только эту строку (источник base для href). НЕ трогать остальное.
  3. НЕ хардкодь домен в коде. Дефолт поля = "" (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-операции) НЕ тронут, вывод теста. Один исполнитель, маленькая правка — не раздувай.