feat: migrate to VitePress from monorepo docs, add test-contour section

This commit is contained in:
sova-bootstrap
2026-05-28 12:29:31 +03:00
parent e90dfe1bd4
commit e3e438df68
76 changed files with 11998 additions and 60 deletions
+211
View File
@@ -0,0 +1,211 @@
# Проверка локального контура
Эта страница описывает, как быстро убедиться, что локальные `backend`, `cabinet`, БД и тестовые данные работают корректно.
## Подготовка
Запустите локальный контур и соберите ассеты cabinet:
```bash
make local-up
make local-assets
```
Если нужно заново пересоздать тестовые данные:
```bash
make local-seed
```
## Автоматическая smoke-проверка
Основная команда проверки:
```bash
make local-smoke
```
Она проверяет:
- Swagger backend: `http://localhost:8081/docs`;
- Swagger cabinet: `http://localhost:8082/api/swagger`;
- backend авторизацию через JWT;
- backend справочники филиалов, отделений, врачей и прайса;
- cabinet страницу логина;
- cabinet авторизацию тестовым пользователем;
- cabinet главную страницу после логина;
- cabinet API баннера, прайса и врачей.
Успешный результат выглядит так:
```text
== Backend ==
OK backend swagger UI (200)
OK backend swagger JSON (200)
OK backend login
OK backend filial list
OK backend department list
OK backend specialist list
OK backend price list
== Cabinet ==
OK cabinet login page (200)
OK cabinet swagger UI (200)
OK cabinet swagger JSON (200)
OK cabinet login response
OK cabinet authenticated home (200)
OK cabinet banner API
OK cabinet price departments API
OK cabinet doctors API
Local smoke test passed.
```
## Тестовые пользователи
Backend API:
- login: `local.backend@example.test`
- password: `local-password`
- uid: `100001`
- region: `91`
- роли: `ROLE_USER`, `ROLE_ADMIN`
Cabinet:
- login: `local.cabinet@example.test`
- password: `local-password`
- uid: `200001`
- роли: `ROLE_USER`, `ROLE_ADMIN`
## Ручная проверка в браузере
1. Откройте `http://localhost:8081/docs`.
Должна открыться Swagger UI backend.
2. Откройте `http://localhost:8082/api/swagger`.
Должна открыться Swagger UI cabinet.
3. Откройте `http://localhost:8082/login`.
Должна открыться страница входа без ошибки `500`.
4. Войдите в cabinet:
- email: `local.cabinet@example.test`;
- password: `local-password`.
5. После входа должна открыться главная cabinet: `http://localhost:8082/`.
6. Откройте публичные API cabinet:
- `http://localhost:8082/api/banner/91`;
- `http://localhost:8082/api/pricelist/departments`;
- `http://localhost:8082/api/doctors/91`.
## Ручная проверка backend API
Получить JWT:
```bash
TOKEN=$(curl -sS \
-X POST http://localhost:8081/user/login \
-H 'Content-Type: application/json' \
--data '{"username":"local.backend@example.test","password":"local-password"}' \
| python3 -c 'import sys,json; print(json.load(sys.stdin)["token"])')
```
Проверить текущего пользователя:
```bash
curl -sS http://localhost:8081/user/ \
-H "Authorization: Bearer $TOKEN" \
| python3 -m json.tool
```
Ожидаемый смысл ответа: `successful: true`, `uid: 100001`, `regionId: 91`.
Проверить филиалы:
```bash
curl -sS 'http://localhost:8081/filial/list?regionId=91' \
| python3 -m json.tool
```
В ответе должен быть филиал `Сова Local`.
Проверить отделения:
```bash
curl -sS http://localhost:8081/department/list \
| python3 -m json.tool
```
В ответе должно быть отделение `Терапия`.
Проверить врачей:
```bash
curl -sS 'http://localhost:8081/specialist/list?regionId=91' \
| python3 -m json.tool
```
В ответе должен быть врач `Иванов Иван Иванович` с alias `ivanov-ivan`.
Проверить прайс:
```bash
curl -sS http://localhost:8081/pricelist/list \
| python3 -m json.tool
```
В ответе должна быть услуга `Прием терапевта` с локальной ценой.
## Ручная проверка cabinet API
Проверить баннер региона:
```bash
curl -sS http://localhost:8082/api/banner/91 \
| python3 -m json.tool
```
Ожидается JSON с `active: true`.
Проверить группы прайса:
```bash
curl -sS http://localhost:8082/api/pricelist/departments \
| python3 -m json.tool
```
В ответе должна быть группа `Консультации`.
Проверить список врачей:
```bash
curl -sS http://localhost:8082/api/doctors/91 \
| python3 -m json.tool
```
В ответе должен быть врач `Иванов Иван Иванович`, отзывы и прайс.
## Что делать при ошибках
Если `cabinet /login` отдает `500` с ошибкой про `public/build/entrypoints.json`, соберите ассеты:
```bash
make local-assets
```
Если API отдает пустые данные или ошибки типов, пересоздайте seed:
```bash
make local-seed
make local-smoke
```
Если контейнеры были пересозданы с нуля:
```bash
make local-up
make local-assets
make local-smoke
```