You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
5 days ago | |
|---|---|---|
| .. | ||
| scenarios | 5 days ago | |
| src | 5 days ago | |
| README.md | 5 days ago | |
| package.json | 5 days ago | |
| tsconfig.json | 5 days ago | |
README.md
fixtures-runner
E2E-сценарии для Фазы 1. Генерирует синтетические треки с детерминированными эмбеддингами (через persona seed) и шлёт их через apps/api /ingest/* + face-service /track-embeddings/raw. Не требует реальных видео.
Запуск
# Список сценариев
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
После прогона:
pnpm fixtures:run --scenario=new-patient— в БД появился unmatched-трек.- Через web-admin (или curl) —
POST /enrollmentдля этого трека. pnpm fixtures:run --scenario=returning-patient—runner.visitCreated !== null, в БД есть новый Visit с привязкой к тому жеpatientId.