feat: migrate to VitePress from monorepo docs, add test-contour section
This commit is contained in:
@@ -0,0 +1,146 @@
|
||||
# Потоки данных и сценарии
|
||||
|
||||
## Запуск окружения
|
||||
|
||||
```mermaid
|
||||
flowchart TB
|
||||
make[make dev / make up]
|
||||
env[.env + .env.local]
|
||||
networks[docker-compose.networks.yml]
|
||||
dbs[docker-compose.dbs.yml]
|
||||
apps[docker-compose.apps.yml]
|
||||
dev[docker-compose.dev.yml]
|
||||
monitoring[docker-compose.monitoring.yml]
|
||||
|
||||
make --> env
|
||||
make --> networks
|
||||
make --> dbs
|
||||
make --> apps
|
||||
make --> dev
|
||||
make -->|make up| monitoring
|
||||
|
||||
networks --> public[public-network]
|
||||
networks --> internal[internal-network]
|
||||
dbs --> pgsql[pgsql]
|
||||
dbs --> redis[redis]
|
||||
apps --> nginx[nginx]
|
||||
apps --> php84[php84 backend]
|
||||
apps --> php82[php82 cabinet]
|
||||
apps --> nextjs[nextjs sovamed]
|
||||
dev --> nodejs[nodejs helper]
|
||||
```
|
||||
|
||||
## Синхронизация справочников
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant Cron as cron / developer
|
||||
participant Command as Symfony Command
|
||||
participant Bitrix as Bitrix / external source
|
||||
participant MIS as Infoclinica / MIS
|
||||
participant Service as Domain Service
|
||||
participant Repo as Repository
|
||||
participant DB as PostgreSQL
|
||||
|
||||
Cron->>Command: php bin/console app:...
|
||||
Command->>Bitrix: получить контент/врачей/отзывы
|
||||
Command->>MIS: получить расписание/филиалы/цены
|
||||
Bitrix-->>Command: external data
|
||||
MIS-->>Command: external data
|
||||
Command->>Service: нормализовать и применить
|
||||
Service->>Repo: upsert/update
|
||||
Repo->>DB: persist + flush
|
||||
```
|
||||
|
||||
## Получение расписания врача
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant Client
|
||||
participant Controller as SpecialistController
|
||||
participant Service as SpecialistService
|
||||
participant Cache as ScheduleCacheService
|
||||
participant MIS as InfoclinicaClientService
|
||||
participant DB as PostgreSQL
|
||||
|
||||
Client->>Controller: GET /specialist/schedule
|
||||
Controller->>Service: getSchedule(...)
|
||||
Service->>Cache: getCachedSchedule(query)
|
||||
alt cache hit
|
||||
Cache-->>Service: cached schedule
|
||||
else cache miss
|
||||
Service->>MIS: getSchedule(...)
|
||||
MIS-->>Service: schedule
|
||||
Service->>Cache: saveSchedule(...)
|
||||
end
|
||||
Service->>DB: при необходимости read/write Schedule
|
||||
Service-->>Controller: расписание
|
||||
Controller-->>Client: JSON
|
||||
```
|
||||
|
||||
## Анонимная запись
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant Client
|
||||
participant API as Controller
|
||||
participant Service as SpecialistService / Infoclinica Rest
|
||||
participant MIS as MIS
|
||||
participant DB as Record Repository
|
||||
participant SMS as SMS service
|
||||
|
||||
Client->>API: POST anonymous-reserve
|
||||
API->>Service: подготовить reserve payload
|
||||
Service->>MIS: создать запись
|
||||
MIS-->>Service: результат записи
|
||||
Service->>DB: сохранить Record
|
||||
Service->>SMS: отправить уведомление при необходимости
|
||||
Service-->>API: success + record data
|
||||
API-->>Client: JSON
|
||||
```
|
||||
|
||||
## Авторизация backend по JWT
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
login[POST /user/login] --> dto[UserLoginDto]
|
||||
dto --> auth[AuthenticationService]
|
||||
auth --> user[(User)]
|
||||
auth --> password[password check]
|
||||
password --> jwt[JWTTokenManager]
|
||||
jwt --> response[token + user]
|
||||
|
||||
request[Защищенный request] --> firewall[JWT firewall]
|
||||
firewall --> decoder[JWTDecoderService]
|
||||
decoder --> currentUser[Current User]
|
||||
```
|
||||
|
||||
## Авторизация cabinet через сессию
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
login["POST /login"] --> authenticator["LoginFormAuthenticator"]
|
||||
authenticator --> provider["User provider by email"]
|
||||
provider --> user[(User)]
|
||||
authenticator --> session["Session cookies"]
|
||||
session --> protected["ROLE_USER pages"]
|
||||
logout["GET /logout"] --> clear["Удаление cookies"]
|
||||
```
|
||||
|
||||
## Документация VitePress
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
makeDocs[make docs]
|
||||
compose[docker-compose.docs.yml]
|
||||
node[node:24-alpine]
|
||||
npm[npm install]
|
||||
vitepress[VitePress dev server]
|
||||
browser[http://localhost:5173]
|
||||
|
||||
makeDocs --> compose
|
||||
compose --> node
|
||||
node --> npm
|
||||
npm --> vitepress
|
||||
vitepress --> browser
|
||||
```
|
||||
Reference in New Issue
Block a user