Глоссарий
Единый источник определений доменных и технических терминов. Если термин используется в документации в формате Term (bold) или Term — он должен быть здесь.
При изменении определения — только через PR с обсуждением.
Структура: тематические группы вместо плоского списка. Если термин логично относится к нескольким группам, он живёт в одной и упоминается ссылкой из смежных.
Оглавление
- Каталог и товары
- Supplier Offers и наблюдения
- Поставщики (сеть)
- Credentials
- Pricing и сметы
- Модерация и AI
- Data Visibility
- Архитектурные принципы
- DDD-паттерны
- Shared Kernel VOs
- Инфраструктурные паттерны
Каталог и товары
Canonical Product
Наша единая нормализованная единица товара. Агрегирует характеристики, контент (описание, фото, видео) и связи. Источник истины для поиска и формирования смет. Не путать с Supplier Offer.
Identity Profile
Шаблон, описывающий, какие характеристики являются критическими для определения идентичности товара. Применяется предикатом (matcher) к набору характеристик товара. Приходит на смену привязке к категории. См. 10-business/product-identity.md.
Critical Attribute
Характеристика, изменение значения которой создаёт новый Canonical Product в рамках данного Identity Profile. Противоположность — некритические атрибуты (цвет упаковки, страна производства).
Identity Signature
Хэш от (manufacturer, mpn, identity_profile_id, {critical_attributes}). Уникальный идентификатор канонического товара в системе.
Equivalence Class
Группа канонических товаров, взаимозаменяемых по критическим характеристикам (с учётом правил типа “не хуже чем”). Отличается от идентичности: это “решают ту же задачу”, не “тот же товар”.
Lifecycle Status
Статус Canonical Product: new / active / deprecated / discontinued / replaced_by.
Characteristic
Определение атрибута: ключ, тип значения, единица измерения, правила валидации. Хранится в классификаторе.
Unit
Единица измерения с размерностью и коэффициентом перевода к канонической единице размерности. Позволяет унифицировать значения (“50мм” = “5см”).
Better Direction
Атрибут Characteristic в контексте поиска аналогов: указывает, в какую сторону “лучше” — higher (например, мощность), lower (например, потери), neutral (равноценно — требуется точное совпадение). Используется фильтром “не хуже чем”.
Kind Dictionary
Расширяемый БД-словарь типов (например, supplier_role_kind, supplier_relationship_kind). Каждая запись имеет code + display_name + semantic_handler (известная коду семантика). См. ADR-0016.
Semantic Handler
Машинное значение в Kind Dictionary, определяющее, как код обрабатывает данный kind. Известные значения для supplier_role_kind: MANUFACTURER, WAREHOUSE_OPERATOR, API_PROVIDER, SALES_AGENT, DISTRIBUTOR, AGGREGATOR, LOGISTICS, GENERIC. Для supplier_relationship_kind: AGGREGATES, RESELLS, IS_AGENT_OF, USES_API_OF, USES_WAREHOUSE_OF, SUBSIDIARY_OF, EXCLUSIVE_FOR, GENERIC.
Raw Supplier Payload
Сырой ответ от API поставщика, сохраняемый иммутабельно в объектном хранилище. Основа для replay парсинга и для аудита.
Supplier Offers и наблюдения
Supplier Offer
Нормализованное предложение конкретного поставщика — товарная канва (характеристики, mpn, lifecycle, медиа, упаковка). НЕ содержит цены и остатки — те живут в Supplier Offer Observation, привязанной к конкретной Supplier Credential. Связано с Canonical Product через матчинг с определённой степенью уверенности (Match Confidence).
Supplier Offer Observation
Наблюдение цены, остатков и условий по конкретной паре (SupplierOffer, SupplierCredential). Append-only: каждый fetch создаёт новое observation. Текущее = самое свежее.
Match Confidence
Уровень уверенности в привязке offer к canonical: exact / strong / probable / weak / unmatched. Влияет на то, может ли offer автоматически попасть в смету.
Orphan Offer / Orphan Pool
Supplier Offer, не привязанный ни к одному Canonical Product (нет матча достаточной уверенности). Хранится в orphan pool — очереди на классификацию (AI или ручная модерация) и/или на создание нового canonical. Не участвует в результатах поиска до резолюции.
Rematching
Повторный матчинг существующих offers против canonical-каталога, инициированный изменением Identity Profile, появлением нового canonical, или новой версии характеристик. Не идемпотентен по времени: вчерашний probable сегодня может стать exact.
Matching Engine
Подсистема, привязывающая supplier offer к canonical product. Работает в трёх режимах: детерминированный, эвристический, ML/LLM.
Normalization
Приведение сырых данных поставщика к внутреннему формату: парсинг единиц, маппинг атрибутов, нормализация производителя.
Connector
Модуль, реализующий интерфейс connector.Connector ядра и обеспечивающий получение данных от конкретного поставщика. Плагин к ядру. См. 30-services/ingestion/connectors/AGENTS.md.
Ingestion
Процесс получения данных от поставщика: fetch → raw storage → parse → normalize → emit event.
Enrichment
Процесс обогащения canonical product дополнительными данными (характеристики из описаний через LLM, медиа, сертификаты) с отметкой источника.
EnrichmentJob
Унифицированный async job к поставщику: discovery, refresh_observation, refresh_characteristics, rebuild_supply_chain, full_catalog, etc. Дедуплицируются и троттлятся.
Async Supplier Job
Длительная задача у поставщика (генерация отчёта, выгрузка прайса). У нас — отдельная сущность с polling’ом.
Поставщики (сеть)
Supplier (network node)
Узел графа поставщиков. Имеет kind, массив roles[] (api_provider, warehouse_operator, sales_agent, manufacturer, distributor, aggregator, logistics), trust_level, опциональный api_endpoint и connector_ref.
SupplierRole
Одна из ролей supplier’а. Например, ETM имеет роли api_provider, sales_agent, distributor, warehouse_operator одновременно.
SupplierRelationship
Направленное ребро графа поставщиков. kind: aggregates, resells, is_agent_of, uses_api_of, uses_warehouse_of, subsidiary_of, exclusive_for. Может быть declared, observed (из payload поставщика), или inferred (ML/heuristics).
SupplyChainTrace
Вычисленная snapshot цепочки supply chain для конкретного offer / observation: observed_via, api_provider, sales_agent, distributor, warehouse_operators, manufacturer, chain_depth.
Trust Level
Атрибут supplier: origin (производитель напрямую) > tier_1 (официальный дистрибьютор) > tier_2 (агрегатор / переторговщик) > unverified. Фиксированный enum (расширение через ADR). Влияет на conflict resolution и приоритет в ML.
Credentials
Supplier Credential
Учётная запись доступа к API поставщика. Имеет Credential Scope (system или customer), Auth Schema (формат: login_password, api_key, oauth2, bearer_token, custom). Секретные поля шифруются app-level encryption. Связана с Customer для customer-scope.
Credential Scope
system — наша системная учётка у поставщика (для catalog discovery, B2C, fallback в pricing).
customer — учётка клиента, переданная клиентом для работы от его имени.
Auth Schema
Формат авторизации credential. Расширяемый. Стартовый набор: login_password, api_key, oauth2, bearer_token, custom.
Credential Fingerprint
Стабильный hash от стабильных полей auth_payload для конкретной auth_schema. Используется для дедупликации.
Supplier Credential Group
Группа credentials с одинаковым fingerprint (= одна учётка у поставщика, используемая разными клиентами). Опрашивается через primary credential один раз; observations доступны всем members.
Credential Routing
Стратегия выбора credential для конкретного типа запроса. Pricing для customer X → его credential или group → fallback на системную; catalog discovery → round-robin по всем active credentials.
Pricing и сметы
Price Rule
Функция, преобразующая базовую цену в финальную с учётом контекста (количество, тип клиента, регион, специальные соглашения). Логистическая стоимость — тоже price rule особого типа.
Pricing Mode
Режим ценообразования offer: fixed (цена известна) или on_request (индивидуальная цена по запросу). Не путать с Customer Pricing Group — это разные концепции.
Customer Pricing Group
Группа клиентов, объединённая общими Price Rules: b2c_retail, b2b_standard, b2b_contract_<id>, partner_<name>_tier_<n>. Один customer — одна базовая customer_pricing_group + опциональные временные промо-группы. Не путать с Pricing Mode (атрибут offer).
Custom Pricing Handler
Plugin-расширение для Pricing engine. Применяет ценовые правила, когда API поставщика их не возвращает (например, договорная скидка офлайн). Регистрируется через HandlerRegistration с trigger_condition. Выполняется в sandbox с SLA 50 мс. См. 10-business/contexts/pricing.md.
Pricing Adjustment
Возврат от Custom Pricing Handler — список дополнительных Price Rules для применения в общей цепочке.
Estimate / Смета
Документ-запрос клиента на набор позиций с количествами. Мета-поиск превращает грязный estimate в оптимизированный с привязанными supplier offer’ами.
Estimate Version
Иммутабельная версия Estimate. Любое изменение пользователем создаёт новую версию; старые сохраняются для аудита и replay.
Customer Type
individual (физлицо, B2C) или legal_entity (юрлицо, B2B). Определяет применение price rules и UX.
ILP / MIP Optimizer
Optimization solver на базе Integer Linear Programming (Mixed Integer Programming) для сборки оптимальной сметы при размере ≤ N позиций (стартовое значение N=200, конфигурируемо). Для бóльших смет используется greedy-эвристика. См. 10-business/scenarios/estimate-end-to-end.md.
Модерация и AI
Moderation Queue
Очередь кейсов для AI-агентов Moderation BC (не для людей). Содержит: probable/weak match, orphans, inferred SupplierRelationships, AI-extracted critical attributes, price rule overlaps, credential group candidates, ИНН-edge cases, manufacturer alias proposals. Реализуется через топик moderation.events.v1 + автоматический pipeline (gather → LLM → validate → emit ProposedAction). Человек подключается только при escalation. См. 10-business/contexts/moderation.md.
Moderation Case
Кейс модерации с lifecycle queued → analyzing → decided → applied / escalated. Атомарная единица работы AI-агента.
Case Kind
Категория Moderation Case — определяет AgentRunner, prompt template, evidence query, output schema, threshold. Стартовый набор: match_review, orphan_resolution, inferred_relationship_review, enrichment_critical_attr_review, priority_overlap_review, credential_group_candidate, legal_info_verification_edge, manufacturer_alias_proposal, identity_profile_proposal.
Agent Runner
Конфигурация AI-агента per Case Kind: model_ref, prompt template, tools (function calling), evidence query, JSON output schema, confidence threshold, SLA latency, escalation policy. Версионируется; изменения требуют pre-prod evaluation на 200 ранее resolved кейсов.
Agent Decision
Возврат AI-агента: (verdict, confidence ∈ [0,1], reasoning, citations[], proposed_action). Output принудительно валидируется JSON schema перед применением.
Proposed Action
VO команды для source BC, опубликованной Moderation BC. Source BC consumer применяет через ApplyModerationDecision и подтверждает DecisionApplied{case_id} ack-loop.
Case Escalation
Переход кейса на человека. Триггеры: confidence < threshold, повторные AgentRunFailed, circuit breaker сработал, case.kind ∈ security_critical (для последних — всегда human, AI только анализатор).
LLM Sandbox
Изолированная среда запуска модерационного LLM-вызова: temperature=0, timeout 30 сек, no network outside whitelisted RAG, no creds, redact PII в logs/responses. Гарантирует детерминизм и privacy.
Data Visibility
Data Visibility Policy
Правило управления видимостью данных. Содержит subject (кому), target_kind (что фильтруется), effect (allow / deny / transform), predicate (DSL). Применяется во всех точках выдачи данных. См. ADR-0012.
Visibility Predicate DSL
Язык описания условий применимости policy. Поддерживает логические операторы (and/or/not), сравнения (eq/in/between/…), специальные операции (matches_tag, characteristic_eq, …).
Visibility Transform
Тип effect, не отбрасывающий запись, а изменяющий её: redact_field, price_to_range, hide_warehouse, round_value, и т.д.
Архитектурные принципы
No-proxy architecture
Архитектурный принцип: мы не транзитный шлюз к поставщикам. Клиентские запросы получают данные только из нашего хранилища. Все запросы к поставщикам — в фоновых задачах (scheduled / async on-demand). Клиентский ответ никогда не блокируется ожиданием поставщика. См. ADR-0011 + ADR-0014.
Graceful degradation
Принцип ответа на основе имеющихся данных: при отсутствии — “не найдено” + async DiscoveryJob; при stale — возвращаем с пометкой + async RefreshJob; при partial — возвращаем что есть с пометкой “incomplete”. SLA на ответ и SLA на свежесть — независимые.
Multi-protocol API
Архитектурное решение: внешний API экспонируется тремя протоколами (REST, gRPC, WebSocket) поверх общего ядра use cases. См. ADR-0015.
Subscription Channel
В WebSocket API — типизированный канал подписки клиента (entity_changes, price_updates, stock_updates, estimate_updates, enrichment_job, discovery_results).
Cache + Actualize + Watch
Унифицированный паттерн API: read cache (текущее состояние из хранилища) + trigger refresh (создание EnrichmentJob) + watch updates (подписка на изменения). Доступен на всех трёх протоколах.
DDD-паттерны
Bounded Context
Граница согласованности модели: внутри — единый язык, снаружи — другой. Tracium разложен на 12 BC; см. 10-business/domain-model.md.
Context Map
Карта отношений между Bounded Contexts: какие из них взаимодействуют и через какие DDD-паттерны (ACL, PL, OHS, SK, Conformist, Customer/Supplier).
Anti-Corruption Layer (ACL)
DDD-паттерн: контекст изолирует свою модель от внешней «грязной» модели через слой перевода. В Tracium Matching — ACL между Offers и Catalog.
Published Language (PL)
DDD-паттерн: контекст публикует стабильную схему интеграционных событий, на которые подписываются другие BC. Все Kafka-топики Tracium — PL.
Open Host Service (OHS)
DDD-паттерн: контекст предоставляет стабильный API нескольким потребителям (например, Credentials → Ingestion + Pricing через CredentialContext).
Shared Kernel (SK)
DDD-паттерн: маленький общий kernel из VO, разделяемый между BC (SupplyChainTrace, SessionContext, Money, CredentialContext). Изменение требует RFC.
Domain Event
Факт, произошедший в прошлом (past tense). Внутри BC — для согласования агрегатов; через границу BC — Integration Event.
Integration Event
Доменное событие, опубликованное в Kafka для подписки другими BC. Контракт описан в ../20-architecture/schemas/events/.
Event Storming
Метод моделирования: визуально раскладывает домен через события (orange), команды (blue), агрегаты (yellow), policies (pink), read models (green), actors (brown). Используется в domain-model.md (Big Picture).
Shared Kernel VOs
Session Context
Shared Kernel VO, передаваемый Customer’ом во все downstream BC после login: (customer_id, customer_type, pricing_group, roles, session_id). Используется как Subject в Visibility, как ключ в Pricing cache.
Credential Context
Shared Kernel VO, выдаваемый Credentials BC для опроса API: (credential_id, scope, customer_id?, secret_ref, rate_limit_bucket, warehouse_scope). Connector работает только с этим VO, не с самим SupplierCredential aggregate.
Инфраструктурные паттерны
Event Sourcing
Паттерн хранения состояния агрегата как последовательности иммутабельных событий. Применяется для canonical product и manufacturer dictionary. Не применяется для цен/остатков.
Snapshot
Сохранённое состояние агрегата на определённой версии, используется для ускоренного восстановления без проигрывания всех событий.
Outbox Pattern
Паттерн, обеспечивающий транзакционную публикацию событий: запись события в таблицу outbox в той же транзакции, что и изменение состояния; отдельный процесс публикует события из outbox в Kafka.
Rate Budget
Политика ограничения частоты запросов к внешнему поставщику, конфигурируемая per-connector. Реализуется через Redis token bucket.
Blue-Green Index
Паттерн для Elasticsearch: два индекса (_v7, _v8), alias переключается на новый после завершения реиндексации.