# Stage UI в Cursor Browser Stage уже доступен по **публичному DNS с валидным TLS** (Let's Encrypt). Агенты и ручной просмотр **по умолчанию** ходят **напрямую по HTTPS** — без локального `:8787` proxy. Локальный alias-proxy — **только fallback**, если Cursor/Chromium не резолвит hostname stage (не из‑за сертификата). Публичные 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` → stage IP | ### Hosts (только для fallback) В `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) Копия: `~/.cursor/eventhub/stage-browser-alias-proxy.mjs` (если есть — можно любой). **Важно:** процесс должен слушать на **Windows** `127.0.0.1:8787` (Node из Windows). Прокси только в WSL Cursor с Windows часто не достучится. ```powershell Start-Process -FilePath "C:\Program Files\nodejs\node.exe" ` -ArgumentList "$env:USERPROFILE\.cursor\eventhub\stage-browser-alias-proxy.mjs" ` -WindowStyle Hidden ``` Или из корня EventHubSpec: ```powershell Start-Process -FilePath "C:\Program Files\nodejs\node.exe" ` -ArgumentList (Resolve-Path ".\scripts\stage-browser-alias-proxy.mjs") ` -WindowStyle Hidden ``` Проверка fallback: `http://ui.stage.eventhub.test:8787/login`. | Env | Default | |-----|---------| | `ALIAS_LISTEN_HOST` | `127.0.0.1` | | `ALIAS_LISTEN_PORT` | `8787` | | `STAGE_IP` | `195.208.119.190` | | `STAGE_UI_HOST` | `ui.stage.eventhub.local` | | `ALIAS_HOST` | `ui.stage.eventhub.test` | Прокси **не** подставляет пользователя: только Host/SNI rewrite на Traefik. ## Что не делать - Не считать `:8787` / `ui.stage.eventhub.test` каноном — канон это `https://stage.calentiq.com` (и admin). - Не поднимать proxy, пока не подтверждён сбой резолва прямого HTTPS. - Не поднимать proxy только в WSL, если агентский браузер на Windows. - Не коммитить пароли/токены из smoke env.