Переключение на персональный стенд gigadoc-dnr-sdk.sbermed.ai: хосты через env (FPG_REST_HOST/FPG_WS_HOST/FPG_WS_ORIGIN), client_id по умолчанию client_fpg_front_dnr
This commit is contained in:
1 parent
2293dbb4be
commit
93c9d88897
5 files changed
+31
-23
No files matched your search
@@ -31,7 +31,7 @@ pip install -r requirements.txt
|
||||
sudo apt install -y fonts-dejavu
|
||||
|
||||
# 4. Секреты SDK ФПГ (обязательно!)
|
||||
export FPG_CLIENT_ID=client_fpg_front
|
||||
export FPG_CLIENT_ID=client_fpg_front_dnr
|
||||
export FPG_CLIENT_SECRET=ВАШ_СЕКРЕТ
|
||||
|
||||
# 5. Запуск (dev-режим, порт 5000)
|
||||
@@ -50,9 +50,13 @@ python3 -c "from waitress import serve; from app import app; serve(app, host='12
|
||||
|
||||
| Переменная | Описание |
|
||||
|---|---|
|
||||
| `FPG_CLIENT_ID` | client_id для OAuth SDK ФПГ (по умолчанию `client_fpg_front`) |
|
||||
| `FPG_CLIENT_ID` | client_id для OAuth SDK ФПГ (по умолчанию `client_fpg_front_dnr` — персональный стенд) |
|
||||
| `FPG_CLIENT_SECRET` | client_secret для OAuth SDK ФПГ (**обязательна**, без неё авторизация не работает) |
|
||||
| `CORS_ORIGINS` | (необязательно) список разрешённых Origin для CORS через запятую, например `https://site1.ru,https://site2.ru`. По умолчанию `*` |
|
||||
| `FPG_OAUTH_URL` | (необязательно) URL OAuth-токена (по умолчанию `https://oauth.sbermed.ai/token`) |
|
||||
| `FPG_REST_HOST` | (необязательно) REST-хост SDK (по умолчанию `gigadoc-dnr-sdk.sbermed.ai` — персональный стенд) |
|
||||
| `FPG_WS_HOST` | (необязательно) WebSocket-хост SDK (по умолчанию `gigadoc-dnr-sdk.sbermed.ai`) |
|
||||
| `FPG_WS_ORIGIN` | (необязательно) Origin для WebSocket (по умолчанию `https://gigadoc-dnr-sdk.sbermed.ai`) |
|
||||
|
||||
## Развёртывание на сервере
|
||||
|
||||
@@ -79,7 +83,7 @@ Type=simple
|
||||
User=apuc
|
||||
WorkingDirectory=/opt/med
|
||||
Environment=PYTHONUNBUFFERED=1
|
||||
Environment=FPG_CLIENT_ID=client_fpg_front
|
||||
Environment=FPG_CLIENT_ID=client_fpg_front_dnr
|
||||
Environment=FPG_CLIENT_SECRET=ВАШ_СЕКРЕТ
|
||||
ExecStart=/usr/bin/python3 -c "from waitress import serve; from app import app; serve(app, host='127.0.0.1', port=18018, threads=8)"
|
||||
Restart=always
|
||||
@@ -149,7 +153,7 @@ sudo systemctl restart med.service
|
||||
|
||||
1. Видео сохраняется в `videos/` (копия записи — доступна для скачивания)
|
||||
2. `ffmpeg` извлекает 300 кадров 1280×720 (bt709 + yuv420p — важно для iPhone MOV с P3/HDR)
|
||||
3. OAuth-токен → создание сессии → кадры по WebSocket (`wss://gigadoc-sdk.sbermed.ai:8443`, subprotocol `bearer.<token>`, Origin `https://gigadoc.sbermed.ai`)
|
||||
3. OAuth-токен → создание сессии → кадры по WebSocket (`wss://gigadoc-dnr-sdk.sbermed.ai:8443`, subprotocol `bearer.<token>`, Origin `https://gigadoc-dnr-sdk.sbermed.ai`)
|
||||
4. Интерпретация JSON SDK → summary/metrics/warnings/advice → сохранение в SQLite
|
||||
|
||||
## Важные нюансы
|
||||
|
||||
@@ -33,16 +33,18 @@ import export
|
||||
# ─── Конфигурация ─────────────────────────────────────────────
|
||||
# Секреты читаются из переменных окружения (не хранятся в репозитории).
|
||||
# На сервере задаются в /etc/systemd/system/med.service (Environment=).
|
||||
OAUTH_URL = "https://oauth.sbermed.ai/token"
|
||||
CLIENT_ID = os.environ.get("FPG_CLIENT_ID", "client_fpg_front")
|
||||
# Хосты стенда можно переопределить через env (FPG_REST_HOST и т.д.).
|
||||
OAUTH_URL = os.environ.get("FPG_OAUTH_URL", "https://oauth.sbermed.ai/token")
|
||||
CLIENT_ID = os.environ.get("FPG_CLIENT_ID", "client_fpg_front_dnr")
|
||||
CLIENT_SECRET = os.environ.get("FPG_CLIENT_SECRET", "")
|
||||
|
||||
REST_HOST = "gigadoc-sdk.sbermed.ai"
|
||||
REST_HOST = os.environ.get("FPG_REST_HOST", "gigadoc-dnr-sdk.sbermed.ai")
|
||||
REST_BASE = f"https://{REST_HOST}"
|
||||
|
||||
WS_HOST = "gigadoc-sdk.sbermed.ai"
|
||||
WS_HOST = os.environ.get("FPG_WS_HOST", "gigadoc-dnr-sdk.sbermed.ai")
|
||||
WS_PORT = 8443
|
||||
WS_PATH_TEMPLATE = "/api/v2/ws/predict/{uid}/image"
|
||||
WS_ORIGIN = os.environ.get("FPG_WS_ORIGIN", "https://gigadoc-dnr-sdk.sbermed.ai")
|
||||
|
||||
DEVICE_ID = "web_prod"
|
||||
FORM_FACTOR = "web_prod"
|
||||
@@ -159,7 +161,7 @@ async def ws_stream(token: str, uid: str, frame_files: list, fps: float = FPS):
|
||||
uri,
|
||||
open_timeout=10,
|
||||
subprotocols=[f"bearer.{token}"],
|
||||
origin="https://gigadoc.sbermed.ai",
|
||||
origin=WS_ORIGIN,
|
||||
extra_headers={
|
||||
"Cache-Control": "no-cache",
|
||||
"Pragma": "no-cache",
|
||||
|
||||
+7
-6
@@ -27,17 +27,18 @@ from pathlib import Path
|
||||
import requests
|
||||
|
||||
# ─── Конфигурация ─────────────────────────────────────────────
|
||||
OAUTH_URL = "https://oauth.sbermed.ai/token"
|
||||
CLIENT_ID = "client_fpg_front"
|
||||
OAUTH_URL = os.environ.get("FPG_OAUTH_URL", "https://oauth.sbermed.ai/token")
|
||||
CLIENT_ID = os.environ.get("FPG_CLIENT_ID", "client_fpg_front_dnr")
|
||||
CLIENT_SECRET = os.environ.get("FPG_CLIENT_SECRET", "")
|
||||
|
||||
REST_HOST = "gigadoc-sdk.sbermed.ai"
|
||||
REST_HOST = os.environ.get("FPG_REST_HOST", "gigadoc-dnr-sdk.sbermed.ai")
|
||||
REST_BASE = f"https://{REST_HOST}"
|
||||
|
||||
# WebSocket (рабочий хост подтверждён: gigadoc-sdk.sbermed.ai:8443)
|
||||
WS_HOST = "gigadoc-sdk.sbermed.ai"
|
||||
# WebSocket (рабочий хост подтверждён: gigadoc-dnr-sdk.sbermed.ai:8443)
|
||||
WS_HOST = os.environ.get("FPG_WS_HOST", "gigadoc-dnr-sdk.sbermed.ai")
|
||||
WS_PORT = 8443
|
||||
WS_PATH_TEMPLATE = "/api/v2/ws/predict/{uid}/image"
|
||||
WS_ORIGIN = os.environ.get("FPG_WS_ORIGIN", "https://gigadoc-dnr-sdk.sbermed.ai")
|
||||
|
||||
DEVICE_ID = "web_prod"
|
||||
FORM_FACTOR = "web_prod"
|
||||
@@ -263,7 +264,7 @@ async def ws_scan(token: str, uid: str, ws_host: str, ws_port: int, image_dir: s
|
||||
uri,
|
||||
open_timeout=10,
|
||||
subprotocols=[f"bearer.{token}"],
|
||||
origin="https://gigadoc.sbermed.ai",
|
||||
origin=WS_ORIGIN,
|
||||
extra_headers={
|
||||
"Cache-Control": "no-cache",
|
||||
"Pragma": "no-cache",
|
||||
|
||||
+6
-5
@@ -19,16 +19,17 @@ import requests
|
||||
import websockets
|
||||
|
||||
# ─── Конфигурация ─────────────────────────────────────────────
|
||||
OAUTH_URL = "https://oauth.sbermed.ai/token"
|
||||
CLIENT_ID = "client_fpg_front"
|
||||
OAUTH_URL = os.environ.get("FPG_OAUTH_URL", "https://oauth.sbermed.ai/token")
|
||||
CLIENT_ID = os.environ.get("FPG_CLIENT_ID", "client_fpg_front_dnr")
|
||||
CLIENT_SECRET = os.environ.get("FPG_CLIENT_SECRET", "")
|
||||
|
||||
REST_HOST = "gigadoc-sdk.sbermed.ai"
|
||||
REST_HOST = os.environ.get("FPG_REST_HOST", "gigadoc-dnr-sdk.sbermed.ai")
|
||||
REST_BASE = f"https://{REST_HOST}"
|
||||
|
||||
WS_HOST = "gigadoc-sdk.sbermed.ai"
|
||||
WS_HOST = os.environ.get("FPG_WS_HOST", "gigadoc-dnr-sdk.sbermed.ai")
|
||||
WS_PORT = 8443
|
||||
WS_PATH_TEMPLATE = "/api/v2/ws/predict/{uid}/image"
|
||||
WS_ORIGIN = os.environ.get("FPG_WS_ORIGIN", "https://gigadoc-dnr-sdk.sbermed.ai")
|
||||
|
||||
DEVICE_ID = "web_prod"
|
||||
FORM_FACTOR = "web_prod"
|
||||
@@ -155,7 +156,7 @@ async def ws_stream(token: str, uid: str, image_path: str, frames: int, fps: flo
|
||||
uri,
|
||||
open_timeout=10,
|
||||
subprotocols=[f"bearer.{token}"],
|
||||
origin="https://gigadoc.sbermed.ai",
|
||||
origin=WS_ORIGIN,
|
||||
extra_headers={
|
||||
"Cache-Control": "no-cache",
|
||||
"Pragma": "no-cache",
|
||||
|
||||
+3
-3
@@ -66,7 +66,7 @@ def parse_args():
|
||||
parser.add_argument(
|
||||
"--sdk-host",
|
||||
required=True,
|
||||
help="SDK hostname, например gigadoc-sdk.sbermed.ai",
|
||||
help="SDK hostname, например gigadoc-dnr-sdk.sbermed.ai",
|
||||
)
|
||||
|
||||
parser.add_argument(
|
||||
@@ -94,10 +94,10 @@ def parse_args():
|
||||
|
||||
parser.add_argument(
|
||||
"--origin",
|
||||
default="https://gigadoc.sbermed.ai",
|
||||
default="https://gigadoc-dnr-sdk.sbermed.ai",
|
||||
help=(
|
||||
"Origin для WebSocket "
|
||||
"(default: https://gigadoc.sbermed.ai)"
|
||||
"(default: https://gigadoc-dnr-sdk.sbermed.ai)"
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
Reference in new issue
Block a user