Мета-поиск
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 var | Default | Описание |
|---|---|---|
ESTIMATE_HTTP_PORT | 8080 | HTTP-порт |
ESTIMATE_OPTIMIZATION_TIMEOUT | 5s | ограничение на оптимизацию |
Локальный запуск
Выделенного процесса meta-search в текущем репозитории нет.
Тестирование
- Нужны unit-тесты разборщика и оптимизатора.
- Нужны integration-тесты orchestration-потока на фикстурах смет.
- Для грязных входных данных нужны regression наборы.
Наблюдаемость
В целевом состоянии нужны метрики времени сборки сметы, доли частичных результатов, числа discovery jobs и времени оптимизации. Сейчас отдельной observability-поверхности нет.
Открытые вопросы / TODO
- Выбрать финальный оптимизационный алгоритм по классам задач.
- Определить стратегию дедупликации refresh/discovery jobs.