feat: improve legal search intent and aliases #35
Reference in New Issue
Block a user
Delete Branch "feature/improve-legal-search-relevance"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Изменения
Проверки
python3 -m unittest discover -s backend -v— 30 passed, 1 skipped (OpenSearch integration без AKYLDASH_OPENSEARCH_URL).git diff --check— clean.Свежесть прочих редакций отдельно пока не ранжируется: в индексе есть дата принятия, но нет надёжной даты последнего обновления редакции.
BLOCK —
COMPANY_REGISTRATION_DOCUMENTSwhitelists667and4; this is enforced as a hardtermsfilter on every classified registration query, so all other matching docs are dropped. Verified4resolves in the official Minjust CBD to Law No. 241 “О нормативных правовых актах Кыргызской Республики”, not a company-registration source. The repository’s prior planner used230044970for the registration procedure; verify curated IDs against corpus titles and replace/remove unrelated IDs before approval.Checks:
python3 -m unittest discover -s backend -v— 30 passed, 1 skipped (live OpenSearch integration). DSL structure is syntactically consistent by inspection, but no live OpenSearch request was possible; tests assert the generated shape, not execution. Version0.10.0and changelog updated. No files changed.Уточнение по review finding: код
4в локальном официальном корпусе возвращает действующий «Гражданский кодекс Кыргызской Республики, Часть I»;667— действующий Закон «О хозяйственных товариществах и обществах». Код230044970— действующее Положение о государственной регистрации от 17.04.2026. Проверил метаданные через локальный API.Whitelist применяется только к распознанному высокоточному намерению об открытии/регистрации ОсОО/ЖЧК; обычный поиск остаётся общим. Причина узкого режима — не пропускать документы, в которых форма компании лишь случайно упомянута. В индексе v2 Положения 230044970 пока нет, хотя оно есть в нормализованном корпусе; для его фактического появления потребуется безопасная переиндексация после слияния. Код намерения уже включает его первым anchor.
BLOCK — backend/search/query.py:42: правило
как открыть <форму>срабатывает и накак открыть ОсОО банковский счёт. Затемbuild_search_queryжёстко фильтрует выдачу только на коды 230044970/667/4, поэтому теряются результаты про счёт и coverage становится неверным. Нужна проверка намерения с учётом продолжения запроса (и тест этого случая), либо не применять жёсткий whitelist к совпадениям общего поиска. Остальной scope подтверждён: IDs сверены с метаданными (положение 2026 / закон об обществах / ГК I); 230044970 отсутствует в v2, поэтому появится только после переиндексации. Полный backend suite: 30 passed, 1 skipped (OpenSearch integration).BLOCK — search scope and local index gap
Повторно проверил весь diff от
mainи прежние findings. Банковский сценарийкак открыть ОсОО банковский счёттеперь не активирует registration clauses: RU exclusions срабатывают независимо от порядка слов; KY exclusions длябанк/эсепприсутствуют. Коды сверены по локальному корпусу:230044970— Положение о госрегистрации юрлиц от 17.04.2026,667— закон «О хозяйственных товариществах и обществах»,4— часть I ГК КР.Блокер:
build_search_query()добавляетtermsfilter по этим трём кодам, то есть это whitelist всей выдачи, а не ранжирующий boost. PR body подтверждает, что230044970отсутствует в используемом локальном индексе v2 до переиндексации. Поэтому актуальное Положение недоступно, а выдача ограничена индексированными667и4— любые другие релевантные документы исключаются. Intent clauses уже дают большой score boost; whitelist следует убрать, чтобы документы лишь поднимались выше, но не вытесняли остальную выдачу. Добавить регрессионный тест: registration query должен включать intent boosts, но не фильтровать общий result set по curated IDs.Проверки: 8 относящихся к поиску/API unit tests прошли; OpenSearch интеграционный тест не запускал. Diff также сверил по version/changelog; других блокеров в проверенной области не выявил.
Independent review of PR #35 at head
06c275cagainstmain: checked the full diff and search API/query callers, version + algorithm version, changelog, and tests. Removing the document-code filter keeps curated boosts without excluding other candidates; query/status/current-edition filters remain correctly composed. No correctness, security, scope, convention, complexity, or test-coverage blocker found. Backend suite: 30 passed, 1 OpenSearch integration test skipped becauseAKYLDASH_OPENSEARCH_URLis unset. Operational note (non-blocking): the 2026 registration document (230044970) will not rank until the deployed index contains it/reindex is performed. No blocking findings.