Update technical specification structure

This commit is contained in:
Ruslan Bakiev
2026-05-04 09:59:07 +07:00
parent 0a96adbb78
commit ac312a3a62
19 changed files with 517 additions and 692 deletions

View File

@@ -1,12 +1,12 @@
# 7. Техническая архитектура, стек и состав компонентов
# 9. Техническая архитектура, стек, компоненты и эксплуатационный контур
## 7.1 Общая архитектурная схема
## 9.1 Общая архитектурная схема
Программный продукт реализуется по клиент-серверной модели и включает веб-клиент, сервер бизнес-логики, базу данных, модуль интеграции и вспомогательные сервисы уведомлений.
![Общая архитектурная схема](/diagrams/architecture-overview.svg)
## 7.2 Состав прикладных сервисов
## 9.2 Состав прикладных сервисов
Согласно действующей карте деплоя в составе проекта используются следующие сервисы:
@@ -19,7 +19,7 @@
Основные прикладные сервисы `web-frontend` и `apollo-backend` разворачиваются через `dokploy_webhook` на сервере `main`.
## 7.3 Технологический стек фронтенда
## 9.3 Технологический стек фронтенда
Клиентская часть программного продукта реализуется на следующих технологиях:
@@ -31,7 +31,7 @@
- `Storybook` — контур изоляционного просмотра компонентов
- `VitePress` — подготовка проектной документации
## 7.4 Технологический стек серверной части
## 9.4 Технологический стек серверной части
Серверная часть программного продукта реализуется на следующих технологиях:
@@ -43,7 +43,7 @@
- `Zod` — валидация структур данных в прикладных сценариях
- `Nodemailer` — отправка уведомлений по электронной почте
## 7.5 Архитектура клиентской части
## 9.5 Архитектура клиентской части
Клиентская часть организована по следующим слоям:
@@ -64,11 +64,11 @@
- `/catalog-settings` — административные настройки каталога
- `/bonus-program`, `/bonus-system/*` — бонусный контур
## 7.6 Карта слоев и компонентов
## 9.6 Карта слоев и компонентов
![Карта слоев и компонентов](/diagrams/component-map.svg)
## 7.7 Архитектура серверной части
## 9.7 Архитектура серверной части
Серверная часть организована по следующим основным модулям:
@@ -81,7 +81,7 @@
- `src/prisma-client.js` — точка подключения Prisma
- `src/messenger*.js`, `src/telegram*.js`, `src/max-mini-app.js` — мессенджерный контур и мини-приложения
## 7.8 Взаимодействие фронтенда и backend
## 9.8 Взаимодействие фронтенда и backend
Взаимодействие клиентской и серверной части строится через GraphQL API.
@@ -98,7 +98,7 @@
- централизованно передавать авторизационные данные
- поддерживать единый клиентский GraphQL endpoint
## 7.9 Интеграционные и вспомогательные HTTP-точки
## 9.9 Интеграционные и вспомогательные HTTP-точки
Помимо GraphQL API, во фронтенд-контуре реализованы вспомогательные серверные маршруты:
@@ -109,7 +109,7 @@
- `/api/dadata/party` — подсказки контрагентов
- `/api/messenger-avatar/[connectionId]` — выдача изображений, связанных с мессенджерными подключениями
## 7.10 Компонентные требования к реализации
## 9.10 Компонентные требования к реализации
Архитектура программного продукта должна сохранять следующие правила:
@@ -120,13 +120,13 @@
- серверная логика доступа к данным должна проходить через Prisma
- бизнес-правила доступа должны контролироваться серверной частью, а не только интерфейсом
## 7.11 Требования к конфигурации и секретам
## 9.11 Требования к конфигурации и секретам
Сервисы программного продукта должны получать прикладные секреты из `Vault`.
В конфигурации сервисов допускается хранение только bootstrap-параметров для подключения к Vault. Бизнес-секреты, ключи интеграций и иные чувствительные данные должны загружаться из Vault при старте приложения.
## 7.12 Инфраструктура, деплой и эксплуатационный контур
## 9.12 Инфраструктура, деплой и эксплуатационный контур
Текущая инфраструктурная схема проекта включает прикладные сервисы, сервис секретов, мессенджерные сервисы и вспомогательный worker-контур.
@@ -152,7 +152,7 @@
Эксплуатационные операции доступа и диагностики выполняются через Tailscale SSH.
## 7.13 Dokploy и цепочка развёртывания
## 9.13 Dokploy и цепочка развёртывания
Для основных сервисов проекта используется режим `dokploy_webhook`.
@@ -171,7 +171,7 @@
- `apollo-backend` стартует через загрузку Vault env, `prisma migrate deploy` и запуск `src/server.js`
- bot-сервисы стартуют через общий паттерн загрузки Vault env и запуск `node src/server.js`
## 7.14 Vault и хранение секретов
## 9.14 Vault и хранение секретов
Сервис `vault` развернут как отдельное приложение на базе образа `hashicorp/vault:1.21.3`.
@@ -190,7 +190,7 @@
- загружает project secrets
- экспортирует секреты в runtime environment процесса
## 7.15 Структура сервисных каталогов
## 9.15 Структура сервисных каталогов
Текущая сервисная структура репозитория:
@@ -203,7 +203,7 @@
- `vault` — Dockerfile, конфигурация и entrypoint Vault
- `hatchet` — docker-compose инфраструктурного контура Hatchet
## 7.16 Контур фоновых процессов
## 9.16 Контур фоновых процессов
В проекте присутствует отдельный контур фонового исполнения задач:
@@ -214,7 +214,7 @@
Конфигурация этого контура находится в `hatchet/docker-compose.yml`.
## 7.17 Зафиксированные runtime-версии и технологические зависимости
## 9.17 Зафиксированные runtime-версии и технологические зависимости
### Базовые runtime и контейнерные образы
@@ -237,12 +237,17 @@
| `@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 |
| `@fullcalendar/core` | `6.1.20` | calendar runtime |
| `@fullcalendar/daygrid` | `6.1.20` | calendar day grid |
| `@fullcalendar/vue3` | `6.1.20` | Vue integration for calendar |
| `@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 |
| `mermaid` | `11.14.0` | diagrams in documentation |
| `@sentry/vue` | `10.46.0` | error tracking |
| `storybook` | `8.6.14` | UI component review |
| `vue-router` | `5.0.4` | Vue routing runtime |
### Основные зависимости backend
@@ -259,7 +264,14 @@
| `nodemailer` | `8.0.4` | email notifications |
| `dotenv` | `17.3.1` | env bootstrap in local/runtime layers |
## 7.18 Технические конфигурационные файлы
### Основные зависимости worker-контура
| Библиотека | Версия | Назначение |
| --- | --- | --- |
| `@hatchet-dev/typescript-sdk` | `1.19.0` | worker runtime |
| `dotenv` | `17.3.1` | env bootstrap in local/runtime layers |
## 9.18 Технические конфигурационные файлы
Ключевые технические файлы текущей реализации: