Initial commit: digital reception monorepo (M1-M11 + demo extensions)
This commit is contained in:
@@ -0,0 +1,78 @@
|
||||
# Digital Reception — Фаза 1
|
||||
|
||||
Видеоаналитика рецепции клиники: распознавание лиц, ручной enrollment, согласия, история визитов. Компонент Платформы цифровых сервисов клиники (ПЦС).
|
||||
|
||||
ТЗ: [`TZ (1).md`](./TZ%20(1).md).
|
||||
План разработки: `~/.claude/plans/plan-mode-reflective-wand.md`.
|
||||
|
||||
## Стек
|
||||
|
||||
- **Монорепо:** pnpm workspaces + Turborepo.
|
||||
- **БД:** PostgreSQL 16 + pgvector, Prisma 5.
|
||||
- **Backend:** NestJS 10 (`apps/api`, `apps/polimed-mock`), Python + FastAPI (`apps/face-service`, `apps/video-ingest`).
|
||||
- **Frontend:** Next.js 15 (App Router) + shadcn/ui + Recharts (`apps/web-admin`).
|
||||
- **Очереди:** BullMQ (Redis).
|
||||
- **Хранилище кадров:** MinIO (S3-совместимое).
|
||||
- **Распознавание лиц:** InsightFace `buffalo_l`, 512-d cosine.
|
||||
|
||||
## Структура
|
||||
|
||||
```
|
||||
apps/
|
||||
api/ # NestJS — auth, RBAC, треки, согласия, визиты, аудит
|
||||
face-service/ # Python FastAPI — InsightFace + pgvector + re-id
|
||||
polimed-mock/ # NestJS — мок МИС Полимед (вне скоупа Ф1)
|
||||
video-ingest/ # Python — минимальный mp4-консьюмер (скаффолд)
|
||||
fixtures-runner/ # Node — e2e сценарии треков и событий
|
||||
web-admin/ # Next.js 15 + shadcn/ui — админка
|
||||
packages/
|
||||
db/ # Prisma schema, миграции, сид
|
||||
ui/ # shadcn/ui компоненты (shared)
|
||||
tsconfig/ # base / nest / next tsconfig пресеты
|
||||
eslint-config/ # общий ESLint
|
||||
docker/
|
||||
docker-compose.yml # postgres + redis + minio
|
||||
init.sql # CREATE EXTENSION vector
|
||||
```
|
||||
|
||||
## Быстрый старт
|
||||
|
||||
```bash
|
||||
# 1. Инфраструктура
|
||||
cp .env.example .env
|
||||
pnpm docker:up # postgres+redis+minio
|
||||
|
||||
# 2. Зависимости
|
||||
pnpm install
|
||||
|
||||
# 3. БД
|
||||
pnpm db:migrate # создаёт схему
|
||||
pnpm db:seed # 4 юзера, 3 камеры, 3 зоны
|
||||
|
||||
# 4. Сервисы (каждый в своём терминале)
|
||||
pnpm --filter=@reception/api dev
|
||||
pnpm --filter=@reception/polimed-mock dev
|
||||
pnpm --filter=@reception/web-admin dev
|
||||
# face-service:
|
||||
cd apps/face-service && uvicorn main:app --reload --port 8001
|
||||
```
|
||||
|
||||
## Контроль доступа
|
||||
|
||||
Сидер создаёт 4 dev-пользователя (пароли в `.env.example`):
|
||||
|
||||
| Email | Роль | Что видит |
|
||||
|-------------------|---------------|---------------------------------|
|
||||
| `manager@local` | MANAGER | Дашборд, история визитов |
|
||||
| `senior@local` | SENIOR_ADMIN | Enrollment, согласия |
|
||||
| `security@local` | SECURITY | Лента инцидентов (Ф2) |
|
||||
| `admin@local` | SYSADMIN | Аудит, пользователи, камеры |
|
||||
|
||||
## Скоуп Фазы 1
|
||||
|
||||
- ✅ `face-service` + pgvector + cross-camera re-id.
|
||||
- ✅ Web-admin: ручной enrollment, согласия, история визитов, аудит.
|
||||
- ✅ Фиксация бумажных согласий, отзыв → удаление эмбеддингов за 24 ч.
|
||||
- 🚫 **Полимед API** — замокан `apps/polimed-mock`, реальной интеграции нет.
|
||||
- 🚫 **RTSP / GPU / ByteTrack** — работа Фазы 0, в Ф1 только минимальный mp4-скаффолд.
|
||||
- 🚫 **Поведенческие алерты (Max-бот)** — Фаза 2.
|
||||
Reference in New Issue
Block a user