5.7 KiB
5.7 KiB
7. Требования к компонентам и библиотекам
7.1 Общая компонентная схема
Программный продукт реализуется по клиент-серверной модели и включает веб-клиент, сервер бизнес-логики, базу данных, модуль интеграции и вспомогательные сервисы уведомлений.
7.2 Компоненты клиентской части
Клиентская часть должна быть организована по следующим слоям:
- страницы
app/pages - компоненты
app/components - composables
app/composables - GraphQL-документы
graphql/operations - сгенерированная типизированная схема
app/composables/graphql/generated.ts - серверные proxy и интеграционные обработчики
server/api
Ключевые экранные маршруты текущей реализации:
/productsи/products/[slug]/cart/client-ordersи/client-orders/[id]/clientsи/clients/[id]/ordersи/orders/[id]/catalog-settings/bonus-program,/bonus-system/*
7.3 Компоненты серверной части
Серверная часть должна быть организована по следующим основным модулям:
src/server.js— инициализация HTTP-сервера и GraphQL-сервераsrc/schema.graphql— контракт GraphQL APIsrc/resolvers.js— реализация GraphQL-операцийsrc/context.js— построение контекста запросаsrc/auth.js— аутентификация и токены доступаsrc/access.js— правила авторизации и проверки ролейsrc/prisma-client.js— точка подключения Prismasrc/messenger*.js,src/telegram*.js,src/max-mini-app.js— мессенджерный контур и мини-приложения
7.4 Карта слоев и компонентов
7.5 Требования к компонентной реализации
Архитектура программного продукта должна сохранять следующие правила:
- экранная логика должна находиться на уровне страниц и composables
- переиспользуемые элементы интерфейса должны быть вынесены в отдельные компоненты
- каждый GraphQL-документ должен храниться в отдельном
.graphqlфайле - клиентский код должен использовать сгенерированные типизированные документы
- серверная логика доступа к данным должна проходить через Prisma
- бизнес-правила доступа должны контролироваться серверной частью, а не только интерфейсом
7.6 Требования к библиотекам и стеку
Клиентская часть реализуется на следующих библиотеках и платформах:
Nuxt 4Vue 3@nuxtjs/apollo@vue/apollo-composableGraphQL Code GeneratorTailwind CSSdaisyUIStorybookVitePress
Серверная часть реализуется на следующих библиотеках и платформах:
Node.jsExpress 5Apollo Server 5Prisma 7PostgreSQLZodNodemailer
7.7 Зафиксированные версии ключевых зависимостей
Базовые runtime и контейнерные образы
| Компонент | Текущая версия |
|---|---|
| Node base image для web/backend/bots | node:22-bookworm-slim |
| Vault image | hashicorp/vault:1.21.3 |
| Hatchet Postgres | postgres:15.6 |
| Nuxt | 4.4.2 |
| Vue | 3.5.30 |
| Apollo Server | 5.5.0 |
| Prisma / Prisma Client | 7.6.0 |
| Mermaid | 11.14.0 |
| VitePress | 1.6.4 |
Основные зависимости фронтенда
| Библиотека | Версия | Назначение |
|---|---|---|
@nuxtjs/apollo |
5.0.0-alpha.16 |
GraphQL-клиентский слой |
@vue/apollo-composable |
4.2.2 |
composable API для GraphQL |
@apollo/client |
3.14.1 |
Apollo client runtime |
@nuxt/eslint |
1.15.2 |
linting Nuxt-проекта |
@nuxtjs/tailwindcss |
6.14.0 |
Tailwind integration |
daisyui |
5.5.19 |
UI primitives |
graphql |
16.13.2 |
GraphQL runtime |
@sentry/vue |
10.46.0 |
error tracking |
storybook |
8.6.14 |
UI component review |
Основные зависимости backend
| Библиотека | Версия | Назначение |
|---|---|---|
@apollo/server |
5.5.0 |
GraphQL server |
@as-integrations/express5 |
1.1.2 |
Apollo + Express integration |
express |
5.2.1 |
HTTP server |
@prisma/client |
7.6.0 |
data access |
@prisma/adapter-pg |
7.6.0 |
Prisma adapter |
pg |
8.20.0 |
PostgreSQL driver |
graphql |
16.13.2 |
GraphQL runtime |
zod |
4.3.6 |
validation |
nodemailer |
8.0.4 |
email notifications |
dotenv |
17.3.1 |
env bootstrap in local/runtime layers |