Политика видимости

NOTE

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

Этот README описывает целевую сервисную границу visibility. Читайте его, когда нужно понять, где принимаются решения о доступности данных для разных субъектов и как эти решения применяются в выдаче.

Назначение

Подсистема управления видимостью данных: хранение, компиляция и применение DataVisibilityPolicy ко всем точкам выдачи.

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

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

Входит:

  • CRUD для DataVisibilityPolicy.
  • Компиляция policies в исполнимое представление.
  • Кэш per subject.
  • Evaluation (subject, target_kind, candidates[]).
  • Трансляция policy в ES filter там, где это возможно.

Не входит:

  • Сами данные каталога, observations и цен.
  • Управление субъектами и auth context.

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

Вход

  • HTTP (admin): /v1/admin/visibility-policies.
  • RPC / library: Filter(subject, target_kind, candidates).

Выход

  • События visibility.policy.events.v1 для аудита и инвалидации кэша.

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

В целевом состоянии это policy engine с compiler/evaluator/cache слоями. Он должен одинаково работать как для pre-filter в поиске, так и для post-filter/response shaping в других сервисах.

Зависимости

  • PostgreSQL.
  • Kafka.
  • Redis.

Хранилище

  • data_visibility_policy
  • event_store
  • policy_evaluation_audit как опциональный debug/audit слой

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

Env varDefaultОписание
VISIBILITY_DEFAULT_EFFECTallowdefault effect
VISIBILITY_CACHE_TTL5mTTL кэша
VISIBILITY_AUDIT_SAMPLING_RATE0.01sampling audit

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

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

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

  • Нужны unit-тесты policy compiler и evaluator.
  • Нужны integration-тесты на Redis cache и ES translation.
  • Нужны regression fixtures на сложные policy-combination кейсы.

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

В целевом состоянии нужны метрики:

  • visibility_evaluations_total{target_kind}
  • visibility_evaluation_duration_seconds{target_kind}
  • visibility_cache_hits_total
  • visibility_filtered_total{effect}

Сейчас отдельной observability-поверхности нет.

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

  • Определить стартовый набор policy presets.
  • Добавить UI-симулятор для admin flow.
  • Измерить performance на горячем пути.

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