Files
docs/apps/cabinet.md
T

3.8 KiB
Raw Blame History

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.

Полный разбор: Расписание врачей: синхронизация и отображение.

Онлайн-консультация

Запись на онлайн-приём: /online-specialists (требуется авторизация), слоты через /api/interval?onlineMode=1, бронирование через Infoclinica webSDK, оплата и видео в /case-history.

Подробно: Онлайн-консультация в личном кабинете.

Тесты: 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:

yarn dev
yarn watch
yarn build

В контейнере:

docker exec -it php82 yarn install
docker exec -it php82 yarn dev

Backend-команды

Установка зависимостей:

docker exec -it php82 composer install

Миграции:

docker exec -it php82 php bin/console doctrine:migrations:migrate

Список app-команд:

docker exec -it php82 php bin/console list app

Важное замечание

Внутри apps/cabinet есть отдельный старый docker-compose.yml под PHP 7.4 и локальный nginx. Основной репозиторий сейчас использует общий compose из environments и контейнер php82, поэтому старый compose стоит рассматривать как исторический или альтернативный сценарий.