Сохранять документы с неполными значениями справочников #32
@@ -2,6 +2,10 @@
|
|||||||
|
|
||||||
## Не выпущено
|
## Не выпущено
|
||||||
|
|
||||||
|
- Backend обновлён до `0.9.1`: все статусы из нормализованного корпуса доступны
|
||||||
|
как отдельные фильтры, варианты конституционного закона и указа сопоставляются
|
||||||
|
с подтверждённой юридической силой, неизвестные типы документов сохраняются
|
||||||
|
под общим фильтром без вывода юридической силы.
|
||||||
- Уточнено, что внутренняя лаборатория оценивает выдачу собственного OpenSearch;
|
- Уточнено, что внутренняя лаборатория оценивает выдачу собственного OpenSearch;
|
||||||
ЦБД Минюста служит источником для подтверждения документов, а прежние Excel/PDF
|
ЦБД Минюста служит источником для подтверждения документов, а прежние Excel/PDF
|
||||||
бланки удалены.
|
бланки удалены.
|
||||||
|
|||||||
@@ -10,7 +10,8 @@ Telegram-бот — только часть рабочего окружения
|
|||||||
## Текущее состояние
|
## Текущее состояние
|
||||||
|
|
||||||
Сейчас реализованы Telegram-бот-секретарь версии `0.2.2` и backend версии
|
Сейчас реализованы Telegram-бот-секретарь версии `0.2.2` и backend версии
|
||||||
`0.9.0`: добавлена фильтрация поиска по юридической силе.
|
`0.9.1`: добавлены фильтры по юридической силе и статусу, каталог сохраняет
|
||||||
|
документы с неучтёнными исходными типами.
|
||||||
|
|
||||||
| Компонент | Версия | Состояние |
|
| Компонент | Версия | Состояние |
|
||||||
|---|---:|---|
|
|---|---:|---|
|
||||||
|
|||||||
@@ -19,6 +19,12 @@ LEGAL_FORCE_BY_DOCUMENT_TYPE = {
|
|||||||
"resolution": "subordinate",
|
"resolution": "subordinate",
|
||||||
}
|
}
|
||||||
CATALOGS = {"document_type": DOCUMENT_TYPES, "status": STATUSES, "authority": AUTHORITIES, "legal_force": LEGAL_FORCE_LEVELS}
|
CATALOGS = {"document_type": DOCUMENT_TYPES, "status": STATUSES, "authority": AUTHORITIES, "legal_force": LEGAL_FORCE_LEVELS}
|
||||||
|
DOCUMENT_TYPE_ALIASES = {
|
||||||
|
("Положение", "Положение"): "provision",
|
||||||
|
("Конституционный закон", "Конституционный закон"): "constitutional_law",
|
||||||
|
("Указ", "Жарлыгы"): "decree",
|
||||||
|
("устав", None): "charter",
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
def labels(category: str, code: str) -> dict[str, str]:
|
def labels(category: str, code: str) -> dict[str, str]:
|
||||||
@@ -33,8 +39,10 @@ def source_code(category: str, value: dict | None) -> str:
|
|||||||
pair = ((value or {}).get("ru"), (value or {}).get("ky"))
|
pair = ((value or {}).get("ru"), (value or {}).get("ky"))
|
||||||
if pair == (None, None):
|
if pair == (None, None):
|
||||||
return "unspecified"
|
return "unspecified"
|
||||||
|
if category == "document_type" and pair in DOCUMENT_TYPE_ALIASES:
|
||||||
|
return DOCUMENT_TYPE_ALIASES[pair]
|
||||||
for code, expected in CATALOGS[category].items():
|
for code, expected in CATALOGS[category].items():
|
||||||
if pair == expected or category == "document_type" and code == "provision" and pair == ("Положение", "Положение"):
|
if pair == expected:
|
||||||
return code
|
return code
|
||||||
# ponytail: uncurated source types share one filter; add reviewed codes when separate filtering is needed.
|
# ponytail: uncurated source types share one filter; add reviewed codes when separate filtering is needed.
|
||||||
if category == "document_type":
|
if category == "document_type":
|
||||||
|
|||||||
@@ -21,6 +21,9 @@ class MinjustOpenSearchTest(unittest.TestCase):
|
|||||||
self.assertEqual(labels("document_type", "other"), {"ru": "Прочие документы", "ky": "Башка документтер"})
|
self.assertEqual(labels("document_type", "other"), {"ru": "Прочие документы", "ky": "Башка документтер"})
|
||||||
self.assertIsNone(legal_force_code(value))
|
self.assertIsNone(legal_force_code(value))
|
||||||
self.assertEqual(source_code("status", {"ru": "Не вступил в силу", "ky": "Күчүнө кире элек"}), "not_yet_effective")
|
self.assertEqual(source_code("status", {"ru": "Не вступил в силу", "ky": "Күчүнө кире элек"}), "not_yet_effective")
|
||||||
|
self.assertEqual(legal_force_code({"ru": "Конституционный закон", "ky": "Конституционный закон"}), "constitutional")
|
||||||
|
self.assertEqual(legal_force_code({"ru": "Указ", "ky": "Жарлыгы"}), "subordinate")
|
||||||
|
self.assertEqual(source_code("document_type", {"ru": "устав"}), "charter")
|
||||||
|
|
||||||
def test_switches_alias_atomically_after_successful_load(self):
|
def test_switches_alias_atomically_after_successful_load(self):
|
||||||
with patch("search.minjust_opensearch.request_json", return_value={"acknowledged": True}) as request:
|
with patch("search.minjust_opensearch.request_json", return_value={"acknowledged": True}) as request:
|
||||||
|
|||||||
Reference in New Issue
Block a user