From c2537cf445ab483958b74506838c088168d68f4c Mon Sep 17 00:00:00 2001 From: Codex Agent Date: Wed, 16 Sep 2026 14:07:28 +0300 Subject: [PATCH] fix: rank repealed search results last --- CHANGELOG.md | 2 ++ README.md | 6 +++--- backend/README.md | 4 ++-- backend/search/api.py | 10 ++++++++-- backend/search/minjust_opensearch.py | 2 +- backend/search/review.html | 9 +++------ backend/test_search_api.py | 15 +++++++++++++++ docs/README.md | 2 +- docs/operations/project-status.md | 4 ++-- 9 files changed, 37 insertions(+), 17 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9cadb0a..59f9dbc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ ## Не выпущено +- Backend обновлён до `0.10.2`: действующие документы ранжируются выше, а + утратившие силу — после остальных; из лаборатории удалён пустой блок фрагмента. - Backend обновлён до `0.10.1`: поисковая выдача по регистрации больше не ограничивается только тремя заранее выбранными нормативными актами. - Backend обновлён до `0.10.0`: поисковый API использует общий планировщик diff --git a/README.md b/README.md index 5d1afd7..6be416c 100644 --- a/README.md +++ b/README.md @@ -10,14 +10,14 @@ Telegram-бот — только часть рабочего окружения ## Текущее состояние Сейчас реализованы Telegram-бот-секретарь версии `0.2.2` и backend версии -`0.10.1`. Поиск расширяет аббревиатуры организационно-правовых форм и поднимает +`0.10.2`. Поиск расширяет аббревиатуры организационно-правовых форм и поднимает положение о регистрации 2026 года, закон об обществах и ГК КР для запросов об открытии ОсОО/ЖЧК. | Компонент | Версия | Состояние | |---|---:|---| | Telegram-бот | `0.2.2` | на Synology работает `0.2.1`; обновление после слияния | -| Backend | `0.10.1` | расширение терминов и приоритет действующих актов о регистрации ОсОО/ЖЧК | +| Backend | `0.10.2` | расширение терминов и приоритет действующих актов о регистрации ОсОО/ЖЧК | | Frontend | — | ещё не создан | | Сбор и обработка правовых данных | `0.8.0` | добавлены relevance set и оценка выдачи | | RAG и база знаний | — | ещё не созданы | @@ -60,4 +60,4 @@ python3 -m unittest discover -s tools/telegram-bot -v --- -Акылдаш · Telegram-бот v0.2.2 · Backend v0.10.1 · Frontend — не создан +Акылдаш · Telegram-бот v0.2.2 · Backend v0.10.2 · Frontend — не создан diff --git a/backend/README.md b/backend/README.md index e36a368..b7993c5 100644 --- a/backend/README.md +++ b/backend/README.md @@ -1,6 +1,6 @@ # Backend Акылдаш -Версия: `0.10.1` +Версия: `0.10.2` Первая backend-область проекта — загрузка правовых документов из официального Open Data API ЦБД Минюста Кыргызской Республики. Код расположен в @@ -240,4 +240,4 @@ PYTHONPATH=backend python3 -m search.query "ЖЧК ачуу тартиби" --la --- -Акылдаш · Backend v0.10.1 · Frontend — не создан +Акылдаш · Backend v0.10.2 · Frontend — не создан diff --git a/backend/search/api.py b/backend/search/api.py index 0877ac6..0014984 100644 --- a/backend/search/api.py +++ b/backend/search/api.py @@ -17,7 +17,7 @@ from search.reviews import ReviewSnapshots, ReviewStore API_VERSION = "v1" -SEARCH_ALGORITHM_VERSION = "search-3" +SEARCH_ALGORITHM_VERSION = "search-4" LANGUAGES = {"ru", "ky"} CODE = re.compile(r"^[0-9]+$") MAX_PAGE_SIZE = 100 @@ -144,8 +144,14 @@ class Api: "collapse": {"field": "document_code"}, "highlight": {"fields": {f"text_{language}": {"number_of_fragments": 1}}}, } + body["sort"] = [{"_script": { + "type": "number", + "order": "asc", + "script": {"lang": "painless", "source": "doc['status_code'].size() == 0 ? 1 : (doc['status_code'].value == 'active' ? 0 : (doc['status_code'].value == 'repealed' ? 2 : 1))"}, + }}] if sort == "date": - body["sort"] = [{"date_adopted": "desc"}, {"_score": "desc"}] + body["sort"].append({"date_adopted": "desc"}) + body["sort"].append({"_score": "desc"}) response = self.query_opensearch(body) try: hits = response["hits"]["hits"] diff --git a/backend/search/minjust_opensearch.py b/backend/search/minjust_opensearch.py index 4e231d9..196701f 100644 --- a/backend/search/minjust_opensearch.py +++ b/backend/search/minjust_opensearch.py @@ -17,7 +17,7 @@ from typing import Iterator from search.catalog import authority_codes, legal_force_code, source_code -APP_VERSION = "0.10.1" +APP_VERSION = "0.10.2" LANGUAGES = {"ru", "ky"} DEFAULT_MAPPING = Path(__file__).with_name("minjust-fragments-index.json") diff --git a/backend/search/review.html b/backend/search/review.html index 68a2e21..51254de 100644 --- a/backend/search/review.html +++ b/backend/search/review.html @@ -46,9 +46,7 @@ .review__result-title { display: flex; gap: .65rem; align-items: baseline; width: 100%; text-align: start; font-weight: 800; border: 0; padding: 0; background: none; color: var(--brand-dark); } .review__result-title:hover { background: none; border-color: transparent; color: var(--brand); } .review__rank { flex: 0 0 auto; color: var(--brand); font-variant-numeric: tabular-nums; } - .review__meta, .review__snippet { margin-block: .5rem; color: var(--muted); } - .review__meta { font-size: .8rem; } - .review__snippet { overflow-wrap: anywhere; } + .review__meta { margin-block: .5rem; color: var(--muted); font-size: .8rem; } .review__rating { display: grid; grid-template-columns: repeat(4, 1fr); gap: .4rem; margin-block: 1rem .75rem; padding: 0; border: 0; } .review__rating legend { width: 100%; margin-block-end: .35rem; font-size: .8rem; font-weight: 700; color: var(--muted); grid-column: 1 / -1; } .review__rating label { min-width: 0; padding: .45rem .25rem; border: 1px solid #c5d0d8; border-radius: .5rem; color: var(--muted); text-align: center; font-size: .8rem; cursor: pointer; } @@ -119,7 +117,7 @@

Документ

Короткое знакомство

- +