[AZ-178] Implement streaming video detection endpoint

- Added `/detect/video` endpoint for true streaming video detection, allowing inference to start as upload bytes arrive.
- Introduced `run_detect_video_stream` method in the inference module to handle video processing from a file-like object.
- Updated media hashing to include a new function for computing hashes directly from files with minimal I/O.
- Enhanced documentation to reflect changes in video processing and API behavior.

Made-with: Cursor
This commit is contained in:
Oleksandr Bezdieniezhnykh
2026-04-01 03:11:43 +03:00
parent e65d8da6a3
commit be4cab4fcb
42 changed files with 2983 additions and 29 deletions
@@ -2,7 +2,13 @@
Reference for generating `scripts/run-tests.sh` and `scripts/run-performance-tests.sh`.
## `scripts/run-tests.sh`
## When to generate a local `run-tests.sh`
A local shell script is needed **only** for hardware-dependent projects that require real hardware (GPU, CoreML, TPU, sensors, etc.) to exercise the actual code paths. If the Hardware-Dependency Assessment (Phase 4 prerequisite) determined **local** or **both** execution, generate this script.
For all other projects, **use Docker** (`docker-compose.test.yml` / `Dockerfile.test`). Docker is the default — it provides reproducibility, isolation, and CI parity. Do not generate a local `run-tests.sh` when Docker is sufficient.
## `scripts/run-tests.sh` (local / hardware-dependent only)
```bash
#!/usr/bin/env bash
@@ -20,23 +26,33 @@ for arg in "$@"; do
done
cleanup() {
# tear down docker-compose if it was started
# tear down services started by this script
}
trap cleanup EXIT
mkdir -p "$RESULTS_DIR"
# --- Install Dependencies ---
# MANDATORY: install all project + test dependencies before building or running.
# A fresh clone or CI runner may have nothing installed.
# Python: pip install -q -r requirements.txt -r e2e/requirements.txt
# .NET: dotnet restore
# Rust: cargo fetch
# Node: npm ci
# --- Build (if needed) ---
# [e.g. Cython: python setup.py build_ext --inplace]
# --- Unit Tests ---
# [detect runner: pytest / dotnet test / cargo test / npm test]
# [run and capture exit code]
# [save results to $RESULTS_DIR/unit-results.*]
# --- Blackbox Tests (skip if --unit-only) ---
# if ! $UNIT_ONLY; then
# [docker compose -f <compose-file> up -d]
# [start mock services]
# [start system under test]
# [wait for health checks]
# [run blackbox test suite]
# [save results to $RESULTS_DIR/blackbox-results.*]
# fi
# --- Summary ---
@@ -61,6 +77,9 @@ trap cleanup EXIT
mkdir -p "$RESULTS_DIR"
# --- Install Dependencies ---
# [same as above — always install first]
# --- Start System Under Test ---
# [docker compose up -d or start local server]
# [wait for health checks]
@@ -80,6 +99,8 @@ mkdir -p "$RESULTS_DIR"
## Key Requirements
- **Docker is the default**: only generate a local `run-tests.sh` for hardware-dependent projects. Otherwise use `docker-compose.test.yml`.
- **Always install dependencies first**: the script must install all project and test dependencies before building or running tests. A fresh clone or CI runner may have nothing installed. Missing a single dependency causes collection errors that abort the entire test run.
- Both scripts must be idempotent (safe to run multiple times)
- Both scripts must work in CI (no interactive prompts, no GUI)
- Use `trap cleanup EXIT` to ensure teardown even on failure