auto-sync: 2026-06-03 23:00:01
This commit is contained in:
52
tasks/orchestrator/DEV_TASK_GITEA_PUBLIC_URL.md
Normal file
52
tasks/orchestrator/DEV_TASK_GITEA_PUBLIC_URL.md
Normal file
@@ -0,0 +1,52 @@
|
||||
# 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): добавить поле
|
||||
```python
|
||||
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): заменить
|
||||
```python
|
||||
base = settings.gitea_url.rstrip("/")
|
||||
```
|
||||
на
|
||||
```python
|
||||
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-операции) НЕ тронут, вывод теста. Один исполнитель, маленькая правка — не раздувай.
|
||||
Reference in New Issue
Block a user