This commit is contained in:
55
docs/platform/07-tenant-system.md
Normal file
55
docs/platform/07-tenant-system.md
Normal file
@@ -0,0 +1,55 @@
|
||||
# 07. Tenant System
|
||||
|
||||
## Назначение
|
||||
Tenant System обеспечивает запуск нескольких независимых магазинов на единой платформе через доменное разделение и конфигурационный bootstrap.
|
||||
|
||||
## Поведение системы
|
||||
- Tenant определяется только по hostname запроса.
|
||||
- По tenant выбираются конфигурации bootstrap, тема, локализация и API base.
|
||||
- Frontend не хранит статических tenant-switch правил в коде.
|
||||
|
||||
## Обязательные свойства JSON
|
||||
- tenant.id
|
||||
- tenant.slug
|
||||
- tenant.host
|
||||
- tenant.defaultLocale
|
||||
- tenant.supportedLocales
|
||||
- tenant.defaultCurrency
|
||||
|
||||
## Опциональные свойства JSON
|
||||
- tenant.timezone
|
||||
- tenant.brandName
|
||||
- tenant.websiteBaseUrl
|
||||
- tenant.builderBaseUrl
|
||||
- tenant.backofficeBaseUrl
|
||||
|
||||
## Строгие правила
|
||||
- Нельзя определять tenant через query params или localStorage как источник истины.
|
||||
- Нельзя хардкодить tenant ID внутри компонентов.
|
||||
- Один домен может быть связан только с одним активным tenant в момент запроса.
|
||||
- При отсутствии tenant-конфигурации runtime должен завершаться контролируемой ошибкой.
|
||||
|
||||
## Пример tenant JSON
|
||||
```json
|
||||
{
|
||||
"tenant": {
|
||||
"id": "tenant-lavero",
|
||||
"slug": "lavero",
|
||||
"host": "lavero.marketplace.com",
|
||||
"defaultLocale": "ru",
|
||||
"supportedLocales": ["ru", "en", "hy"],
|
||||
"defaultCurrency": "RUB",
|
||||
"timezone": "Europe/Moscow"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Ответственность Frontend
|
||||
- Резолвить tenant на старте приложения.
|
||||
- Использовать tenant-параметры для формирования маршрутов, локали и API-слоя.
|
||||
- Исключать fallback на чужой tenant без явной backend-политики.
|
||||
|
||||
## Ответственность Backend
|
||||
- Поддерживать доменно-tenant маппинг.
|
||||
- Возвращать корректную tenant-конфигурацию и bootstrap.
|
||||
- Контролировать изоляцию данных между tenants.
|
||||
Reference in New Issue
Block a user