{
  "standard": "FSP",
  "module": "capacity",
  "version": "1.0",
  "registry": "capacity_model",
  "title": "Мощности и направления — FSP Capacity 1.0",
  "description": "Что оператор готов взять (listing), сколько у него свободно (storage_capacity, throughput_capacity) и куда он возит (routes, route_schedules). Волатильные данные: заполняет и обновляет сам оператор.",
  "in_standard": true,
  "columns": [
    "Сущность",
    "Поле",
    "Тип",
    "Обязательно",
    "Назначение",
    "Пример"
  ],
  "rows": [
    {
      "Сущность": "listing",
      "Поле": "listing_id",
      "Тип": "id",
      "Обязательно": "да",
      "Назначение": "Предложение склада в маркетплейсе",
      "Пример": "listing_sklad_msk"
    },
    {
      "Сущность": "listing",
      "Поле": "location_id",
      "Тип": "id",
      "Обязательно": "да",
      "Назначение": "Склад",
      "Пример": "loc_sklad_msk"
    },
    {
      "Сущность": "listing",
      "Поле": "rate_card_id",
      "Тип": "id",
      "Обязательно": "да",
      "Назначение": "Их прайс в price_model (числа — свои)",
      "Пример": "rate_card_123"
    },
    {
      "Сущность": "listing",
      "Поле": "categories_served",
      "Тип": "list<category_id>",
      "Обязательно": "да",
      "Назначение": "Категории товаров из справочника categories",
      "Пример": "apparel; footwear"
    },
    {
      "Сущность": "listing",
      "Поле": "marketplaces_served",
      "Тип": "list<enum>",
      "Обязательно": "да",
      "Назначение": "wb / ozon / ym / avito / own",
      "Пример": "wb; ozon"
    },
    {
      "Сущность": "listing",
      "Поле": "schemes_served",
      "Тип": "list<enum>",
      "Обязательно": "нет",
      "Назначение": "FBO / FBS / DBS",
      "Пример": "FBO; FBS"
    },
    {
      "Сущность": "listing",
      "Поле": "counterparty_types",
      "Тип": "list<enum>",
      "Обязательно": "нет",
      "Назначение": "ip / ooo / self_employed",
      "Пример": "ip; ooo"
    },
    {
      "Сущность": "listing",
      "Поле": "min_charge",
      "Тип": "decimal",
      "Обязательно": "нет",
      "Назначение": "Минимальный чек в месяц (руб)",
      "Пример": "15000"
    },
    {
      "Сущность": "listing",
      "Поле": "min_volume",
      "Тип": "string",
      "Обязательно": "нет",
      "Назначение": "Минимальный объём захода",
      "Пример": "5 паллет"
    },
    {
      "Сущность": "listing",
      "Поле": "ready_from",
      "Тип": "date",
      "Обязательно": "нет",
      "Назначение": "Готов принять с даты",
      "Пример": "2026-08-01"
    },
    {
      "Сущность": "listing",
      "Поле": "contract_min_term",
      "Тип": "string",
      "Обязательно": "нет",
      "Назначение": "Минимальный срок договора",
      "Пример": "3 мес"
    },
    {
      "Сущность": "listing",
      "Поле": "restrictions",
      "Тип": "list<code>",
      "Обязательно": "нет",
      "Назначение": "Что НЕ берёт (атрибуты/коды исключений)",
      "Пример": "no_frozen; no_oversize"
    },
    {
      "Сущность": "listing",
      "Поле": "active",
      "Тип": "boolean",
      "Обязательно": "да",
      "Назначение": "Показывать в выдаче",
      "Пример": "true"
    },
    {
      "Сущность": "storage_capacity",
      "Поле": "capacity_id",
      "Тип": "id",
      "Обязательно": "да",
      "Назначение": "Строка свободной площади (заполняет ФФ)",
      "Пример": "cap_sklad_msk_pallet"
    },
    {
      "Сущность": "storage_capacity",
      "Поле": "location_id",
      "Тип": "id",
      "Обязательно": "да",
      "Назначение": "Склад",
      "Пример": "loc_sklad_msk"
    },
    {
      "Сущность": "storage_capacity",
      "Поле": "storage_type",
      "Тип": "enum",
      "Обязательно": "да",
      "Назначение": "Тип хранения (см. storage_types)",
      "Пример": "pallet"
    },
    {
      "Сущность": "storage_capacity",
      "Поле": "temp_mode",
      "Тип": "enum",
      "Обязательно": "да",
      "Назначение": "ambient / cold / frozen",
      "Пример": "ambient"
    },
    {
      "Сущность": "storage_capacity",
      "Поле": "free_m2",
      "Тип": "decimal",
      "Обязательно": "да",
      "Назначение": "Свободная площадь в м² (базовая единица)",
      "Пример": "80"
    },
    {
      "Сущность": "storage_capacity",
      "Поле": "pallet_places",
      "Тип": "decimal",
      "Обязательно": "нет",
      "Назначение": "Паллето-места — производная от м² по коэффициенту storage_types",
      "Пример": "200"
    },
    {
      "Сущность": "storage_capacity",
      "Поле": "updated_at",
      "Тип": "datetime",
      "Обязательно": "нет",
      "Назначение": "Когда ФФ обновил",
      "Пример": "2026-07-24"
    },
    {
      "Сущность": "throughput_capacity",
      "Поле": "throughput_id",
      "Тип": "id",
      "Обязательно": "да",
      "Назначение": "Строка свободной пропускной способности (заполняет ФФ)",
      "Пример": "thr_sklad_msk_out"
    },
    {
      "Сущность": "throughput_capacity",
      "Поле": "location_id",
      "Тип": "id",
      "Обязательно": "да",
      "Назначение": "Склад",
      "Пример": "loc_sklad_msk"
    },
    {
      "Сущность": "throughput_capacity",
      "Поле": "operation",
      "Тип": "enum",
      "Обязательно": "да",
      "Назначение": "inbound / outbound / processing",
      "Пример": "outbound"
    },
    {
      "Сущность": "throughput_capacity",
      "Поле": "metric",
      "Тип": "enum",
      "Обязательно": "да",
      "Назначение": "orders_per_day / deliveries_per_day / units_per_day / pallets_per_day",
      "Пример": "orders_per_day"
    },
    {
      "Сущность": "throughput_capacity",
      "Поле": "free_capacity",
      "Тип": "decimal",
      "Обязательно": "да",
      "Назначение": "Свободная пропускная способность",
      "Пример": "500"
    },
    {
      "Сущность": "throughput_capacity",
      "Поле": "updated_at",
      "Тип": "datetime",
      "Обязательно": "нет",
      "Назначение": "Когда ФФ обновил",
      "Пример": "2026-07-24"
    },
    {
      "Сущность": "routes",
      "Поле": "route_id",
      "Тип": "id",
      "Обязательно": "да",
      "Назначение": "Регулярное направление отгрузки со склада",
      "Пример": "route_sklad_msk_kaledino"
    },
    {
      "Сущность": "routes",
      "Поле": "location_id",
      "Тип": "id",
      "Обязательно": "да",
      "Назначение": "Склад-отправитель (operator_location в FSP Core)",
      "Пример": "loc_sklad_msk"
    },
    {
      "Сущность": "routes",
      "Поле": "destination",
      "Тип": "string",
      "Обязательно": "да",
      "Назначение": "Направление: склад маркетплейса, город или адрес получателя",
      "Пример": "Коледино"
    },
    {
      "Сущность": "routes",
      "Поле": "marketplace",
      "Тип": "enum",
      "Обязательно": "нет",
      "Назначение": "wb / ozon / ym / avito / own / any — чей склад назначения",
      "Пример": "wb"
    },
    {
      "Сущность": "routes",
      "Поле": "transport_mode",
      "Тип": "enum",
      "Обязательно": "нет",
      "Назначение": "own / carrier / pickup — чьим транспортом идёт отправка",
      "Пример": "own"
    },
    {
      "Сущность": "routes",
      "Поле": "active",
      "Тип": "boolean",
      "Обязательно": "да",
      "Назначение": "Направление обслуживается",
      "Пример": "true"
    },
    {
      "Сущность": "route_schedules",
      "Поле": "schedule_id",
      "Тип": "id",
      "Обязательно": "да",
      "Назначение": "Окно отправки по направлению",
      "Пример": "sched_kaledino_mon"
    },
    {
      "Сущность": "route_schedules",
      "Поле": "route_id",
      "Тип": "id",
      "Обязательно": "да",
      "Назначение": "Ссылка на routes.route_id",
      "Пример": "route_sklad_msk_kaledino"
    },
    {
      "Сущность": "route_schedules",
      "Поле": "weekday",
      "Тип": "enum",
      "Обязательно": "да",
      "Назначение": "monday … sunday",
      "Пример": "monday"
    },
    {
      "Сущность": "route_schedules",
      "Поле": "cutoff_time",
      "Тип": "time",
      "Обязательно": "нет",
      "Назначение": "Время окончания приёма заявок на это окно",
      "Пример": "18:00"
    },
    {
      "Сущность": "route_schedules",
      "Поле": "departure_time",
      "Тип": "time",
      "Обязательно": "нет",
      "Назначение": "Плановое время отправления",
      "Пример": "10:00"
    },
    {
      "Сущность": "route_schedules",
      "Поле": "active",
      "Тип": "boolean",
      "Обязательно": "да",
      "Назначение": "Окно доступно",
      "Пример": "true"
    }
  ]
}