Версия цифровой рецепции с резализованным механизмом отслеживания трека пациента по зонам
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.
 
 
 
 
 
Алексей Разорвин b9f88194d9 Initial commit: digital reception monorepo (M1-M11 + demo extensions) 5 days ago
..
scenarios Initial commit: digital reception monorepo (M1-M11 + demo extensions) 5 days ago
src Initial commit: digital reception monorepo (M1-M11 + demo extensions) 5 days ago
README.md Initial commit: digital reception monorepo (M1-M11 + demo extensions) 5 days ago
package.json Initial commit: digital reception monorepo (M1-M11 + demo extensions) 5 days ago
tsconfig.json Initial commit: digital reception monorepo (M1-M11 + demo extensions) 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

После прогона:

  1. pnpm fixtures:run --scenario=new-patient — в БД появился unmatched-трек.
  2. Через web-admin (или curl) — POST /enrollment для этого трека.
  3. pnpm fixtures:run --scenario=returning-patientrunner.visitCreated !== null, в БД есть новый Visit с привязкой к тому же patientId.