Initial commit: digital reception monorepo (M1-M11 + demo extensions)
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
# 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`.
|
||||
Reference in New Issue
Block a user