Мета-поиск

NOTE

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

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

Назначение

Оркестрация подбора сметы: парсинг входного списка позиций, поиск кандидатов, расчёт цен и оптимизация результирующего набора.

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

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

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

Входит:

  • Загрузка сметы из CSV/XLSX/text.
  • Парсинг грязных позиций.
  • Координация search и pricing по каждой строке.
  • Оптимизация итогового набора и версия сметы.
  • Возврат частичных результатов с явной маркировкой stale/incomplete.

Не входит:

  • Реализация поискового движка.
  • Собственно pricing engine.
  • Низкоуровневое хранение supplier observations.

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

Вход

  • HTTP: POST /v1/estimates, POST /v1/estimates/{id}/optimize и связанные read endpoints.

Выход

  • Вызовы в search, pricing, enrichment.
  • События estimate.events.v1.
  • Постановка discovery/refresh jobs в целевом состоянии.

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

В целевом состоянии meta-search — orchestration-модуль без собственной тяжёлой доменной модели каталога. Его задача — собирать результат из уже существующих внутренних сервисов и аккуратно работать с частичной доступностью данных.

Зависимости

  • Search.
  • Pricing.
  • Enrichment.
  • PostgreSQL для смет и версий.

Хранилище

  • estimate, estimate_line, estimate_version.

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

Env varDefaultОписание
ESTIMATE_HTTP_PORT8080HTTP-порт
ESTIMATE_OPTIMIZATION_TIMEOUT5sограничение на оптимизацию

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

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

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

  • Нужны unit-тесты разборщика и оптимизатора.
  • Нужны integration-тесты orchestration-потока на фикстурах смет.
  • Для грязных входных данных нужны regression наборы.

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

В целевом состоянии нужны метрики времени сборки сметы, доли частичных результатов, числа discovery jobs и времени оптимизации. Сейчас отдельной observability-поверхности нет.

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

  • Выбрать финальный оптимизационный алгоритм по классам задач.
  • Определить стратегию дедупликации refresh/discovery jobs.

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