Files
marketplaces/docs/platform/13-backend-requirements.md

3.4 KiB
Raw Blame History

13. Требования к backend

Назначение

Документ фиксирует минимальный набор backend-возможностей для стабильной работы конфигурационно-управляемой multi-tenant платформы.

Функциональные требования

  • Tenant resolution по домену.
  • Выдача bootstrap.json для tenant.
  • API категорий, товаров, карточек, поисковых выборок.
  • Выдача навигации, статических страниц и feature flags.
  • Product Engagement API для рейтинга, отзывов и вопросов.

Контракт статических страниц

Backend должен поддерживать формат:

{
  "slug": "about-us",
  "content": {
    "en": "<html>",
    "ru": "<html>",
    "hy": "<html>"
  }
}

Обязательные JSON-контракты

  • Bootstrap контракт со schemaVersion.
  • Категории: id/title/parentId/visible/priority.
  • Товары: itemID/name/price/currency/categoryID/visible.
  • Product Engagement:
    • RatingSummary (average, totalReviews, distribution)
    • Review (id, rating, text, createdAt, author)
    • Question (id, text, createdAt, answers)
  • Унифицированный формат ошибок API.

Обязательные Product Engagement endpoints

  • GET /products/{id}/rating
  • GET /products/{id}/reviews?page={n}&pageSize={n}
  • GET /products/{id}/questions?page={n}&pageSize={n}
  • POST /products/{id}/reviews
  • POST /products/{id}/questions

Опциональные JSON-контракты

  • Персонализированные рекомендации.
  • Расширенные facets/filters.
  • SEO-объекты и контентные блоки.

Строгие правила

  • Backend не должен возвращать frontend-specific разметку приложения (кроме контента статических страниц по согласованному контракту).
  • Любое breaking change требует новой версии контракта.
  • Данные tenants должны быть полностью изолированы.
  • SLA bootstrap и catalog API должны обеспечивать запуск витрины без деградации UX.
  • Bootstrap не должен содержать секреты: private keys, admin credentials, signing tokens.

Пример JSON ошибки API

{
  "error": {
    "code": "CATEGORY_NOT_FOUND",
    "message": "Category does not exist",
    "details": { "categoryId": 999 }
  }
}

Ответственность Frontend

  • Корректно интерпретировать ошибки и показывать пользовательские сценарии восстановления.
  • Не обходить публичные backend-контракты прямыми вызовами внутренних сервисов.

Ответственность Backend

  • Обеспечить мониторинг, логирование и трассировку критических endpoint.
  • Поддерживать тестируемые и документированные контракты.
  • Обеспечить безопасность, rate limiting и контроль доступа.