126 lines
5.7 KiB
Markdown
126 lines
5.7 KiB
Markdown
# 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 API
|
||
- `src/resolvers.js` — реализация GraphQL-операций
|
||
- `src/context.js` — построение контекста запроса
|
||
- `src/auth.js` — аутентификация и токены доступа
|
||
- `src/access.js` — правила авторизации и проверки ролей
|
||
- `src/prisma-client.js` — точка подключения Prisma
|
||
- `src/messenger*.js`, `src/telegram*.js`, `src/max-mini-app.js` — мессенджерный контур и мини-приложения
|
||
|
||
## 7.4 Карта слоев и компонентов
|
||
|
||

|
||
|
||
## 7.5 Требования к компонентной реализации
|
||
|
||
Архитектура программного продукта должна сохранять следующие правила:
|
||
|
||
- экранная логика должна находиться на уровне страниц и composables
|
||
- переиспользуемые элементы интерфейса должны быть вынесены в отдельные компоненты
|
||
- каждый GraphQL-документ должен храниться в отдельном `.graphql` файле
|
||
- клиентский код должен использовать сгенерированные типизированные документы
|
||
- серверная логика доступа к данным должна проходить через Prisma
|
||
- бизнес-правила доступа должны контролироваться серверной частью, а не только интерфейсом
|
||
|
||
## 7.6 Требования к библиотекам и стеку
|
||
|
||
Клиентская часть реализуется на следующих библиотеках и платформах:
|
||
|
||
- `Nuxt 4`
|
||
- `Vue 3`
|
||
- `@nuxtjs/apollo`
|
||
- `@vue/apollo-composable`
|
||
- `GraphQL Code Generator`
|
||
- `Tailwind CSS`
|
||
- `daisyUI`
|
||
- `Storybook`
|
||
- `VitePress`
|
||
|
||
Серверная часть реализуется на следующих библиотеках и платформах:
|
||
|
||
- `Node.js`
|
||
- `Express 5`
|
||
- `Apollo Server 5`
|
||
- `Prisma 7`
|
||
- `PostgreSQL`
|
||
- `Zod`
|
||
- `Nodemailer`
|
||
|
||
## 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 |
|