Files
digital_reception_ra/apps/fixtures-runner/README.md
T

41 lines
2.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# fixtures-runner
E2E-сценарии для Фазы 1. Генерирует синтетические треки с детерминированными эмбеддингами (через persona seed) и шлёт их через `apps/api /ingest/*` + `face-service /track-embeddings/raw`. Не требует реальных видео.
## Запуск
```bash
# Список сценариев
pnpm fixtures:run --list
# Запуск
pnpm fixtures:run --scenario=new-patient
pnpm fixtures:run --scenario=returning-patient
pnpm fixtures:run --scenario=left-without-service
# Realtime — с задержками между событиями (как «живой» поток)
pnpm fixtures:run --scenario=new-patient --mode=realtime
```
## Сценарии
| Имя | Описание |
|---|---|
| `new-patient` | A → B → C. Создаёт unmatched-трек для ручного enrollment в web-admin. |
| `returning-patient` | Тот же `personaSeed=1001` как у new-patient. После enrollment персона должна быть узнана автоматически → создаётся Visit. **Это критерий завершения Ф1.** |
| `left-without-service` | A → B → уход. Триггерит событие `left_without_service`. |
## Как это работает
- `personaSeed` → детерминированный 512-d L2-нормализованный вектор. Тот же seed = тот же вектор (с малым jitter между эмбеддингами одного трека). После enrollment в `new-patient` вектор привязан к `patient_id`. В `returning-patient` тот же seed → match.
- Эмбеддинги пишутся через face-service `/track-embeddings/raw` (без InsightFace-детекции, эмбеддинг сразу передаётся).
- События — через `apps/api /ingest/track-events`.
- При `triggerRecognition=true` после прогона runner вызывает `/recognize/embedding` и при match создаёт Visit напрямую через Prisma.
## Критерий приёмки M11
После прогона:
1. `pnpm fixtures:run --scenario=new-patient` — в БД появился unmatched-трек.
2. Через web-admin (или curl) — `POST /enrollment` для этого трека.
3. `pnpm fixtures:run --scenario=returning-patient``runner.visitCreated !== null`, в БД есть новый Visit с привязкой к тому же `patientId`.