Ценообразование

NOTE

Статус: Target service boundary. Документ описывает целевую сервисную границу. Код либо полностью отсутствует, либо существует только как scaffold — смотрите секцию «Статус документа» ниже для точного указания на код. Правила маркировки — в 50-processes/documentation-standard.md.

Этот README описывает целевую сервисную границу pricing. Читайте его, когда нужно понять, как система рассчитывает цену в контексте клиента, credentials и visibility policies.

Назначение

Pricing engine, который выбирает доступные observations, применяет price rules и возвращает breakdown с атрибуцией источников и freshness.

Статус документа

  • Тип знания: target service boundary
  • Статус реализации: отдельный runtime и код сервиса пока отсутствуют
  • Текущее место кода: выделенного pricing-кода в репозитории нет; текущий backend ограничен минимальным API-scaffold
  • Что читать дальше: ../../10-business/contexts/pricing.md, ../visibility/README.md, ../meta-search/README.md

Область действия

Входит:

  • Выбор observation с учётом credentials и supply chain trace.
  • Применение visibility policies и price rules.
  • Возврат breakdown и freshness metadata.
  • Graceful degradation без блокировки на ожидании поставщика.

Не входит:

  • Получение observations от поставщиков.
  • Аналитическая история цен в ClickHouse.
  • Оптимизация сметы.

Публичный контракт

Вход

  • HTTP: POST /v1/price/calculate.
  • События offer.observation.v1 для инвалидации кэша.

Выход

  • Вызовы в сервис visibility.
  • Постановка refresh/discovery jobs в целевом состоянии.
  • Кэш breakdown’ов в Redis.

Внутренняя архитектура

В целевом состоянии pricing сочетает rules engine, observation selector и response shaper. Он должен быть детерминированным для одинакового контекста и уметь объяснять происхождение итоговой цены.

Зависимости

  • PostgreSQL для rules, customer context и observations.
  • Redis для кэша.
  • Visibility как policy engine.

Хранилище

  • price_rule, customer_pricing_group, customer, contract, supplier_credential, supplier_offer_observation.
  • Redis для кэша расчётов.

Конфигурация

Env varDefaultОписание
PRICING_DB_DSNPostgreSQL DSN
PRICING_REDIS_ADDRRedis
PRICING_CACHE_TTL5mTTL кэша

Локальный запуск

Выделенного процесса pricing в текущем репозитории нет.

Тестирование

  • Unit-тесты обязательны для rules engine.
  • Нужны integration-тесты на visibility + pricing pipeline.
  • Нужны regression fixtures для breakdown и graceful degradation.

Наблюдаемость

В целевом состоянии нужны метрики latency расчёта, distribution pricing_mode, stale-hit rate и refresh job enqueue rate. Сейчас отдельной observability-поверхности нет.

Открытые вопросы / TODO

  • Спроектировать DSL для формул.
  • Добавить симулятор price rules для админки.
  • Измерить overhead visibility filter на горячем пути.

Связанные документы