README: хосты с путём, FPG_WS_PORT, нормализация видео, овал и логирование
This commit is contained in:
1 parent
5331730433
commit
eb1c7ae276
1 file changed
+6
-2
@@ -56,8 +56,11 @@ python3 -c "from waitress import serve; from app import app; serve(app, host='12
|
|||||||
| `FPG_OAUTH_URL` | (необязательно) URL OAuth-токена (по умолчанию `https://oauth.sbermed.ai/token`) |
|
| `FPG_OAUTH_URL` | (необязательно) URL OAuth-токена (по умолчанию `https://oauth.sbermed.ai/token`) |
|
||||||
| `FPG_REST_HOST` | (необязательно) REST-хост SDK (по умолчанию `gigadoc-dnr-sdk.sbermed.ai` — персональный стенд) |
|
| `FPG_REST_HOST` | (необязательно) REST-хост SDK (по умолчанию `gigadoc-dnr-sdk.sbermed.ai` — персональный стенд) |
|
||||||
| `FPG_WS_HOST` | (необязательно) WebSocket-хост SDK (по умолчанию `gigadoc-dnr-sdk.sbermed.ai`) |
|
| `FPG_WS_HOST` | (необязательно) WebSocket-хост SDK (по умолчанию `gigadoc-dnr-sdk.sbermed.ai`) |
|
||||||
|
| `FPG_WS_PORT` | (необязательно) WebSocket-порт SDK (по умолчанию `8443`) |
|
||||||
| `FPG_WS_ORIGIN` | (необязательно) Origin для WebSocket (по умолчанию `https://gigadoc-dnr-sdk.sbermed.ai`) |
|
| `FPG_WS_ORIGIN` | (необязательно) Origin для WebSocket (по умолчанию `https://gigadoc-dnr-sdk.sbermed.ai`) |
|
||||||
|
|
||||||
|
**Хосты с путём.** `FPG_REST_HOST` и `FPG_WS_HOST` могут содержать не только домен, но и путь — например `domain.com/v1/giga` (или полностью `https://domain.com/v1/giga`). Путь автоматически подставляется в REST-базу и в WebSocket-URI (`wss://domain.com:8443/v1/giga/api/v2/ws/predict/...`).
|
||||||
|
|
||||||
## Развёртывание на сервере
|
## Развёртывание на сервере
|
||||||
|
|
||||||
### 1. Клонирование и структура
|
### 1. Клонирование и структура
|
||||||
@@ -152,14 +155,15 @@ sudo systemctl restart med.service
|
|||||||
## Как работает анализ
|
## Как работает анализ
|
||||||
|
|
||||||
1. Видео сохраняется в `videos/` (копия записи — доступна для скачивания)
|
1. Видео сохраняется в `videos/` (копия записи — доступна для скачивания)
|
||||||
2. `ffmpeg` извлекает 300 кадров 1280×720 (bt709 + yuv420p — важно для iPhone MOV с P3/HDR)
|
2. `ffmpeg` извлекает до 300 кадров 1280×720 (первые 20 секунд, fps=30) с нормализацией: HDR→bt709 (iPhone P3/HDR), поворот по метаданным, yuv420p
|
||||||
3. OAuth-токен → создание сессии → кадры по WebSocket (`wss://gigadoc-dnr-sdk.sbermed.ai:8443`, subprotocol `bearer.<token>`, Origin `https://gigadoc-dnr-sdk.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
|
4. Интерпретация JSON SDK → summary/metrics/warnings/advice → сохранение в SQLite
|
||||||
|
|
||||||
## Важные нюансы
|
## Важные нюансы
|
||||||
|
|
||||||
- **SDK ФПГ не находит лицо на кадрах 640×480** — нужны кадры 1280×720.
|
- **SDK ФПГ не находит лицо на кадрах 640×480** — нужны кадры 1280×720.
|
||||||
- **Камерное сканирование** (мобильные): canvas 720×720 (квадрат, без обрезки головы), MediaRecorder с битрейтом 1.5 Мбит/с (~1–2 МБ за 310 кадров), автоповтор fetch до 3 попыток при обрыве сети.
|
- **Камерное сканирование** (мобильные): canvas 1080×1080 (квадрат), овал-подсказка для позиционирования лица, запас 10% при захвате (голова не обрезается), MediaRecorder с битрейтом 1.5 Мбит/с (~1–2 МБ за 310 кадров), автоповтор fetch до 3 попыток при обрыве сети.
|
||||||
|
- **Логирование прогресса SDK**: в логах сервера пишется `progress` и `face_ok` при каждом изменении; если финальный результат не пришёл — предупреждение в лог.
|
||||||
- **iOS MediaRecorder** пишет mp4 (webm может не поддерживаться) — расширение выбирается из `blob.type`.
|
- **iOS MediaRecorder** пишет mp4 (webm может не поддерживаться) — расширение выбирается из `blob.type`.
|
||||||
- **Порт 5000** на сервере занят другим сервисом — приложение слушает 18018.
|
- **Порт 5000** на сервере занят другим сервисом — приложение слушает 18018.
|
||||||
- Дисклеймер «не медицинский диагноз» — во всех отчётах и на страницах.
|
- Дисклеймер «не медицинский диагноз» — во всех отчётах и на страницах.
|
||||||
|
|||||||
Reference in new issue
Block a user