From fd6fd6050752407c9f97f1081468701221f398f1 Mon Sep 17 00:00:00 2001 From: DokoGen Date: Mon, 3 Aug 2026 16:59:28 +0400 Subject: [PATCH] =?UTF-8?q?fix:=20=D0=B8=D0=BC=D0=B5=D0=BD=D0=B8=D1=82?= =?UTF-8?q?=D0=B5=D0=BB=D1=8C=D0=BD=D1=8B=D0=B9=20=D0=BF=D0=B0=D0=B4=D0=B5?= =?UTF-8?q?=D0=B6=20=D0=BF=D1=80=D0=B8=20=D0=B2=D0=B5=D0=B1-=D1=81=D0=BA?= =?UTF-8?q?=D0=BB=D0=BE=D0=BD=D0=B5=D0=BD=D0=B8=D0=B8=20(=D0=9C=D0=BE?= =?UTF-8?q?=D1=80=D1=84=D0=B5=D1=80/=D0=98=D0=98)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Морфер и ИИ не всегда возвращают именительный падеж (он равен исходному слову) — теперь подставляем его сами - табло результатов склонения показывает ВСЕ 6 падежей, включая именительный (раньше показывал только Р,Д,В,Т,П) --- dokogen/ui.py | 2 +- dokogen/verify.py | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/dokogen/ui.py b/dokogen/ui.py index e1820a0..2de5dbf 100644 --- a/dokogen/ui.py +++ b/dokogen/ui.py @@ -450,7 +450,7 @@ class DokoGenApp: for key, res in results: label = "Полное название" if key == 'declension' else "Краткое название" lines.append(f"\n{label}:") - for code, name_case in [('Р', 'Родительный'), ('Д', 'Дательный'), ('В', 'Винительный'), + for code, name_case in [('И', 'Именительный'), ('Р', 'Родительный'), ('Д', 'Дательный'), ('В', 'Винительный'), ('Т', 'Творительный'), ('П', 'Предложный')]: if code in res['data']: lines.append(f" {name_case}: {res['data'][code]}") diff --git a/dokogen/verify.py b/dokogen/verify.py index f0b4670..89fe671 100644 --- a/dokogen/verify.py +++ b/dokogen/verify.py @@ -159,6 +159,11 @@ def check_declension_morpher(text): if not decl: return None, "Морфер не смог просклонять (возможно, это не слово/ФИО)" + # Морфер не возвращает именительный падеж (он равен исходному слову) — + # добавляем его сами, иначе поле «Именительный» остаётся пустым + if 'И' not in decl: + decl['И'] = text.strip() + return { 'source': 'Морфер 3.0', 'source_url': 'https://morpher.ru', @@ -298,6 +303,10 @@ def check_declension_ai(text, api_key, model='deepseek-chat', base_url=None): if not decl: return None, "ИИ не смог просклонять" + # Именительный падеж равен исходному слову — подставляем, если ИИ его не вернул + if 'И' not in decl: + decl['И'] = text.strip() + return { 'source': 'ИИ', 'source_url': 'openai-совместимый API',