Files
marketplaces/docs/platform/07-tenant-system.md
sdarbinyan 10251f2fc6
Some checks failed
Architecture Governance / architecture (push) Has been cancelled
docs
2026-07-05 04:23:47 +04:00

2.3 KiB
Raw Blame History

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

{
  "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.