Files

94 lines
3.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 стоит рассматривать как исторический или альтернативный сценарий.