Ценообразование
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 var | Default | Описание |
|---|---|---|
PRICING_DB_DSN | — | PostgreSQL DSN |
PRICING_REDIS_ADDR | — | Redis |
PRICING_CACHE_TTL | 5m | TTL кэша |
Локальный запуск
Выделенного процесса 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 на горячем пути.