Docs: stage access is direct HTTPS (*.calentiq.com); :8787 proxy is DNS fallback only. [skip ci]

This commit is contained in:
2026-07-27 13:25:00 +03:00
parent 01904e9873
commit 7a6b1a84cc
5 changed files with 68 additions and 38 deletions
+45 -23
View File
@@ -1,28 +1,58 @@
# Stage UI в Cursor Browser
Chromium / Cursor IDE Browser часто **не резолвят** `*.eventhub.local` (mDNS), даже если Windows/`nslookup` через OpenWRT уже видят stage.
Stage уже доступен по **публичному DNS с валидным TLS** (Let's Encrypt). Агенты и ручной просмотр **по умолчанию** ходят **напрямую по HTTPS** — без локального `:8787` proxy.
Для агентов и ручного просмотра stage используем **локальный alias + HTTP-прокси**.
Локальный alias-proxy — **только fallback**, если Cursor/Chromium не резолвит hostname stage (не из‑за сертификата).
## URL
Публичные URL стенда также зафиксированы в `EventHubDevOps/docs/STANDS.md` (раздел stage).
## Канон (прямые HTTPS)
| URL | Сервис |
|-----|--------|
| `https://stage.calentiq.com/` | client-ui |
| `https://admin.stage.calentiq.com/` | admin-ui |
| `https://api.stage.calentiq.com` | eventhub API |
| `https://ws.stage.calentiq.com` | WebSocket |
| `https://admin-api.stage.calentiq.com` | admin API |
| `https://calentiq.com` | 301 → `stage.calentiq.com` |
Для агентского Cursor Browser обычно достаточно:
- Client: `https://stage.calentiq.com/login`
- Admin: `https://admin.stage.calentiq.com/`
Client/admin SPA ходят в API **same-origin** через nginx (`/v1/`, `/ws`).
Внутренний QA (`*.stage.eventhub.local`) по-прежнему есть; для браузера агента **предпочтительны** публичные `*.calentiq.com` выше.
## Auth / учётки
- Smoke: `~/.cursor/secrets/eventhub-stage.env` (`SMOKE_USER_*`).
- IFT e2e: только `~/.cursor/secrets/eventhub-ift.env` (не подмешивать stage).
- Не коммитить пароли/токены из smoke env.
## Fallback: локальный alias-proxy
Использовать **только** если прямое открытие `https://stage.calentiq.com/` (или admin) в Cursor Browser не работает из‑за **DNS / резолва hostname** (например Chromium и `*.local`). Не поднимать proxy «на всякий случай» и не из‑за TLS — публичный cert валиден.
| Открывать в браузере | Upstream |
|----------------------|----------|
| `http://ui.stage.eventhub.test:8787` | `https://ui.stage.eventhub.local``195.208.119.190` |
| `http://ui.stage.eventhub.test:8787` | `https://ui.stage.eventhub.local`stage IP |
## Одноразовая настройка hosts
### Hosts (только для fallback)
В `C:\Windows\System32\drivers\etc\hosts` (или WSL `/etc/hosts` не помогает Cursor на Windows):
В `C:\Windows\System32\drivers\etc\hosts` (WSL `/etc/hosts` не помогает Cursor на Windows):
```text
127.0.0.1 ui.stage.eventhub.test
```
## Прокси
### Прокси
Скрипт в репозитории: [`scripts/stage-browser-alias-proxy.mjs`](scripts/stage-browser-alias-proxy.mjs)
Скрипт: [`scripts/stage-browser-alias-proxy.mjs`](scripts/stage-browser-alias-proxy.mjs)
Копия для быстрого старта агента: `~/.cursor/eventhub/stage-browser-alias-proxy.mjs` (если есть — можно любой из двух).
Копия: `~/.cursor/eventhub/stage-browser-alias-proxy.mjs` (если есть — можно любой).
**Важно:** процесс должен слушать на **Windows** `127.0.0.1:8787` (Node из Windows). Прокси только в WSL Cursor с Windows часто не достучится.
@@ -32,18 +62,15 @@ Start-Process -FilePath "C:\Program Files\nodejs\node.exe" `
-WindowStyle Hidden
```
Или из Spec (если скрипт уже скопирован в `~/.cursor/eventhub/`):
Или из корня EventHubSpec:
```powershell
# из корня EventHubSpec
Start-Process -FilePath "C:\Program Files\nodejs\node.exe" `
-ArgumentList (Resolve-Path ".\scripts\stage-browser-alias-proxy.mjs") `
-WindowStyle Hidden
```
Проверка: открыть `http://ui.stage.eventhub.test:8787/login`.
Переменные окружения (опционально):
Проверка fallback: `http://ui.stage.eventhub.test:8787/login`.
| Env | Default |
|-----|---------|
@@ -53,16 +80,11 @@ Start-Process -FilePath "C:\Program Files\nodejs\node.exe" `
| `STAGE_UI_HOST` | `ui.stage.eventhub.local` |
| `ALIAS_HOST` | `ui.stage.eventhub.test` |
## Auth
Same-origin через прокси: `/v1/login`, `/v1/register`, logout — как на настоящем stage.
- Smoke: `~/.cursor/secrets/eventhub-stage.env` (`SMOKE_USER_*`).
- IFT e2e: только `~/.cursor/secrets/eventhub-ift.env` (не подмешивать stage).
- Прокси **не** подставляет пользователя: только Host/SNI rewrite на Traefik.
Прокси **не** подставляет пользователя: только Host/SNI rewrite на Traefik.
## Что не делать
- Не ждать, что Cursor Browser сам пойдёт на `https://ui.stage.eventhub.local`.
- Не поднимать прокси только в WSL, если агентский браузер на Windows.
- Не считать `:8787` / `ui.stage.eventhub.test` каноном — канон это `https://stage.calentiq.com` (и admin).
- Не поднимать proxy, пока не подтверждён сбой резолва прямого HTTPS.
- Не поднимать proxy только в WSL, если агентский браузер на Windows.
- Не коммитить пароли/токены из smoke env.