Restructure technical specification sections

This commit is contained in:
Ruslan Bakiev
2026-05-01 15:39:23 +07:00
parent 542ad1b648
commit 58e9d6806d
9 changed files with 576 additions and 119 deletions

View File

@@ -0,0 +1,79 @@
# 8. Требования к инфраструктуре и эксплуатации
## 8.1 Инфраструктурная схема
Текущая инфраструктурная схема проекта включает прикладные сервисы, сервис секретов, мессенджерные сервисы и вспомогательный worker-контур.
![Инфраструктура, деплой и эксплуатационный контур](/diagrams/infrastructure-topology.svg)
## 8.2 Сервисы и окружение
Сервисы проекта и способ их развёртывания:
| Сервис | Путь в репозитории | Роль | Deploy mode | Сервер |
| --- | --- | --- | --- | --- |
| web-frontend | `web-frontend` | клиентский и менеджерский веб-интерфейс | `dokploy_webhook` | `main` |
| apollo-backend | `apollo-backend` | GraphQL API и бизнес-логика | `dokploy_webhook` | `main` |
| hatchet-worker | `hatchet-worker` | фоновый worker-контур | `dokploy_webhook` | `main` |
| tg-bot | `tg-bot` | Telegram-контур | `dokploy_webhook` | `main` |
| max-bot | `max-bot` | MAX-контур | `dokploy_webhook` | `main` |
| bonus-bot | `bonus-bot` | бонусный сервис | `dokploy_webhook` | `main` |
| vault | `vault` | сервис секретов | `dokploy_webhook` | `main` |
## 8.3 Требования к деплою и запуску
Для основных сервисов проекта используется режим `dokploy_webhook`.
Цепочка развёртывания должна быть следующей:
1. изменения фиксируются в Git-репозитории
2. изменения публикуются в `main`
3. Dokploy получает webhook-событие
4. Dokploy выполняет сборку соответствующего сервиса
5. сервис перезапускается с загрузкой секретов из Vault
6. после старта выполняются bootstrap-действия, предусмотренные образом и entrypoint-командой
Текущие особенности прикладных сервисов:
- `web-frontend` стартует через загрузку Vault env и запуск `.output/server/index.mjs`
- `apollo-backend` стартует через загрузку Vault env, `prisma migrate deploy` и запуск `src/server.js`
- bot-сервисы стартуют через общий паттерн загрузки Vault env и запуск `node src/server.js`
## 8.4 Требования к секретам и конфигурации
Сервисы программного продукта должны получать прикладные секреты из `Vault`.
В конфигурации сервисов допускается хранение только bootstrap-параметров для подключения к Vault. Бизнес-секреты, ключи интеграций и иные чувствительные данные должны загружаться из Vault при старте приложения.
Сервис `vault` развернут как отдельное приложение на базе образа `hashicorp/vault:1.21.3`.
Прикладные сервисы используют общий shell-bootstrap `load-vault-env.sh`, который:
- ожидает доступность Vault по health endpoint
- загружает shared secrets
- загружает project secrets
- экспортирует секреты в runtime environment процесса
## 8.5 Требования к эксплуатации и надежности
Система должна обеспечивать:
- корректную работу в десктопных и мобильных браузерах
- приемлемое время открытия основных экранов и выполнения действий
- сохранность пользовательских данных
- сохранность истории изменений по заявкам, заказам и бонусным операциям
- фиксацию ошибок интеграционного обмена
- журналирование значимых системных и пользовательских событий
- возможность сопровождения и развития клиентского и менеджерского контуров
## 8.6 Требования к передаче результата и эксплуатации
По результатам выполнения работ заказчику должны быть переданы:
- исходный код программного продукта
- техническое задание в согласованной редакции
- сведения об используемых компонентах и их версиях
- описание реализованных интеграций и используемых внешних интерфейсов
- схемы взаимодействия модулей и движения данных
- описание пользовательских ролей и прав доступа
- материалы, необходимые для сопровождения и эксплуатации продукта