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
+93
View File
@@ -0,0 +1,93 @@
# Cabinet
`apps/cabinet` - старый личный кабинет и административный монолит на Symfony 5.4.
## Стек
- Symfony 5.4.
- PHP в общем compose обслуживается контейнером `php82`.
- Twig-шаблоны.
- Webpack Encore для ассетов.
- Doctrine ORM 2 и migrations.
- PostgreSQL и отдельное подключение к Bitrix.
- Redis cache через Symfony cache pool.
- Авторизация через guard authenticator `App\Security\LoginFormAuthenticator`.
## Основные директории
- `src/Controller` - страницы кабинета, админка и публичный API.
- `src/Bundle` - локальные интеграционные обертки: Bitrix, Infoclinica, Calltouch, SMS, Notisend, Yandex.
- `src/Command` - синхронизации и служебные операции.
- `src/Entity` - Doctrine entities.
- `src/Form` - формы Symfony.
- `src/Service` - бизнес-логика.
- `templates` - Twig-шаблоны.
- `assets` - JS/CSS-ассеты для Webpack Encore.
## Расписание врачей
Публичный сайт (список врачей, слоты записи) получает **живое расписание** из Infoclinica через прокси `GET /api/interval`, а не из backend API. Batch-sync ближайших дат (`nearestDate`) идёт через backend cron → PostgreSQL views.
Полный разбор: [Расписание врачей: синхронизация и отображение](./doctor-schedule-sync.md).
## Онлайн-консультация
Запись на онлайн-приём: `/online-specialists` (требуется авторизация), слоты через `/api/interval?onlineMode=1`, бронирование через Infoclinica webSDK, оплата и видео в `/case-history`.
Подробно: [Онлайн-консультация в личном кабинете](./online-consultation.md).
Тесты: `make local-online-smoke`, `make cabinet-test`.
## Точки входа
nginx направляет `cabinet.sovamed.ru` в `apps/cabinet/public/index.php`. Корневой маршрут `/` обрабатывается `DefaultController::index` и требует `ROLE_USER`.
Важные контроллеры:
- `SecurityController` - вход и выход.
- `DefaultController` - основные страницы кабинета и админские действия.
- `PublicAPIController` - публичные API-методы под `/api`.
- `InternalAPIController` - внутренние API-методы.
- `SpecialistController`, `DepartmentController`, `PageController`, `BannerController` - справочники и CMS-часть.
- `WidgetController`, `WidgetFormController` - формы и виджеты.
## Ассеты
Команды из `package.json`:
```bash
yarn dev
yarn watch
yarn build
```
В контейнере:
```bash
docker exec -it php82 yarn install
docker exec -it php82 yarn dev
```
## Backend-команды
Установка зависимостей:
```bash
docker exec -it php82 composer install
```
Миграции:
```bash
docker exec -it php82 php bin/console doctrine:migrations:migrate
```
Список app-команд:
```bash
docker exec -it php82 php bin/console list app
```
## Важное замечание
Внутри `apps/cabinet` есть отдельный старый `docker-compose.yml` под PHP 7.4 и локальный nginx. Основной репозиторий сейчас использует общий compose из `environments` и контейнер `php82`, поэтому старый compose стоит рассматривать как исторический или альтернативный сценарий.