Initial commit: digital reception monorepo (M1-M11 + demo extensions)

This commit is contained in:
2026-05-25 12:59:54 +05:00
commit b9f88194d9
182 changed files with 20578 additions and 0 deletions
+37
View File
@@ -0,0 +1,37 @@
# 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.