# video-ingest (минимальный скаффолд) **Это не боевой video-ingest из ТЗ §6.** Это smoke-скаффолд Фазы 1, чтобы проверить цепочку «видео → face-service → apps/api → БД» без RTSP/GPU/ByteTrack. Полноценный сервис делается в Фазе 0. Что делает: - Открывает локальный mp4 через OpenCV. - Каждый N-й кадр (`SAMPLE_EVERY`, default 10) отправляет в `face-service /embed`. - Простейший single-camera трекинг по cos-дистанции (`< TRACK_DISTANCE_THRESH=0.3` в окне `TRACK_WINDOW_SEC=2`). - На новый трек: `POST /ingest/tracks` + событие `arrived`. - Каждый эмбеддинг — `POST /face-service/track-embeddings`. ## Запуск ```bash cd apps/video-ingest python -m venv .venv && source .venv/bin/activate pip install -r requirements.txt # Убедись, что face-service, apps/api, postgres подняты. python -m video_ingest --source samples/walk-by.mp4 --camera-name cam-entrance --zone A ``` ## Переменные окружения - `FACE_SERVICE_URL` (default `http://localhost:8001`) - `API_BASE_URL` (default `http://localhost:4000`) - `SAMPLE_EVERY` (default `10`) - `TRACK_DISTANCE_THRESH` (default `0.3`) - `TRACK_WINDOW_SEC` (default `2.0`) ## Критерий приёмки После прогона: - В `tracks` появилось хотя бы 1 запись. - В `face_embeddings` сохранены эмбеддинги. - В `track_events` есть `arrived`. - В логах `apps/api` видны POST /ingest/tracks и /ingest/track-events.