239 lines
8.0 KiB
TypeScript
239 lines
8.0 KiB
TypeScript
export const diagramSources: Record<string, string> = {
|
||
'architecture-overview': `flowchart LR
|
||
Browser["Браузер клиента"]
|
||
Frontend["web-frontend<br/>Nuxt 4 + Vue 3"]
|
||
Proxy["/api/graphql proxy"]
|
||
Backend["apollo-backend<br/>Apollo Server + Express"]
|
||
Prisma["Prisma ORM"]
|
||
Db[("PostgreSQL")]
|
||
Vault["Vault"]
|
||
OneC["1С"]
|
||
Bots["Telegram / MAX / email"]
|
||
Dokploy["Dokploy"]
|
||
|
||
Browser --> Frontend
|
||
Frontend --> Proxy
|
||
Proxy --> Backend
|
||
Backend --> Prisma
|
||
Prisma --> Db
|
||
Backend -.bootstrap env.-> Vault
|
||
Backend -.sync / events.-> OneC
|
||
Backend -.notifications.-> Bots
|
||
Frontend -.deploy.-> Dokploy
|
||
Backend -.deploy.-> Dokploy`,
|
||
'component-map': `flowchart LR
|
||
subgraph UI["UI и маршруты"]
|
||
Pages["app/pages"]
|
||
Components["app/components"]
|
||
Composables["app/composables"]
|
||
Middleware["middleware / plugins"]
|
||
end
|
||
|
||
subgraph Transport["Контракт и transport"]
|
||
Ops["graphql/operations"]
|
||
Generated["generated.ts"]
|
||
Apollo["Apollo client"]
|
||
Api["server/api/graphql"]
|
||
end
|
||
|
||
subgraph Server["Backend logic"]
|
||
Schema["schema.graphql"]
|
||
Resolvers["resolvers.js"]
|
||
Auth["auth.js / access.js"]
|
||
Context["context.js"]
|
||
Messenger["messenger / telegram / max"]
|
||
end
|
||
|
||
subgraph Data["Data layer"]
|
||
Prisma["prisma-client.js"]
|
||
PrismaSchema["schema.prisma"]
|
||
Db[("PostgreSQL")]
|
||
end
|
||
|
||
Pages --> Components
|
||
Pages --> Composables
|
||
Components --> Composables
|
||
Composables --> Apollo
|
||
Middleware --> Pages
|
||
Ops --> Generated
|
||
Generated --> Apollo
|
||
Apollo --> Api
|
||
Api --> Schema
|
||
Schema --> Resolvers
|
||
Resolvers --> Auth
|
||
Resolvers --> Context
|
||
Resolvers --> Messenger
|
||
Resolvers --> Prisma
|
||
Prisma --> PrismaSchema
|
||
Prisma --> Db`,
|
||
'infrastructure-topology': `flowchart TB
|
||
subgraph Repo["Репозиторий fregat"]
|
||
FrontendRepo["web-frontend"]
|
||
BackendRepo["apollo-backend"]
|
||
TgRepo["tg-bot"]
|
||
MaxRepo["max-bot"]
|
||
BonusRepo["bonus-bot"]
|
||
WorkerRepo["hatchet-worker"]
|
||
VaultRepo["vault"]
|
||
end
|
||
|
||
subgraph Dokploy["Dokploy"]
|
||
FrontendSvc["web-frontend service"]
|
||
BackendSvc["apollo-backend service"]
|
||
TgSvc["tg-bot service"]
|
||
MaxSvc["max-bot service"]
|
||
BonusSvc["bonus-bot service"]
|
||
WorkerSvc["hatchet-worker service"]
|
||
VaultSvc["vault service"]
|
||
end
|
||
|
||
subgraph Infra["Инфраструктурный контур"]
|
||
VaultData["Vault raft storage /vault/data"]
|
||
BackendDb[("PostgreSQL for app")]
|
||
HatchetEngine["Hatchet engine"]
|
||
HatchetPg[("PostgreSQL for Hatchet")]
|
||
OneC["1С"]
|
||
Tailscale["Tailscale SSH / diagnostics"]
|
||
end
|
||
|
||
FrontendRepo --> FrontendSvc
|
||
BackendRepo --> BackendSvc
|
||
TgRepo --> TgSvc
|
||
MaxRepo --> MaxSvc
|
||
BonusRepo --> BonusSvc
|
||
WorkerRepo --> WorkerSvc
|
||
VaultRepo --> VaultSvc
|
||
|
||
FrontendSvc --> BackendSvc
|
||
BackendSvc --> BackendDb
|
||
BackendSvc --> VaultSvc
|
||
TgSvc --> VaultSvc
|
||
MaxSvc --> VaultSvc
|
||
BonusSvc --> VaultSvc
|
||
WorkerSvc --> VaultSvc
|
||
VaultSvc --> VaultData
|
||
WorkerSvc --> HatchetEngine
|
||
HatchetEngine --> HatchetPg
|
||
BackendSvc -.exchange.-> OneC
|
||
FrontendSvc -.ops / debug.-> Tailscale
|
||
BackendSvc -.ops / debug.-> Tailscale`,
|
||
'database-model': `classDiagram
|
||
direction LR
|
||
|
||
class Company
|
||
class User
|
||
class CounterpartyProfile
|
||
class DeliveryAddress
|
||
class RegistrationRequest
|
||
class Invitation
|
||
class MessengerConnection
|
||
class Product
|
||
class Warehouse
|
||
class ProductStock
|
||
class CatalogProductTypeSetting
|
||
class Cart
|
||
class CartItem
|
||
class Order
|
||
class OrderItem
|
||
class OrderStatusEvent
|
||
class ReferralLink
|
||
class BonusTransaction
|
||
class RewardWithdrawalRequest
|
||
|
||
Company "1" --> "*" User : users
|
||
User "1" --> "0..1" CounterpartyProfile : profile
|
||
User "1" --> "*" DeliveryAddress : addresses
|
||
User "1" --> "*" MessengerConnection : channels
|
||
User "1" --> "0..1" Cart : cart
|
||
User "1" --> "*" Order : orders
|
||
User "1" --> "*" RegistrationRequest : requests
|
||
User "1" --> "*" Invitation : invitations
|
||
Product "1" --> "*" ProductStock : balances
|
||
Warehouse "1" --> "*" ProductStock : inventory
|
||
Product "1" --> "*" CartItem : cartItems
|
||
Product "1" --> "*" OrderItem : orderItems
|
||
Cart "1" --> "*" CartItem : items
|
||
Order "1" --> "*" OrderItem : items
|
||
Order "1" --> "*" OrderStatusEvent : history
|
||
User "1" --> "*" BonusTransaction : bonus
|
||
User "1" --> "*" RewardWithdrawalRequest : withdrawals
|
||
User "1" --> "*" ReferralLink : referrals
|
||
CatalogProductTypeSetting --> Product : productType`,
|
||
dashboard: `flowchart TB
|
||
subgraph Page["Главная страница клиента"]
|
||
Header["Header / навигация"]
|
||
Quick["Быстрые действия"]
|
||
Active["Актуальные заказы и заявки"]
|
||
Notes["Последние уведомления"]
|
||
Bonus["Бонусный блок"]
|
||
end
|
||
|
||
Header --> Quick --> Active --> Notes --> Bonus`,
|
||
'catalog-grid': `flowchart TB
|
||
subgraph Catalog["Каталог продукции"]
|
||
Title["Заголовок раздела"]
|
||
Search["Поиск"]
|
||
Grid["Сетка карточек товарных направлений"]
|
||
Cards["Упаковочный скотч | Алюминиевый скотч | Крепп | Вспененный | Двусторонний ПП | Двусторонний PVC"]
|
||
end
|
||
|
||
Title --> Search --> Grid --> Cards`,
|
||
'product-card': `flowchart TB
|
||
subgraph ProductPage["Карточка товара"]
|
||
Title["Заголовок товара и навигация"]
|
||
subgraph TopRow["Верхний блок"]
|
||
Image["Изображение товара"]
|
||
Params["Параметры выбора"]
|
||
Action["SKU / действие В корзину"]
|
||
end
|
||
Help["Пояснения по параметрам"]
|
||
Table["Таблица доступных вариантов"]
|
||
end
|
||
|
||
Title --> TopRow --> Help --> Table`,
|
||
cart: `flowchart TB
|
||
subgraph CartPage["Корзина"]
|
||
Items["Список выбранных позиций"]
|
||
Delivery["Адрес доставки"]
|
||
Comment["Комментарий клиента"]
|
||
Submit["Отправить заявку"]
|
||
end
|
||
|
||
Items --> Delivery --> Comment --> Submit`,
|
||
'client-order': `flowchart TB
|
||
subgraph ClientOrder["Карточка заявки / заказа"]
|
||
Summary["Номер документа и статус"]
|
||
Composition["Состав позиций"]
|
||
Terms["Стоимость и условия поставки"]
|
||
History["История изменений"]
|
||
end
|
||
|
||
Summary --> Composition --> Terms --> History`,
|
||
'bonus-cabinet': `flowchart TB
|
||
subgraph BonusPage["Бонусный кабинет"]
|
||
Balance["Текущий бонусный баланс"]
|
||
History["История операций"]
|
||
Referrals["Реферальные связи"]
|
||
Action["Подача заявки на использование или вывод"]
|
||
end
|
||
|
||
Balance --> History --> Referrals --> Action`,
|
||
'manager-order': `flowchart TB
|
||
subgraph ManagerOrder["Карточка обработки заявки"]
|
||
Summary["Клиент / контрагент / менеджер"]
|
||
Payload["Состав заявки или расчетный payload"]
|
||
Terms["Стоимость и условия поставки"]
|
||
Actions["Опубликовать условия / перевести в работу / отменить"]
|
||
end
|
||
|
||
Summary --> Payload --> Terms --> Actions`,
|
||
'manager-orders': `flowchart TB
|
||
subgraph ManagerOrders["Список заказов менеджера"]
|
||
Header["Заголовок раздела"]
|
||
Filters["Фильтры: статус / клиент / период"]
|
||
Table["Таблица заказов"]
|
||
end
|
||
|
||
Header --> Filters --> Table`,
|
||
};
|