Нормативные правила FSP Core 1.0
Правила каталога услуг, категорий, параметров, метрик, габаритных профилей и целостности данных. Обязательны для соответствия модулю.
Строк: 31. Машиночитаемо: JSON · CSV
| ID | Правило |
|---|---|
CAT-001 | Коды стандартных услуг неизменяемы после публикации. |
CAT-002 | Одна строка прайса ФФ может включать несколько стандартных услуг. |
CAT-003 | Материалы хранятся отдельно от операций. |
CAT-004 | Для каждой услуги в каталоге хранится полный закрытый список допустимых billing_metric v1: код и название. Значение вне списка требует новой версии стандарта. |
CAT-005 | Разделы каталога используются только для навигации и не определяют категорийную применимость услуги. |
CAT-006 | Применимость услуги к товарной категории задаётся только на реестре «Связи категорий» по кодам услуги и категории. |
SIZE-001 | Размерные классы принадлежат версионируемому профилю. |
SIZE-002 | ФФ может использовать собственный профиль размеров. |
SIZE-003 | Если товар совпал с несколькими классами профиля, выбирается класс с минимальным числовым priority. Если совпадений нет, возвращается SIZE_PROFILE_NO_MATCH. |
MAP-001 | Категории WB/Ozon сопоставляются отдельными версионируемыми строками. |
CAT-007 | Связь с категорией any распространяется на все дочерние категории; более специфичная связь не отменяет any. |
CAT-008 | Каждый параметр услуги обязан существовать на реестре «Параметры», а связь — на реестре «Параметры услуг». |
CAT-009 | Тип услуги хранится явно: base или industry. Положение строки и название раздела не являются типом. |
SIZE-004 | Отсутствие обязательного входа размерного правила возвращает SIZE_PROFILE_INPUT_MISSING; null никогда не считается совпадением. |
SIZE-005 | sum_sides_cm, max_side_cm, volume_m3, volumetric_weight_kg и chargeable_weight_kg вычисляются только по реестру «Расчётные метрики». |
MAP-002 | Для пары source_system + source_category_id периоды active-маппингов не пересекаются; результат сопоставления должен быть единственным. |
DATA-001 | Все id уникальны в пределах сущности; все ссылки обязаны существовать; публикация блокируется при любой ошибке на реестре «Проверки». |
CAT-010 | Источник истины для допустимых billing_metric — реестр «Метрики услуг»; строковые списки каталога являются только витриной. |
SIZE-006 | size_class_id всегда квалифицирован как <profile>:<version>:<class>; использование S/M/L без профиля запрещено. |
SIZE-007 | Договорный размерный профиль и фактическая логика калькулятора хранятся раздельно; расхождение блокирует публикацию тарифа. |
CAT-011 | Варианты материала, размера, маршрута и объёма не создают новую услугу: они задаются материалом, параметром, метрикой или условием цены. |
SCOPE-001 | Позиции из реестра «Исключения» не добавляются в каталог и при импорте получают статус out_of_scope. |
SCOPE-002 | Самовыкуп и стимулированный отзыв не получают код услуги и не входят в предложение оператора. |
PROFILE-001 | Манифест публикуется по адресу /.well-known/fsp и является единственным источником сведений о поддерживаемых модулях. Договорённость вне манифеста не заменяет его. |
PROFILE-002 | Объявлять модуль, чьи зависимости не объявлены, запрещено: манифест с таким набором модулей недействителен. |
PROFILE-003 | Активны только модули, объявленные обеими сторонами. Для каждого общего модуля берётся пересечение версий и выбирается наибольшая; при пустом пересечении модуль исключается. |
PROFILE-004 | Исключение модуля исключает все модули, которые от него зависят, и все расширения, чей родительский модуль исключён. Пересчёт повторяется до стабилизации. |
PROFILE-005 | Итог согласования вычисляет и фиксирует принимающая сторона, возвращая его в ответе. При расхождении сторон действует итог принимающей. |
PROFILE-006 | Для модуля с уровнями соответствия согласованным считается наименьший общий уровень. Требование уровня выше согласованного не исключает сторону из обмена, а возвращается кодом непокрытия. |
PROFILE-007 | Имя расширения имеет вид x-<vendor>:<code> и обязано указывать родительский модуль. Расширение только добавляет поля и никогда не переопределяет поля стандарта. |
PROFILE-008 | Неизвестное поле, модуль или расширение игнорируется и не является ошибкой обмена. Отсутствие у другой стороны объявленного модуля тоже не ошибка. |