Синхронизация с server/: нормализация видео, овал-подсказка, хосты с путём, DNR-стенд
- app.py: probe_video(), HDR→bt709, fps=30, -t 20, логирование progress/face_ok, split_host_path() для хостов с путём (domain.com/v1/giga), FPG_WS_PORT - templates/index.html: овал-подсказка, canvas 1080×1080, запас 10% - templates/result.html: стилевые правки (цвета) - gigadoc_ws.py: поддержка пути в --sdk-host - test_fpg.py: переведён на DNR-стенд (bearer subprotocol, Origin) - README: хосты с путём, FPG_WS_PORT, нормализация - .gitignore: server/, wordpress/, wordpress-plugin/ (отдельные репозитории)
This commit is contained in:
1 parent
421183b7e3
commit
7375618b1d
9 files changed
+423
-108
No files matched your search
+34
-12
@@ -27,17 +27,35 @@ from pathlib import Path
|
||||
import requests
|
||||
|
||||
# ─── Конфигурация ─────────────────────────────────────────────
|
||||
OAUTH_URL = "https://oauth.sbermed.ai/token"
|
||||
CLIENT_ID = "client_fpg_front"
|
||||
# ВАЖНО: хост может содержать не только домен, но и путь
|
||||
# (например "domain.com/v1/giga") — это учитывается при сборке URL.
|
||||
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_BASE = f"https://{REST_HOST}"
|
||||
|
||||
# WebSocket (рабочий хост подтверждён: gigadoc-sdk.sbermed.ai:8443)
|
||||
WS_HOST = "gigadoc-sdk.sbermed.ai"
|
||||
WS_PORT = 8443
|
||||
WS_PATH_TEMPLATE = "/api/v2/ws/predict/{uid}/image"
|
||||
def split_host_path(host: str) -> tuple:
|
||||
"""Разделить 'host/path' на (scheme, hostname, base_path)."""
|
||||
host = host.strip().rstrip("/")
|
||||
scheme = ""
|
||||
if "://" in host:
|
||||
scheme, host = host.split("://", 1)
|
||||
parts = host.split("/", 1)
|
||||
hostname = parts[0]
|
||||
base_path = "/" + parts[1] if len(parts) > 1 else ""
|
||||
return scheme, hostname, base_path
|
||||
|
||||
|
||||
REST_HOST = os.environ.get("FPG_REST_HOST", "gigadoc-dnr-sdk.sbermed.ai")
|
||||
_rest_scheme, _rest_hostname, _rest_base_path = split_host_path(REST_HOST)
|
||||
REST_BASE = f"{_rest_scheme or 'https'}://{_rest_hostname}{_rest_base_path}"
|
||||
|
||||
# WebSocket (рабочий хост подтверждён: gigadoc-dnr-sdk.sbermed.ai:8443)
|
||||
WS_HOST = os.environ.get("FPG_WS_HOST", "gigadoc-dnr-sdk.sbermed.ai")
|
||||
WS_PORT = int(os.environ.get("FPG_WS_PORT", "8443"))
|
||||
_ws_scheme, WS_HOSTNAME, WS_BASE_PATH = split_host_path(WS_HOST)
|
||||
WS_PATH_TEMPLATE = f"{WS_BASE_PATH}/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"
|
||||
@@ -238,10 +256,14 @@ async def ws_scan(token: str, uid: str, ws_host: str, ws_port: int, image_dir: s
|
||||
logger.debug(f" {img} ({size} bytes)")
|
||||
|
||||
# ── Пробуем несколько вариантов URI ──
|
||||
# ws_host может быть с путём (domain.com/v1/giga) — разделяем.
|
||||
_scheme, _h, _p = split_host_path(ws_host)
|
||||
_ws_hostname = _h
|
||||
_ws_path = _p or WS_BASE_PATH
|
||||
uris = [
|
||||
f"wss://{ws_host}:{ws_port}{WS_PATH_TEMPLATE.format(uid=uid)}",
|
||||
f"wss://{REST_HOST}:{ws_port}{WS_PATH_TEMPLATE.format(uid=uid)}",
|
||||
f"wss://{REST_HOST}:443{WS_PATH_TEMPLATE.format(uid=uid)}",
|
||||
f"wss://{_ws_hostname}:{ws_port}{_ws_path}/api/v2/ws/predict/{uid}/image",
|
||||
f"wss://{WS_HOSTNAME}:{ws_port}{WS_PATH_TEMPLATE.format(uid=uid)}",
|
||||
f"wss://{WS_HOSTNAME}:443{WS_PATH_TEMPLATE.format(uid=uid)}",
|
||||
]
|
||||
|
||||
last_error = None
|
||||
@@ -263,7 +285,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",
|
||||
|
||||
Reference in new issue
Block a user