FSP 1.0

FSP / Модули / core

stable версия 1.0

FSP Core 1.0

Общий язык: услуги, единицы начисления, категории товара, габаритные профили, оператор и склад.

Общий язык протокола. Всё остальное ссылается сюда: цена начисляется за услугу из каталога по единице из справочника метрик, мощность продаётся под категорию товара, заявка описывается теми же кодами.

Зависимостей нет. Объявить любой другой модуль без core нельзя.

Реестры

Каталог — что вообще делают на складе

Реестр Что внутри
catalog_services 59 услуг: 53 базовых и 6 отраслевых. Код неизменяем после публикации (CAT-001)
categories Классификатор товарных категорий, корень any
parameters Варианты выполнения операции. Вариант не создаёт новую услугу (CAT-011)
billing_metrics Закрытый справочник единиц начисления и правил округления
materials Материалы отдельно от операций (CAT-003)
exclusions Явные границы: что не получает код услуги (субаренда, штрафы, реклама, самовыкуп)

Связи — нормализованные, проверяются на целостность

Реестр Что связывает
category_links Услуга ↔ категория: применимость (CAT-006)
service_parameters Услуга ↔ параметр, с признаком обязательности
service_metrics Услуга ↔ допустимая единица начисления. Источник истины для billing_metric (CAT-010)
category_mapping Категории маркетплейсов ↔ категории стандарта, версионируемо (MAP-001)

Габариты и вычисления

Реестр Что задаёт
size_profiles Размерные классы версионируемого профиля. Класс всегда квалифицирован как <profile>:<version>:<class> (SIZE-006)
derived_metrics Канонические формулы: сумма сторон, объём, объёмный и тарифицируемый вес (SIZE-005)

Стороны

Реестр Что задаёт
operators Оператор и его склады. На operator_id ссылается rate_cards.provider_id в FSP Pricing

Правила

rules — нормативные правила модуля: CAT-* (каталог), SIZE-* (габариты), MAP-* (маппинг категорий), DATA-* (целостность), SCOPE-* (границы), PROFILE-* (манифест и согласование сторон).

Почему оператор и склад лежат здесь

operator_location нужен и мощностям, и смете, и будущим заказам. Здесь лежит только медленно меняющееся: кто это и где находится. Свободная площадь и пропускная способность меняются часто и описаны в FSP Capacity.

Что здесь принципиально

Каталог определяет смысл операции, но не её цену и не её исполнителя (CAT-002, CAT-011). Поэтому два прайса раскладываются в одни и те же коды и становятся сравнимыми.

Нормативные правила

Обязательны для соответствия модулю. Префиксы объявлены в манифесте: CAT-*, SIZE-*, MAP-*, DATA-*, SCOPE-*, PROFILE-*.

Схема

JSON Schema 2020-12: /1.0/core/schema.json. Определения: service_code, category_id, billing_metric, size_class_id, marketplace, scheme, weekday, operator, operator_location.

Манифест модуля

{
  "module": "core",
  "title": "FSP Core",
  "version": "1.0",
  "status": "stable",
  "summary": "Общий язык: услуги, единицы начисления, категории товара, габаритные профили, оператор и склад.",
  "depends": [],
  "registries": [
    "catalog_services",
    "categories",
    "category_links",
    "parameters",
    "service_parameters",
    "billing_metrics",
    "service_metrics",
    "materials",
    "exclusions",
    "size_profiles",
    "derived_metrics",
    "category_mapping",
    "operators",
    "rules"
  ],
  "rule_prefixes": [
    "CAT",
    "SIZE",
    "MAP",
    "DATA",
    "SCOPE",
    "PROFILE"
  ],
  "schema": "schema.json",
  "profile": "../../profile/fsp-profile.schema.json"
}