Initial commit: digital reception monorepo (M1-M11 + demo extensions)

This commit is contained in:
2026-05-25 12:59:54 +05:00
commit b9f88194d9
182 changed files with 20578 additions and 0 deletions
+60
View File
@@ -0,0 +1,60 @@
# web-admin
Next.js 15 App Router + shadcn/ui (стиль `new-york`, base `neutral`) + Recharts + TanStack Query.
Порт: **3001** (3000 занят `hr_v2_next`).
## Запуск
```bash
pnpm --filter=@reception/web-admin dev
# → http://localhost:3001
```
Логин: dev-юзеры из `packages/db/prisma/seed.ts`:
- `senior@local / senior123` — Старший администратор (видит Enrollment, Пациенты)
- `manager@local / manager123` — Управляющий (Дашборд, Пациенты)
- `admin@local / admin123` — Админ системы (Аудит, Пациенты)
- `security@local / security123` — Безопасность (Инциденты)
## Структура
```
src/
app/
layout.tsx # root layout с ThemeProvider + Toaster
page.tsx # redirect по роли
login/page.tsx # вход
(authed)/
layout.tsx # серверный гард + AppShell
dashboard/page.tsx # Управляющий
enrollment/page.tsx # Старший администратор (M10)
patients/ # M11
incidents/page.tsx # Безопасность (заглушка)
audit/page.tsx # Админ системы (M11)
components/
app-shell.tsx # сайдбар + топбар (фильтр nav по роли)
login-form.tsx # форма входа
theme-provider.tsx # next-themes
ui/ # shadcn компоненты
lib/
auth.ts # серверные actions: login/logout/getCurrentUser
api.ts # серверный fetch с проксированием cookies
utils.ts # cn, formatDateTime, formatDuration
middleware.ts # редирект на /login если нет access_token
```
## Эндпоинты apps/api, используемые в web-admin
| Метод | Путь | Где |
|---|---|---|
| `POST` | `/auth/login` | login form (server action) |
| `POST` | `/auth/logout` | header logout (server action) |
| `GET` | `/auth/me` | `getCurrentUser()` |
| `GET` | `/tracks?status=UNMATCHED` | /enrollment (M10) |
| `GET` | `/polimed/appointments?date=...` | /enrollment (M10) |
| `POST` | `/enrollment` | /enrollment submit (M10) |
| `GET` | `/patients` | /patients (M11) |
| `GET` | `/patients/:id/visits` | /patients/:id (M11) |
| `POST` | `/consents/:patientId/revoke` | /patients revoke (M11) |
| `GET` | `/audit/biometry` | /audit (M11) |