From 6a187760dbdd762923372d95884aa8ffa5203b80 Mon Sep 17 00:00:00 2001 From: Codex Agent Date: Wed, 16 Sep 2026 06:54:37 +0300 Subject: [PATCH] fix: restore local search review flow --- CHANGELOG.md | 3 +++ README.md | 6 +++--- backend/README.md | 4 ++-- backend/ingestion/minjust_cbd.py | 2 +- backend/normalization/minjust_cbd.py | 2 +- backend/search/minjust_opensearch.py | 2 +- backend/search/review.html | 17 ++++++++--------- backend/test_search_reviews.py | 1 + docs/README.md | 2 +- docs/operations/project-status.md | 4 ++-- 10 files changed, 23 insertions(+), 20 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 47b6238..cabdf8a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,9 @@ ## Не выпущено +- Backend обновлён до `0.9.3`: исправлен локальный индекс production Search API, + ошибки поиска показываются в общем status-блоке, а панель сохранения и footer + выстроены в обычном порядке документа. - Backend обновлён до `0.9.2`: внутренняя лаборатория получила визуальный polish-проход и короткий повторно запускаемый tutorial для новых проверяющих. - Backend обновлён до `0.9.1`: все статусы из нормализованного корпуса доступны diff --git a/README.md b/README.md index 6e05456..4d3a518 100644 --- a/README.md +++ b/README.md @@ -10,13 +10,13 @@ Telegram-бот — только часть рабочего окружения ## Текущее состояние Сейчас реализованы Telegram-бот-секретарь версии `0.2.2` и backend версии -`0.9.2`: внутренняя лаборатория получила tutorial для новых проверяющих, а +`0.9.3`: внутренняя лаборатория получила tutorial для новых проверяющих, а каталог сохраняет документы с неучтёнными исходными типами. | Компонент | Версия | Состояние | |---|---:|---| | Telegram-бот | `0.2.2` | на Synology работает `0.2.1`; обновление после слияния | -| Backend | `0.9.2` | внутренняя лаборатория получила tutorial; фильтры поиска по юридической силе и статусу документа | +| Backend | `0.9.3` | внутренняя лаборатория получила tutorial; фильтры поиска по юридической силе и статусу документа | | Frontend | — | ещё не создан | | Сбор и обработка правовых данных | `0.8.0` | добавлены relevance set и оценка выдачи | | RAG и база знаний | — | ещё не созданы | @@ -59,4 +59,4 @@ python3 -m unittest discover -s tools/telegram-bot -v --- -Акылдаш · Telegram-бот v0.2.2 · Backend v0.9.2 · Frontend — не создан +Акылдаш · Telegram-бот v0.2.2 · Backend v0.9.3 · Frontend — не создан diff --git a/backend/README.md b/backend/README.md index 2970529..80a3617 100644 --- a/backend/README.md +++ b/backend/README.md @@ -1,6 +1,6 @@ # Backend Акылдаш -Версия: `0.9.2` +Версия: `0.9.3` Первая backend-область проекта — загрузка правовых документов из официального Open Data API ЦБД Минюста Кыргызской Республики. Код расположен в @@ -240,4 +240,4 @@ PYTHONPATH=backend python3 -m search.query "ЖЧК ачуу тартиби" --la --- -Акылдаш · Backend v0.9.2 · Frontend — не создан +Акылдаш · Backend v0.9.3 · Frontend — не создан diff --git a/backend/ingestion/minjust_cbd.py b/backend/ingestion/minjust_cbd.py index b3b14b5..bfbe5bd 100644 --- a/backend/ingestion/minjust_cbd.py +++ b/backend/ingestion/minjust_cbd.py @@ -21,7 +21,7 @@ from datetime import datetime, timezone from pathlib import Path from typing import Callable, Iterable -APP_VERSION = "0.9.2" +APP_VERSION = "0.9.3" API_BASE_URL = "https://cbd.minjust.gov.kg/api/v1/OpenData/" LANGUAGES = {"Rus": "ru", "Kyr": "ky"} IMAGE_LANGUAGES = {"Russian": "ru", "Kyrgyz": "ky"} diff --git a/backend/normalization/minjust_cbd.py b/backend/normalization/minjust_cbd.py index ea08ba4..13dec26 100644 --- a/backend/normalization/minjust_cbd.py +++ b/backend/normalization/minjust_cbd.py @@ -23,7 +23,7 @@ from pathlib import Path from typing import Callable from urllib.parse import urlsplit -APP_VERSION = "0.9.2" +APP_VERSION = "0.9.3" SCHEMA_VERSION = "1" NORMALIZER_VERSION = "1.0.0" LANGUAGES = ("ru", "ky") diff --git a/backend/search/minjust_opensearch.py b/backend/search/minjust_opensearch.py index 11a8825..3de5f16 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.9.2" +APP_VERSION = "0.9.3" 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 f86c834..c6a81f8 100644 --- a/backend/search/review.html +++ b/backend/search/review.html @@ -17,7 +17,7 @@ .review__header-top { display: flex; justify-content: space-between; gap: 1rem; align-items: start; } .review__eyebrow { display: inline-flex; align-items: center; gap: .5rem; color: var(--brand); font-size: .75rem; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; } .review__eyebrow::before { content: ''; width: .55rem; height: .55rem; border-radius: 50%; background: var(--accent); box-shadow: 0 0 0 4px rgb(231 184 75 / .2); } - .review__main { padding-block-end: 6rem; } + .review__main { padding-block-end: 2rem; } .review__search { display: grid; grid-template-columns: minmax(18rem, 1fr) 9rem 9rem auto; align-items: end; gap: .75rem; padding: 1.25rem; background: var(--surface); border: 1px solid var(--line); border-radius: 1rem; box-shadow: 0 1.25rem 3rem rgb(24 42 54 / .08); } .review__field { display: grid; gap: .35rem; min-width: 0; } .review__field span, .review__actions label { color: var(--muted); font-size: .8rem; font-weight: 700; } @@ -61,9 +61,9 @@ .review__document-meta { margin-block-end: 1rem; padding-block-end: 1rem; border-block-end: 1px solid var(--line); color: var(--muted); } .review__document-body { max-width: 75ch; overflow-wrap: anywhere; } .review__document-body img { max-width: 100%; height: auto; } - .review__actions { position: fixed; inset-block-end: 0; inset-inline: 0; display: flex; justify-content: center; gap: .75rem; padding: .75rem max(1rem, env(safe-area-inset-inline-start)) max(.75rem, env(safe-area-inset-bottom)); background: rgb(255 255 255 / .94); border-block-start: 1px solid var(--line); box-shadow: 0 -.75rem 2rem rgb(24 42 54 / .06); backdrop-filter: blur(12px); } - .review__actions-inner { display: flex; align-items: end; gap: .75rem; width: min(1320px, 100%); } - .review__actions label { flex: 1; } + .review__actions { max-width: 1320px; margin: 1.5rem auto 0; padding-inline: clamp(1rem, 3vw, 3rem); } + .review__actions-inner { display: flex; align-items: end; gap: .75rem; padding: 1rem; background: var(--surface); border: 1px solid var(--line); border-radius: 1rem; box-shadow: 0 .75rem 2rem rgb(24 42 54 / .05); } + .review__actions label { display: grid; gap: .35rem; flex: 1; color: var(--muted); font-size: .8rem; font-weight: 700; } .review__actions label:last-of-type { flex: 2; } dialog { max-width: min(56rem, calc(100% - 2rem)); max-height: calc(100% - 2rem); border: 1px solid var(--line); border-radius: 1rem; padding: 1.5rem; box-shadow: 0 2rem 5rem rgb(10 20 30 / .2); } dialog::backdrop { background: rgb(10 20 30 / .5); } @@ -84,7 +84,7 @@ .review__search { grid-template-columns: 1fr 1fr; } .review__search .review__field:first-child { grid-column: 1 / -1; } .review__workspace { grid-template-columns: 1fr; } - .review__main { padding-block-end: 14rem; } + .review__main { padding-block-end: 2rem; } .review__document { display: none; } .review__document--tour-visible { display: block; } .review__search button { grid-column: 1 / -1; } @@ -119,8 +119,7 @@

Документ

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

- - +